[ONOS-7318] JSON serializer implementation for value namespace encoding.
Change-Id: Ib3c5a2c88675754118a12694c43b01d9c9216861
diff --git a/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DataNodeJsonVisitor.java b/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DataNodeJsonVisitor.java
index 6f16735..054f3cf 100644
--- a/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DataNodeJsonVisitor.java
+++ b/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DataNodeJsonVisitor.java
@@ -52,6 +52,7 @@
public void enterDataNode(DataNode dataNode,
DataNodeSiblingPositionType siblingType) {
String nodeName = getNodeName(dataNode);
+ String valNamespace = null;
switch (dataNode.type()) {
case SINGLE_INSTANCE_NODE:
jsonBuilder.addNodeTopHalf(nodeName, JsonNodeType.OBJECT);
@@ -65,8 +66,13 @@
break;
case SINGLE_INSTANCE_LEAF_VALUE_NODE:
LeafNode sLeafNode = (LeafNode) dataNode;
+ if (sLeafNode.valueNamespace() != null) {
+ valNamespace = getModuleNameFromNameSpace(
+ jsonSerializerContext, sLeafNode.valueNamespace());
+ }
jsonBuilder.addNodeWithValueTopHalf(nodeName,
- sLeafNode.asString());
+ sLeafNode.asString(),
+ valNamespace);
break;
case MULTI_INSTANCE_LEAF_VALUE_NODE:
if (siblingType == FIRST_INSTANCE ||
@@ -74,7 +80,12 @@
jsonBuilder.addNodeTopHalf(nodeName, JsonNodeType.ARRAY);
}
LeafNode mLeafNode = (LeafNode) dataNode;
- jsonBuilder.addValueToLeafListNode(mLeafNode.asString());
+ if (mLeafNode.valueNamespace() != null) {
+ valNamespace = getModuleNameFromNameSpace(
+ jsonSerializerContext, mLeafNode.valueNamespace());
+ }
+ jsonBuilder.addValueToLeafListNode(mLeafNode.asString(),
+ valNamespace);
break;
default:
break;
diff --git a/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DefaultJsonBuilder.java b/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DefaultJsonBuilder.java
index e240a50..8a02804 100644
--- a/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DefaultJsonBuilder.java
+++ b/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DefaultJsonBuilder.java
@@ -75,13 +75,18 @@
}
@Override
- public void addNodeWithValueTopHalf(String nodeName, String value) {
+ public void addNodeWithValueTopHalf(String nodeName, String value,
+ String valNamespace) {
if (isNullOrEmpty(nodeName)) {
return;
}
appendField(nodeName);
treeString.append(QUOTE);
treeString.append(value);
+ if (valNamespace != null) {
+ treeString.append(COLON);
+ treeString.append(valNamespace);
+ }
treeString.append(QUOTE);
treeString.append(COMMA);
}
@@ -102,13 +107,17 @@
}
@Override
- public void addValueToLeafListNode(String value) {
+ public void addValueToLeafListNode(String value, String valNamespace) {
if (isNullOrEmpty(value)) {
return;
}
treeString.append(QUOTE);
treeString.append(value);
+ if (valNamespace != null) {
+ treeString.append(COLON);
+ treeString.append(valNamespace);
+ }
treeString.append(QUOTE);
treeString.append(COMMA);
}
diff --git a/serializers/json/src/main/java/org/onosproject/yang/serializers/json/JsonBuilder.java b/serializers/json/src/main/java/org/onosproject/yang/serializers/json/JsonBuilder.java
index f50fd60..3405a39 100644
--- a/serializers/json/src/main/java/org/onosproject/yang/serializers/json/JsonBuilder.java
+++ b/serializers/json/src/main/java/org/onosproject/yang/serializers/json/JsonBuilder.java
@@ -45,8 +45,10 @@
*
* @param nodeName name of child to be added
* @param value value of the child node
+ * @param valNamespace value namespace
*/
- void addNodeWithValueTopHalf(String nodeName, String value);
+ void addNodeWithValueTopHalf(String nodeName, String value,
+ String valNamespace);
/**
* Adds a child with list of values to JSON data tree. This method is
@@ -62,8 +64,9 @@
* Adds value to a leaf list node.
*
* @param value value to be added
+ * @param valNamespace value namespace
*/
- void addValueToLeafListNode(String value);
+ void addValueToLeafListNode(String value, String valNamespace);
/**
* Adds the bottom half(a right brace/bracket) of a JSON