@@ -24,7 +24,7 @@ import (
24
24
"strings"
25
25
26
26
jsoniter "github.com/json-iterator/go"
27
- "sigs.k8s.io/structured-merge-diff/v4 /value"
27
+ "sigs.k8s.io/structured-merge-diff/v6 /value"
28
28
)
29
29
30
30
var ErrUnknownPathElementType = errors .New ("unknown path element type" )
54
54
peSepBytes = []byte (peSeparator )
55
55
)
56
56
57
+ // readJSONIter reads a Value from a JSON iterator.
58
+ // DO NOT EXPORT
59
+ // TODO: eliminate this https://github.com/kubernetes-sigs/structured-merge-diff/issues/202
60
+ func readJSONIter (iter * jsoniter.Iterator ) (value.Value , error ) {
61
+ v := iter .Read ()
62
+ if iter .Error != nil && iter .Error != io .EOF {
63
+ return nil , iter .Error
64
+ }
65
+ return value .NewValueInterface (v ), nil
66
+ }
67
+
68
+ // writeJSONStream writes a value into a JSON stream.
69
+ // DO NOT EXPORT
70
+ // TODO: eliminate this https://github.com/kubernetes-sigs/structured-merge-diff/issues/202
71
+ func writeJSONStream (v value.Value , stream * jsoniter.Stream ) {
72
+ stream .WriteVal (v .Unstructured ())
73
+ }
74
+
57
75
// DeserializePathElement parses a serialized path element
58
76
func DeserializePathElement (s string ) (PathElement , error ) {
59
77
b := []byte (s )
@@ -75,7 +93,7 @@ func DeserializePathElement(s string) (PathElement, error) {
75
93
case peValueSepBytes [0 ]:
76
94
iter := readPool .BorrowIterator (b )
77
95
defer readPool .ReturnIterator (iter )
78
- v , err := value . ReadJSONIter (iter )
96
+ v , err := readJSONIter (iter )
79
97
if err != nil {
80
98
return PathElement {}, err
81
99
}
@@ -86,7 +104,7 @@ func DeserializePathElement(s string) (PathElement, error) {
86
104
fields := value.FieldList {}
87
105
88
106
iter .ReadObjectCB (func (iter * jsoniter.Iterator , key string ) bool {
89
- v , err := value . ReadJSONIter (iter )
107
+ v , err := readJSONIter (iter )
90
108
if err != nil {
91
109
iter .Error = err
92
110
return false
@@ -141,14 +159,14 @@ func serializePathElementToWriter(w io.Writer, pe PathElement) error {
141
159
stream .WriteMore ()
142
160
}
143
161
stream .WriteObjectField (field .Name )
144
- value . WriteJSONStream (field .Value , stream )
162
+ writeJSONStream (field .Value , stream )
145
163
}
146
164
stream .WriteObjectEnd ()
147
165
case pe .Value != nil :
148
166
if _ , err := stream .Write (peValueSepBytes ); err != nil {
149
167
return err
150
168
}
151
- value . WriteJSONStream (* pe .Value , stream )
169
+ writeJSONStream (* pe .Value , stream )
152
170
case pe .Index != nil :
153
171
if _ , err := stream .Write (peIndexSepBytes ); err != nil {
154
172
return err
0 commit comments