@@ -10,7 +10,7 @@ import (
1010 "fmt"
1111 "reflect"
1212
13- "github.com/ golang/protobuf/proto"
13+ "google. golang.org /protobuf/proto"
1414
1515 "google.golang.org/appengine"
1616 "google.golang.org/appengine/internal"
@@ -48,6 +48,9 @@ func (e *ErrFieldMismatch) Error() string {
4848func protoToKey (r * pb.Reference ) (k * Key , err error ) {
4949 appID := r .GetApp ()
5050 namespace := r .GetNameSpace ()
51+ if r .Path == nil {
52+ return nil , fmt .Errorf ("path is empty: %w" , ErrInvalidKey )
53+ }
5154 for _ , e := range r .Path .Element {
5255 k = & Key {
5356 kind : e .GetType (),
@@ -74,11 +77,11 @@ func keyToProto(defaultAppID string, k *Key) *pb.Reference {
7477 for i := k ; i != nil ; i = i .parent {
7578 n ++
7679 }
77- e := make ([]* pb.Path_Element , n )
80+ e := make ([]* pb.Path_ElementType , n )
7881 for i := k ; i != nil ; i = i .parent {
7982 n --
80- e [n ] = & pb.Path_Element {
81- Type : & i .kind ,
83+ e [n ] = & pb.Path_ElementType {
84+ Type : i .kind ,
8285 }
8386 // At most one of {Name,Id} should be set.
8487 // Neither will be set for incomplete keys.
@@ -93,7 +96,7 @@ func keyToProto(defaultAppID string, k *Key) *pb.Reference {
9396 namespace = proto .String (k .namespace )
9497 }
9598 return & pb.Reference {
96- App : proto . String ( appID ) ,
99+ App : appID ,
97100 NameSpace : namespace ,
98101 Path : & pb.Path {
99102 Element : e ,
@@ -138,10 +141,10 @@ func multiValid(key []*Key) error {
138141
139142// referenceValueToKey is the same as protoToKey except the input is a
140143// PropertyValue_ReferenceValue instead of a Reference.
141- func referenceValueToKey (r * pb.PropertyValue_ReferenceValue ) (k * Key , err error ) {
144+ func referenceValueToKey (r * pb.PropertyValue_ReferenceValueType ) (k * Key , err error ) {
142145 appID := r .GetApp ()
143146 namespace := r .GetNameSpace ()
144- for _ , e := range r .Pathelement {
147+ for _ , e := range r .PathElement {
145148 k = & Key {
146149 kind : e .GetType (),
147150 stringID : e .GetName (),
@@ -159,20 +162,20 @@ func referenceValueToKey(r *pb.PropertyValue_ReferenceValue) (k *Key, err error)
159162
160163// keyToReferenceValue is the same as keyToProto except the output is a
161164// PropertyValue_ReferenceValue instead of a Reference.
162- func keyToReferenceValue (defaultAppID string , k * Key ) * pb.PropertyValue_ReferenceValue {
165+ func keyToReferenceValue (defaultAppID string , k * Key ) * pb.PropertyValue_ReferenceValueType {
163166 ref := keyToProto (defaultAppID , k )
164- pe := make ([]* pb.PropertyValue_ReferenceValue_PathElement , len (ref .Path .Element ))
167+ pe := make ([]* pb.PropertyValue_ReferenceValueType_PathElementType , len (ref .Path .Element ))
165168 for i , e := range ref .Path .Element {
166- pe [i ] = & pb.PropertyValue_ReferenceValue_PathElement {
169+ pe [i ] = & pb.PropertyValue_ReferenceValueType_PathElementType {
167170 Type : e .Type ,
168171 Id : e .Id ,
169172 Name : e .Name ,
170173 }
171174 }
172- return & pb.PropertyValue_ReferenceValue {
175+ return & pb.PropertyValue_ReferenceValueType {
173176 App : ref .App ,
174177 NameSpace : ref .NameSpace ,
175- Pathelement : pe ,
178+ PathElement : pe ,
176179 }
177180}
178181
0 commit comments