Bug 3039 - PUT augmentNode like last path element
[controller.git] / opendaylight / md-sal / sal-rest-connector / src / main / java / org / opendaylight / controller / sal / rest / impl / JsonNormalizedNodeBodyReader.java
index bacd38720cc1d83196acc652dbe5f0c4cdfc5e92..42024cab08748cadc9abf338f496e055a616722d 100644 (file)
@@ -93,15 +93,18 @@ public class JsonNormalizedNodeBodyReader extends AbstractIdentifierAwareJaxRsPr
             jsonParser.parse(reader);
 
             NormalizedNode<?, ?> result = resultHolder.getResult();
-            List<YangInstanceIdentifier.PathArgument> iiToDataList = new ArrayList<>();
-            InstanceIdentifierContext<SchemaNode> newIIContext;
+            final List<YangInstanceIdentifier.PathArgument> iiToDataList = new ArrayList<>();
+            InstanceIdentifierContext<? extends SchemaNode> newIIContext;
 
-            if (isPost()) {
-                while (result instanceof AugmentationNode || result instanceof ChoiceNode) {
-                    final Object childNode = ((DataContainerNode) result).getValue().iterator().next();
+            while (result instanceof AugmentationNode || result instanceof ChoiceNode) {
+                final Object childNode = ((DataContainerNode) result).getValue().iterator().next();
+                if (isPost()) {
                     iiToDataList.add(result.getIdentifier());
-                    result = (NormalizedNode<?, ?>) childNode;
                 }
+                result = (NormalizedNode<?, ?>) childNode;
+            }
+
+            if (isPost()) {
                 if (result instanceof MapEntryNode) {
                     iiToDataList.add(new YangInstanceIdentifier.NodeIdentifier(result.getNodeType()));
                     iiToDataList.add(result.getIdentifier());
@@ -114,7 +117,7 @@ public class JsonNormalizedNodeBodyReader extends AbstractIdentifierAwareJaxRsPr
                 }
             }
 
-            YangInstanceIdentifier fullIIToData = YangInstanceIdentifier.create(Iterables.concat(
+            final YangInstanceIdentifier fullIIToData = YangInstanceIdentifier.create(Iterables.concat(
                             path.getInstanceIdentifier().getPathArguments(), iiToDataList));
 
             newIIContext = new InstanceIdentifierContext<>(fullIIToData, path.getSchemaNode(), path.getMountPoint(),