| Index: go/src/infra/gae/libs/wrapper/memory/internal/goon/goon.go
|
| diff --git a/go/src/infra/gae/libs/wrapper/memory/internal/goon/goon.go b/go/src/infra/gae/libs/wrapper/memory/internal/goon/goon.go
|
| deleted file mode 100644
|
| index 7ddee8b654848279c1fe63ab0fb706e25173cca8..0000000000000000000000000000000000000000
|
| --- a/go/src/infra/gae/libs/wrapper/memory/internal/goon/goon.go
|
| +++ /dev/null
|
| @@ -1,104 +0,0 @@
|
| -/*
|
| - * Copyright (c) 2012 Matt Jibson <matt.jibson@gmail.com>
|
| - *
|
| - * Permission to use, copy, modify, and distribute this software for any
|
| - * purpose with or without fee is hereby granted, provided that the above
|
| - * copyright notice and this permission notice appear in all copies.
|
| - *
|
| - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
| - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
| - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
| - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
| - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
| - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
| - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
| - */
|
| -
|
| -package goon
|
| -
|
| -import (
|
| - "fmt"
|
| - "reflect"
|
| - "strings"
|
| -
|
| - "appengine/datastore"
|
| -
|
| - "github.com/mjibson/goon"
|
| -)
|
| -
|
| -// SetStructKey assigns a datastore.Key into a goon-style struct.
|
| -// Copied from goon since it's internal and we need to populate the completed
|
| -// key after a Datastore.Put()
|
| -func SetStructKey(src interface{}, key *datastore.Key, knr goon.KindNameResolver) error {
|
| - v := reflect.ValueOf(src)
|
| - t := v.Type()
|
| - k := t.Kind()
|
| -
|
| - if k != reflect.Ptr {
|
| - return fmt.Errorf("goon: Expected pointer to struct, got instead: %v", k)
|
| - }
|
| -
|
| - v = reflect.Indirect(v)
|
| - t = v.Type()
|
| - k = t.Kind()
|
| -
|
| - if k != reflect.Struct {
|
| - return fmt.Errorf(fmt.Sprintf("goon: Expected struct, got instead: %v", k))
|
| - }
|
| -
|
| - idSet := false
|
| - kindSet := false
|
| - parentSet := false
|
| - for i := 0; i < v.NumField(); i++ {
|
| - tf := t.Field(i)
|
| - vf := v.Field(i)
|
| -
|
| - if !vf.CanSet() {
|
| - continue
|
| - }
|
| -
|
| - tag := tf.Tag.Get("goon")
|
| - tagValues := strings.Split(tag, ",")
|
| - if len(tagValues) > 0 {
|
| - tagValue := tagValues[0]
|
| - if tagValue == "id" {
|
| - if idSet {
|
| - return fmt.Errorf("goon: Only one field may be marked id")
|
| - }
|
| -
|
| - switch vf.Kind() {
|
| - case reflect.Int64:
|
| - vf.SetInt(key.IntID())
|
| - idSet = true
|
| - case reflect.String:
|
| - vf.SetString(key.StringID())
|
| - idSet = true
|
| - }
|
| - } else if tagValue == "kind" {
|
| - if kindSet {
|
| - return fmt.Errorf("goon: Only one field may be marked kind")
|
| - }
|
| - if vf.Kind() == reflect.String {
|
| - if (len(tagValues) <= 1 || key.Kind() != tagValues[1]) && knr(src) != key.Kind() {
|
| - vf.Set(reflect.ValueOf(key.Kind()))
|
| - }
|
| - kindSet = true
|
| - }
|
| - } else if tagValue == "parent" {
|
| - if parentSet {
|
| - return fmt.Errorf("goon: Only one field may be marked parent")
|
| - }
|
| - if vf.Type() == reflect.TypeOf(&datastore.Key{}) {
|
| - vf.Set(reflect.ValueOf(key.Parent()))
|
| - parentSet = true
|
| - }
|
| - }
|
| - }
|
| - }
|
| -
|
| - if !idSet {
|
| - return fmt.Errorf("goon: Could not set id field")
|
| - }
|
| -
|
| - return nil
|
| -}
|
|
|