[ONOS-5723][ONOS-5763] Get request is printing only one object +
onos-app-yms YCH includes the Module name when encoding Java to XML
Change-Id: I453b7d879038511d1a184c0043c2659898c29df5
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecYdtListener.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecYdtListener.java
index 98a8ccb..61c2f00 100644
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecYdtListener.java
+++ b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecYdtListener.java
@@ -50,6 +50,11 @@
private YdtExtendedContext rootYdtNode;
/**
+ * Module YDT node.
+ */
+ private YdtExtendedContext currentModule;
+
+ /**
* Creates a new codec listener.
*
* @param format protocol data format
@@ -59,6 +64,7 @@
YdtExtendedContext rootNode) {
dataFormat = format;
rootYdtNode = rootNode;
+ currentModule = ((YdtExtendedContext) rootNode.getFirstChild());
}
/**
@@ -70,10 +76,29 @@
return elementStack;
}
+ /**
+ * Returns true, if YDT node is module node; false otherwise.
+ *
+ * @param ydtContext YDT node
+ * @return true if YDT node is module; false otherwise
+ */
+ private boolean isModuleNode(YdtExtendedContext ydtContext,
+ boolean isExit) {
+ if (Objects.equals(currentModule, ydtContext)) {
+ if (isExit) {
+ currentModule = (YdtExtendedContext) currentModule
+ .getNextSibling();
+ }
+ return true;
+ }
+ return false;
+ }
+
@Override
public void enterYdtNode(YdtExtendedContext ydtContext) {
- if (!Objects.equals(rootYdtNode, ydtContext)) {
+ if (!Objects.equals(rootYdtNode, ydtContext) &&
+ !isModuleNode(ydtContext, false)) {
CodecHandlerFactory factory = CodecHandlerFactory.instance();
XmlCodecHandler handler =
@@ -94,7 +119,8 @@
@Override
public void exitYdtNode(YdtExtendedContext ydtExtendedContext) {
- if (!Objects.equals(rootYdtNode, ydtExtendedContext)) {
+ if (!Objects.equals(rootYdtNode, ydtExtendedContext) &&
+ !isModuleNode(ydtExtendedContext, true)) {
elementStack.pop();
}
}
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java
index 10874f0..4faa58b 100644
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java
+++ b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java
@@ -345,12 +345,30 @@
}
curTraversal = PARENT;
traverseToParent(curNode);
- curNode = curNode.getParent();
+ curNode = getParentSchemaNode(curNode);
}
}
}
/**
+ * Returns parent schema node of current node.
+ *
+ * @param curNode current schema node
+ * @return parent schema node
+ */
+ private YangNode getParentSchemaNode(YangNode curNode) {
+ if (curNode instanceof YangAugment) {
+ /*
+ * If curNode is augment, either next augment or augmented node
+ * has to be processed. So traversal type is changed to parent,
+ * but node is not changed.
+ */
+ return curNode;
+ }
+ return curNode.getParent();
+ }
+
+ /**
* Processes root YANG node and adds it as a child to the YDT
* extended builder which is created earlier.
*/
@@ -372,7 +390,8 @@
* @param curNode current YANG node
*/
private void traverseToParent(YangNode curNode) {
- if (curNode instanceof YangCase || curNode instanceof YangChoice) {
+ if (curNode instanceof YangCase || curNode instanceof YangChoice
+ || curNode instanceof YangAugment) {
return;
}
extBuilder.traverseToParentWithoutValidation();