X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frest%2Fimpl%2FJsonNormalizedNodeBodyReader.java;h=4d8463adae66cb1e53ba06b2014b0bc8702fc4b4;hb=a2704d269a40eb966c5d308173e647d3dfa75003;hp=e11cac2eb3fb0bc2e5a18abc219c239ce1587cad;hpb=cd5b4bd47e1cfc40751ef15f6fcdf33fc131c1f8;p=controller.git diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/JsonNormalizedNodeBodyReader.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/JsonNormalizedNodeBodyReader.java index e11cac2eb3..4d8463adae 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/JsonNormalizedNodeBodyReader.java +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/JsonNormalizedNodeBodyReader.java @@ -27,6 +27,9 @@ import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext; import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException; import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorTag; import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType; +import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; +import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; +import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.MapNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; @@ -84,9 +87,18 @@ public class JsonNormalizedNodeBodyReader extends AbstractIdentifierAwareJaxRsPr final JsonReader reader = new JsonReader(new InputStreamReader(entityStream)); jsonParser.parse(reader); - final NormalizedNode partialResult = resultHolder.getResult(); + NormalizedNode partialResult = resultHolder.getResult(); final NormalizedNode result; - if(partialResult instanceof MapNode) { + + // FIXME: Also II should be updated unwrap result from augmentation and choice nodes on PUT + if (!isPost()) { + while (partialResult instanceof AugmentationNode || partialResult instanceof ChoiceNode) { + final Object childNode = ((DataContainerNode) partialResult).getValue().iterator().next(); + partialResult = (NormalizedNode) childNode; + } + } + + if (partialResult instanceof MapNode && !isPost()) { result = Iterables.getOnlyElement(((MapNode) partialResult).getValue()); } else { result = partialResult;