Skip to content

Commit c14c7d3

Browse files
committed
avoid quoted string at fnresult Field unmarshal
Signed-off-by: tar <gabor.tar.ext@nokia.com>
1 parent 3bc5c6c commit c14c7d3

1 file changed

Lines changed: 26 additions & 14 deletions

File tree

pkg/api/fnresult/v1/types.go

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -164,38 +164,50 @@ var _ json.Unmarshaler = &Field{}
164164
var _ yaml.Unmarshaler = &Field{}
165165

166166
func (in *Field) UnmarshalJSON(data []byte) error {
167-
rnode, err := yaml.Parse(string(data))
167+
rNode, err := yaml.Parse(string(data))
168168
if err != nil {
169169
return fmt.Errorf("error parsing `field`: %v", err)
170170
}
171171

172-
return in.unmarshalRNode(rnode)
172+
return in.unmarshalRNode(rNode)
173173
}
174174

175175
func (in *Field) UnmarshalYAML(value *yaml.Node) error {
176-
rnode := yaml.NewRNode(value)
176+
rNode := yaml.NewRNode(value)
177177

178-
return in.unmarshalRNode(rnode)
178+
return in.unmarshalRNode(rNode)
179179
}
180180

181-
func (in *Field) unmarshalRNode(rnode *yaml.RNode) error {
182-
if path, err := rnode.GetString("path"); err == nil {
181+
func (in *Field) unmarshalRNode(rNode *yaml.RNode) error {
182+
if path, err := rNode.GetString("path"); err == nil {
183183
in.Path = strings.TrimSpace(path)
184184
}
185185

186-
if currentValue, err := rnode.Pipe(yaml.Lookup("currentValue")); err == nil {
187-
in.CurrentValue, err = currentValue.String()
188-
if err != nil {
189-
return fmt.Errorf("error parsing `field.currentValue`: %v", err)
186+
if currentValue, err := rNode.Pipe(yaml.Lookup("currentValue")); err == nil && currentValue.YNode() != nil {
187+
switch currentValue.YNode().Kind {
188+
case yaml.ScalarNode:
189+
in.CurrentValue = currentValue.YNode().Value
190+
default:
191+
in.CurrentValue, err = currentValue.String()
192+
if err != nil {
193+
return fmt.Errorf("error parsing `field.currentValue`: %v", err)
194+
}
190195
}
196+
191197
in.CurrentValue = strings.TrimSpace(in.CurrentValue)
192198
}
193199

194-
if proposedValue, err := rnode.Pipe(yaml.Lookup("proposedValue")); err == nil {
195-
in.ProposedValue, err = proposedValue.String()
196-
if err != nil {
197-
return fmt.Errorf("error parsing `field.proposedValue`: %v", err)
200+
if proposedValue, err := rNode.Pipe(yaml.Lookup("proposedValue")); err == nil && proposedValue.YNode() != nil {
201+
switch proposedValue.YNode().Kind {
202+
case yaml.ScalarNode:
203+
in.ProposedValue = proposedValue.YNode().Value
204+
default:
205+
in.ProposedValue, err = proposedValue.String()
206+
if err != nil {
207+
return fmt.Errorf("error parsing `field.proposedValue`: %v", err)
208+
}
198209
}
210+
199211
in.ProposedValue = strings.TrimSpace(in.ProposedValue)
200212
}
201213

0 commit comments

Comments
 (0)