[ONOS-5764]Decoder is returning Null
Change-Id: I51dabe5a7133df6e5766cb3ed3c36a596936263b
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