Bug 3934: Websockets: Scope ONE doesn't work correctly 61/33761/4
authorMartin Ciglan <mciglan@cisco.com>
Fri, 29 Jan 2016 11:08:36 +0000 (12:08 +0100)
committerMartin Ciglan <mciglan@cisco.com>
Mon, 1 Feb 2016 10:53:55 +0000 (11:53 +0100)
Bug fix for vcmts system manager.

Change-Id: I4b7d934ace1ba60afd166dd62aacdc855cd7a9df
Signed-off-by: Martin Ciglan <mciglan@cisco.com>
opendaylight/restconf/sal-rest-connector/src/main/java/org/opendaylight/netconf/sal/streams/listeners/ListenerAdapter.java

index 9b9b559b9243d9d48d2e774c9955c0e711223d54..ca5802cb18de72ea6abdf9aaa331126024cf650c 100644 (file)
@@ -51,14 +51,16 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
+import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer;
+import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
 import org.opendaylight.yangtools.yang.data.impl.codec.xml.XMLStreamNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlDocumentUtils;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
@@ -388,7 +390,7 @@ public class ListenerAdapter implements DOMDataChangeListener {
         dataChangeEventElement.appendChild(operationElement);
 
         try {
-            final DOMResult domResult = writeNormalizedNode((NormalizedNodeContainer<?,?,?>) entry.getValue(), path,
+            final DOMResult domResult = writeNormalizedNode(entry.getValue(), path,
                     schemaContext, dataSchemaContextTree);
             final Node result = doc.importNode(domResult.getNode().getFirstChild(), true);
             final Element dataElement = doc.createElement("data");
@@ -403,7 +405,7 @@ public class ListenerAdapter implements DOMDataChangeListener {
         return dataChangeEventElement;
     }
 
-    private static DOMResult writeNormalizedNode(final NormalizedNodeContainer<?,?,?> normalized, final
+    private static DOMResult writeNormalizedNode(final NormalizedNode<?,?> normalized, final
         YangInstanceIdentifier path, final SchemaContext context, final DataSchemaContextTree dataSchemaContextTree) throws
             IOException, XMLStreamException {
         final XMLOutputFactory XML_FACTORY = XMLOutputFactory.newFactory();
@@ -412,10 +414,17 @@ public class ListenerAdapter implements DOMDataChangeListener {
         NormalizedNodeWriter normalizedNodeWriter = null;
         NormalizedNodeStreamWriter normalizedNodeStreamWriter = null;
         XMLStreamWriter writer = null;
+        final SchemaPath nodePath;
+
+        if (normalized instanceof MapEntryNode || normalized instanceof UnkeyedListEntryNode) {
+            nodePath = dataSchemaContextTree.getChild(path).getDataSchemaNode().getPath();
+        } else {
+            nodePath = dataSchemaContextTree.getChild(path).getDataSchemaNode().getPath().getParent();
+        }
+
         try {
             writer = XML_FACTORY.createXMLStreamWriter(result);
-            normalizedNodeStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(writer, context, dataSchemaContextTree
-                    .getChild(path).getDataSchemaNode().getPath().getParent());
+            normalizedNodeStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(writer, context, nodePath);
             normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(normalizedNodeStreamWriter);
 
             normalizedNodeWriter.write(normalized);