Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Unified Diff: go/src/infra/gae/libs/wrapper/memory/internal/goon/goon.go

Issue 1222903002: Refactor current GAE abstraction library to be free of the SDK* (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: more fixes Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
-}

Powered by Google App Engine
This is Rietveld 408576698