Merge "Bug 7933: NPE when posting using XML" into stable/carbon
authorTomas Cere <tcere@cisco.com>
Mon, 29 May 2017 10:43:47 +0000 (10:43 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Mon, 29 May 2017 10:43:47 +0000 (10:43 +0000)
1  2 
restconf/sal-rest-connector/src/main/java/org/opendaylight/netconf/sal/rest/impl/XmlNormalizedNodeBodyReader.java
restconf/sal-rest-connector/src/main/java/org/opendaylight/restconf/jersey/providers/XmlNormalizedNodeBodyReader.java

index e074f94837a9aacca9c8846db4f335ac71b963fb,536b4c3b54872423bee21e068d2b848527e6ebd9..6ccb64b8c6ae49a056dc4642e4bb53826b9ef84a
@@@ -146,23 -145,14 +147,22 @@@ public class XmlNormalizedNodeBodyReade
                      iiToDataList.add(new YangInstanceIdentifier.NodeIdentifier(schemaNode.getQName()));
                  }
              }
 +        // PUT
 +        } else if (!isRpc) {
 +            final QName scQName = schemaNode.getQName();
 +            Preconditions.checkState(
 +                    docRootElm.equals(scQName.getLocalName())
 +                            && docRootNamespace.equals(scQName.getNamespace().toASCIIString()),
 +                    String.format("Not correct message root element \"%s\", should be \"%s\"",
 +                            docRootElm, scQName));
          }
  
-         NormalizedNode<?, ?> parsed = null;
+         final NormalizedNode<?, ?> parsed;
          if (schemaNode instanceof ContainerSchemaNode) {
-             parsed = parserFactory.getContainerNodeParser().parse(Collections.singletonList(doc.getDocumentElement()), (ContainerSchemaNode) schemaNode);
-         } else if(schemaNode instanceof ListSchemaNode) {
-             final ListSchemaNode casted = (ListSchemaNode) schemaNode;
-             parsed = parserFactory.getMapEntryNodeParser().parse(elements, casted);
+             parsed = parserFactory.getContainerNodeParser().parse(
+                         Collections.singletonList(doc.getDocumentElement()), (ContainerSchemaNode) schemaNode);
+         } else if (schemaNode instanceof ListSchemaNode) {
+             parsed = parserFactory.getMapEntryNodeParser().parse(elements, (ListSchemaNode) schemaNode);
              if (isPost()) {
                  iiToDataList.add(parsed.getIdentifier());
              }
index 55f2b005a413b2e8c546cf8d1a5a9d736fc893fe,c304cc6a75125ca6d4ee90b82b5c82dc4c59ddb9..98bdc0ea28d94b65520dd787ad78c5f05c4427ab
@@@ -134,24 -133,14 +135,22 @@@ public class XmlNormalizedNodeBodyReade
                      iiToDataList.add(new YangInstanceIdentifier.NodeIdentifier(schemaNode.getQName()));
                  }
              }
 +        // PUT
 +        } else if (!isRpc) {
 +            final QName scQName = schemaNode.getQName();
 +            Preconditions.checkState(
 +                    docRootElm.equals(scQName.getLocalName())
 +                            && docRootNamespace.equals(scQName.getNamespace().toASCIIString()),
 +                    String.format("Not correct message root element \"%s\", should be \"%s\"",
 +                            docRootElm, scQName));
          }
  
-         NormalizedNode<?, ?> parsed = null;
+         final NormalizedNode<?, ?> parsed;
          if (schemaNode instanceof ContainerSchemaNode) {
-             parsed = parserFactory.getContainerNodeParser().parse(Collections.singletonList(doc.getDocumentElement()),
-                 (ContainerSchemaNode) schemaNode);
-         } else if(schemaNode instanceof ListSchemaNode) {
-             final ListSchemaNode casted = (ListSchemaNode) schemaNode;
-             parsed = parserFactory.getMapEntryNodeParser().parse(elements, casted);
+             parsed = parserFactory.getContainerNodeParser().parse(
+                     Collections.singletonList(doc.getDocumentElement()), (ContainerSchemaNode) schemaNode);
+         } else if (schemaNode instanceof ListSchemaNode) {
+             parsed = parserFactory.getMapEntryNodeParser().parse(elements, (ListSchemaNode) schemaNode);
              if (isPost()) {
                  iiToDataList.add(parsed.getIdentifier());
              }