| Index: service/datastore/multiarg.go
|
| diff --git a/service/datastore/multiarg.go b/service/datastore/multiarg.go
|
| index 9250acec811a89efd4e626a7f4aeef5b8eb9e278..9661e6255f2faa43517cbcdf4e72d2ccea961d54 100644
|
| --- a/service/datastore/multiarg.go
|
| +++ b/service/datastore/multiarg.go
|
| @@ -16,7 +16,7 @@ type multiArgType struct {
|
| getPM func(slot reflect.Value) (PropertyMap, error)
|
| getMetaPM func(slot reflect.Value) PropertyMap
|
| setPM func(slot reflect.Value, pm PropertyMap) error
|
| - setKey func(slot reflect.Value, k *Key)
|
| + setKey func(slot reflect.Value, k *Key) bool
|
| newElem func() reflect.Value
|
| }
|
|
|
| @@ -97,8 +97,8 @@ func multiArgTypePLS(et reflect.Type) *multiArgType {
|
| setPM: func(slot reflect.Value, pm PropertyMap) error {
|
| return slot.Interface().(PropertyLoadSaver).Load(pm)
|
| },
|
| - setKey: func(slot reflect.Value, k *Key) {
|
| - PopulateKey(slot.Interface(), k)
|
| + setKey: func(slot reflect.Value, k *Key) bool {
|
| + return PopulateKey(slot.Interface(), k)
|
| },
|
| }
|
| switch et.Kind() {
|
| @@ -155,8 +155,8 @@ func multiArgTypePLSPtr(et reflect.Type) *multiArgType {
|
| setPM: func(slot reflect.Value, pm PropertyMap) error {
|
| return slot.Addr().Interface().(PropertyLoadSaver).Load(pm)
|
| },
|
| - setKey: func(slot reflect.Value, k *Key) {
|
| - PopulateKey(slot.Addr().Interface(), k)
|
| + setKey: func(slot reflect.Value, k *Key) bool {
|
| + return PopulateKey(slot.Addr().Interface(), k)
|
| },
|
| newElem: func() reflect.Value {
|
| return reflect.New(et).Elem()
|
| @@ -183,8 +183,8 @@ func multiArgTypeStruct(et reflect.Type) *multiArgType {
|
| setPM: func(slot reflect.Value, pm PropertyMap) error {
|
| return toPLS(slot).Load(pm)
|
| },
|
| - setKey: func(slot reflect.Value, k *Key) {
|
| - PopulateKey(toPLS(slot), k)
|
| + setKey: func(slot reflect.Value, k *Key) bool {
|
| + return PopulateKey(toPLS(slot), k)
|
| },
|
| newElem: func() reflect.Value {
|
| return reflect.New(et).Elem()
|
| @@ -211,8 +211,8 @@ func multiArgTypeStructPtr(et reflect.Type) *multiArgType {
|
| setPM: func(slot reflect.Value, pm PropertyMap) error {
|
| return toPLS(slot).Load(pm)
|
| },
|
| - setKey: func(slot reflect.Value, k *Key) {
|
| - PopulateKey(toPLS(slot), k)
|
| + setKey: func(slot reflect.Value, k *Key) bool {
|
| + return PopulateKey(toPLS(slot), k)
|
| },
|
| newElem: func() reflect.Value {
|
| return reflect.New(et.Elem())
|
| @@ -235,8 +235,8 @@ func multiArgTypeInterface() *multiArgType {
|
| setPM: func(slot reflect.Value, pm PropertyMap) error {
|
| return mkPLS(slot.Elem().Interface()).Load(pm)
|
| },
|
| - setKey: func(slot reflect.Value, k *Key) {
|
| - PopulateKey(slot.Elem().Interface(), k)
|
| + setKey: func(slot reflect.Value, k *Key) bool {
|
| + return PopulateKey(slot.Elem().Interface(), k)
|
| },
|
| }
|
| }
|
| @@ -249,6 +249,10 @@ func multiArgTypeKeyExtraction() *multiArgType {
|
| getKey: func(aid, ns string, slot reflect.Value) (*Key, error) {
|
| return slot.Interface().(*Key), nil
|
| },
|
| + setKey: func(slot reflect.Value, k *Key) bool {
|
| + slot.Elem().Set(reflect.ValueOf(k).Elem())
|
| + return true
|
| + },
|
| }
|
| }
|
|
|
|
|