[ONOS-5764]Decoder is returning Null

Change-Id: I51dabe5a7133df6e5766cb3ed3c36a596936263b
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/DefaultYangCodecHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/DefaultYangCodecHandler.java
index 3e990be..266b391 100644
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/DefaultYangCodecHandler.java
+++ b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/DefaultYangCodecHandler.java
@@ -205,7 +205,6 @@
         if (ydtBuilder != null) {
             return getObjectList(ydtBuilder.getRootNode());
         }
-
         return null;
     }
 
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodecWalker.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodecWalker.java
index b5a9ea2..11a14ff 100644
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodecWalker.java
+++ b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodecWalker.java
@@ -35,7 +35,10 @@
     public void walk(XmlListener listener, Element element,
                      Element rootElement) {
         try {
-            listener.enterXmlElement(element, getElementType(element),
+            Element newElement = element.createCopy();
+            newElement.remove(element.getNamespace());
+
+            listener.enterXmlElement(element, getElementType(newElement),
                                      rootElement);
 
             if (element.hasContent() && !element.isTextOnly()) {
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecListener.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecListener.java
index 1c6536a..eefc60f 100644
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecListener.java
+++ b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecListener.java
@@ -37,6 +37,8 @@
      */
     private YdtExtendedBuilder ydtExtBuilder;
 
+    private String prevNodeNamespace;
+
     /**
      * Sets the YANG data tree builder object.
      *
@@ -69,21 +71,42 @@
             nameSpace = element.getNamespace().getURI();
         }
 
+        /*
+         * When new module has to be added, and if curnode has reference of
+         * previous module, then we need to traverse back to parent(logical root
+         * node).
+         */
+        if (ydtExtBuilder.getRootNode() == ydtExtBuilder.getCurNode()
+                .getParent() && prevNodeNamespace != null &&
+                !prevNodeNamespace.equals(nameSpace)) {
+            ydtExtBuilder.traverseToParent();
+        }
+
         if (nodeType == OBJECT_NODE && element.content() == null || element
                 .content().isEmpty()) {
             nodeType = TEXT_NODE;
         }
         if (nodeType == OBJECT_NODE) {
             if (ydtExtBuilder != null) {
+                if (ydtExtBuilder.getCurNode() == ydtExtBuilder.getRootNode()) {
+                    ydtExtBuilder.addChild(null, nameSpace, opType);
+                }
                 ydtExtBuilder.addChild(element.getName(), nameSpace, opType);
             }
         } else if (nodeType == TEXT_NODE) {
 
             if (ydtExtBuilder != null) {
+                if (ydtExtBuilder.getCurNode() == ydtExtBuilder.getRootNode()) {
+                    ydtExtBuilder.addChild(null, nameSpace, opType);
+                }
                 ydtExtBuilder.addLeaf(element.getName(), nameSpace,
                                       element.getText());
             }
         }
+
+        if (nameSpace != null) {
+            prevNodeNamespace = nameSpace;
+        }
     }
 
     @Override
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangRequestWorkBench.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangRequestWorkBench.java
index 75e00f2..cd37eea 100644
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangRequestWorkBench.java
+++ b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangRequestWorkBench.java
@@ -317,6 +317,20 @@
         boolean contextSwitch = false;
         YangSchemaNode augmentingSchema = null;
         YangSchemaNodeIdentifier id = getNodeIdentifier(name, namespace);
+        if (name == null) {
+            if (!curNode.equals(rootNode)) {
+                throw new YdtException("Name is null for node other than module");
+            }
+
+            /*
+             * Since XML will not have module name, id.name will be null. In
+             * that case get schema node by using namespace. In NBI flow,
+             * name will never be null.
+             */
+            YangSchemaNode node = registry
+                    .getSchemaWrtNameSpace(id.getNameSpace().getModuleNamespace());
+            id.setName(node.getName());
+        }
 
         try {
             // Module/sub-module node handler.