[ONOS-6783] Data type handling in Data Node
Change-Id: I5d27e169f95e2a5af89a866c1d34281201c73c56
diff --git a/serializers/xml/src/test/java/org/onosproject/yang/serializers/xml/XmlSerializerTest.java b/serializers/xml/src/test/java/org/onosproject/yang/serializers/xml/XmlSerializerTest.java
index 7b557ce..87dcb07 100644
--- a/serializers/xml/src/test/java/org/onosproject/yang/serializers/xml/XmlSerializerTest.java
+++ b/serializers/xml/src/test/java/org/onosproject/yang/serializers/xml/XmlSerializerTest.java
@@ -66,6 +66,201 @@
}
/**
+ * Validates and returns container data node.
+ *
+ * @param parent data node holding container
+ * @param name name of the container
+ * @param namespace namespace of the container
+ * @return container data node
+ */
+ private static DataNode validateContainerDataNode(DataNode parent,
+ String name,
+ String namespace) {
+ Map<NodeKey, DataNode> childNodes = ((InnerNode) parent).childNodes();
+ NodeKey key = NodeKey.builder().schemaId(name, namespace).build();
+ DataNode dataNode = childNodes.get(key);
+ SchemaId schemaId = dataNode.key().schemaId();
+ assertThat(schemaId.name(), is(name));
+ assertThat(schemaId.namespace(), is(namespace));
+ return dataNode;
+ }
+
+ /**
+ * Validates and returns list data node.
+ *
+ * @param parent data node holding list
+ * @param name name of the list
+ * @param namespace namespace of the list
+ * @param keynames list of key leaf names
+ * @param keyNs list of key leaf namespace
+ * @param keyVal list of key leaf values
+ * @return list data node
+ */
+ private static DataNode validateListDataNode(DataNode parent,
+ String name, String namespace,
+ List<String> keynames,
+ List<String> keyNs,
+ List<Object> keyVal) {
+ Map<NodeKey, DataNode> childNodes = ((InnerNode) parent).childNodes();
+ NodeKey key = NodeKey.builder().schemaId(name, namespace).build();
+ DataNode dataNode;
+ if (keynames != null && !keynames.isEmpty()) {
+ ListKey.ListKeyBuilder listKeyBldr = new ListKey.ListKeyBuilder();
+ listKeyBldr.schemaId(key.schemaId());
+ for (int i = 0; i < keynames.size(); i++) {
+ listKeyBldr.addKeyLeaf(keynames.get(i), keyNs.get(i),
+ keyVal.get(i));
+ }
+ dataNode = childNodes.get(listKeyBldr.build());
+ } else {
+ dataNode = childNodes.get(key);
+ }
+ SchemaId schemaId = dataNode.key().schemaId();
+ assertThat(schemaId.name(), is(name));
+ assertThat(schemaId.namespace(), is(namespace));
+ return dataNode;
+ }
+
+ /**
+ * Validates leaf data node.
+ *
+ * @param parent data node holding leaf
+ * @param name name of the leaf
+ * @param namespace namespace of the leaf
+ * @param value leaf value
+ */
+ private static void validateLeafDataNode(DataNode parent,
+ String name, String namespace,
+ Object value) {
+ Map<NodeKey, DataNode> childNodes = ((InnerNode) parent).childNodes();
+ NodeKey key = NodeKey.builder().schemaId(name, namespace).build();
+ LeafNode dataNode = ((LeafNode) childNodes.get(key));
+ SchemaId schemaId = dataNode.key().schemaId();
+ assertThat(schemaId.name(), is(name));
+ assertThat(schemaId.namespace(), is(namespace));
+ if (dataNode.value() != null) {
+ assertThat(dataNode.value().toString(), is(value));
+ }
+ }
+
+ /**
+ * Validates an empty leaf data node.
+ *
+ * @param parent data node holding leaf
+ * @param name name of the leaf
+ * @param namespace namespace of the leaf
+ * @param value leaf value
+ */
+ private static void validateNullLeafDataNode(DataNode parent,
+ String name, String namespace,
+ Object value) {
+ Map<NodeKey, DataNode> childNodes = ((InnerNode) parent).childNodes();
+ NodeKey key = NodeKey.builder().schemaId(name, namespace).build();
+ LeafNode dataNode = ((LeafNode) childNodes.get(key));
+ SchemaId schemaId = dataNode.key().schemaId();
+ assertThat(schemaId.name(), is(name));
+ assertThat(schemaId.namespace(), is(namespace));
+ assertThat(dataNode.value(), is(value));
+ }
+
+ /**
+ * Validates leaf-list data node.
+ *
+ * @param parent data node holding leaf-list
+ * @param name name of the leaf-list
+ * @param namespace namespace of the leaf-list
+ * @param value leaf-list value
+ */
+ private static void validateLeafListDataNode(DataNode parent,
+ String name, String namespace,
+ Object value) {
+ Map<NodeKey, DataNode> childNodes = ((InnerNode) parent).childNodes();
+ NodeKey key = NodeKey.builder().schemaId(name, namespace).build();
+ LeafListKey.LeafListKeyBuilder leafListBldr =
+ new LeafListKey.LeafListKeyBuilder();
+ leafListBldr.schemaId(key.schemaId());
+ leafListBldr.value(value);
+ DataNode leafListNode = childNodes.get(leafListBldr.build());
+ SchemaId schemaId = leafListNode.key().schemaId();
+ assertThat(schemaId.name(), is(name));
+ assertThat(schemaId.namespace(), is(namespace));
+ assertThat(((LeafNode) leafListNode).value().toString(), is(value));
+ }
+
+ /**
+ * Validates root data node.
+ *
+ * @param resourceData resource data which holds data node
+ * @return root data node
+ */
+ private static DataNode validateRootDataNode(ResourceData resourceData) {
+ List<DataNode> dataNodes = resourceData.dataNodes();
+ DataNode rootNode = dataNodes.get(0);
+ SchemaId rootSchemaId = rootNode.key().schemaId();
+ assertThat(rootSchemaId.name(), is("/"));
+ return rootNode;
+ }
+
+ /**
+ * Reads XML contents from file path and returns input stream.
+ *
+ * @param path path of XML file
+ * @return input stream
+ */
+ private static InputStream parseInput(String path) {
+ String temp;
+ StringBuilder sb = new StringBuilder();
+ try (BufferedReader br = new BufferedReader(new FileReader(path))) {
+ while ((temp = br.readLine()) != null) {
+ sb.append(temp);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return IOUtils.toInputStream(sb);
+ }
+
+ /**
+ * Reads XML contents from file path and returns input stream.
+ *
+ * @param path path of XML file
+ * @return input stream
+ */
+ private static String parseXml(String path) {
+ String temp;
+ StringBuilder sb = new StringBuilder();
+ try (BufferedReader br = new BufferedReader(new FileReader(path))) {
+ while ((temp = br.readLine()) != null) {
+ sb.append(temp);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Converts input stream to string format.
+ *
+ * @param inputStream input stream of xml
+ * @return XML string
+ */
+ private static String convertInputStreamToString(InputStream inputStream) {
+ BufferedReader br;
+ StringBuilder sb = new StringBuilder();
+ String xmlData;
+ br = new BufferedReader(new InputStreamReader(inputStream));
+ try {
+ while ((xmlData = br.readLine()) != null) {
+ sb.append(xmlData);
+ }
+ } catch (IOException e) {
+ throw new XmlSerializerException(e.getMessage());
+ }
+ return sb.toString();
+ }
+
+ /**
* Validates data node in which XML element is of type YANG container.
*/
@Test
@@ -282,199 +477,6 @@
assertThat(convertInputStreamToString(inputStream), is(parseXml(path)));
}
- /**
- * Validates and returns container data node.
- *
- * @param parent data node holding container
- * @param name name of the container
- * @param namespace namespace of the container
- * @return container data node
- */
- private static DataNode validateContainerDataNode(DataNode parent,
- String name,
- String namespace) {
- Map<NodeKey, DataNode> childNodes = ((InnerNode) parent).childNodes();
- NodeKey key = NodeKey.builder().schemaId(name, namespace).build();
- DataNode dataNode = childNodes.get(key);
- SchemaId schemaId = dataNode.key().schemaId();
- assertThat(schemaId.name(), is(name));
- assertThat(schemaId.namespace(), is(namespace));
- return dataNode;
- }
-
- /**
- * Validates and returns list data node.
- *
- * @param parent data node holding list
- * @param name name of the list
- * @param namespace namespace of the list
- * @param keynames list of key leaf names
- * @param keyNs list of key leaf namespace
- * @param keyVal list of key leaf values
- * @return list data node
- */
- private static DataNode validateListDataNode(DataNode parent,
- String name, String namespace,
- List<String> keynames,
- List<String> keyNs,
- List<Object> keyVal) {
- Map<NodeKey, DataNode> childNodes = ((InnerNode) parent).childNodes();
- NodeKey key = NodeKey.builder().schemaId(name, namespace).build();
- DataNode dataNode;
- if (keynames != null && !keynames.isEmpty()) {
- ListKey.ListKeyBuilder listKeyBldr = new ListKey.ListKeyBuilder();
- listKeyBldr.schemaId(key.schemaId());
- for (int i = 0; i < keynames.size(); i++) {
- listKeyBldr.addKeyLeaf(keynames.get(i), keyNs.get(i),
- keyVal.get(i));
- }
- dataNode = childNodes.get(listKeyBldr.build());
- } else {
- dataNode = childNodes.get(key);
- }
- SchemaId schemaId = dataNode.key().schemaId();
- assertThat(schemaId.name(), is(name));
- assertThat(schemaId.namespace(), is(namespace));
- return dataNode;
- }
-
- /**
- * Validates leaf data node.
- *
- * @param parent data node holding leaf
- * @param name name of the leaf
- * @param namespace namespace of the leaf
- * @param value leaf value
- */
- private static void validateLeafDataNode(DataNode parent,
- String name, String namespace,
- Object value) {
- Map<NodeKey, DataNode> childNodes = ((InnerNode) parent).childNodes();
- NodeKey key = NodeKey.builder().schemaId(name, namespace).build();
- LeafNode dataNode = ((LeafNode) childNodes.get(key));
- SchemaId schemaId = dataNode.key().schemaId();
- assertThat(schemaId.name(), is(name));
- assertThat(schemaId.namespace(), is(namespace));
- assertThat(dataNode.value().toString(), is(value));
- }
-
- /**
- * Validates an empty leaf data node.
- *
- * @param parent data node holding leaf
- * @param name name of the leaf
- * @param namespace namespace of the leaf
- * @param value leaf value
- */
- private static void validateNullLeafDataNode(DataNode parent,
- String name, String namespace,
- Object value) {
- Map<NodeKey, DataNode> childNodes = ((InnerNode) parent).childNodes();
- NodeKey key = NodeKey.builder().schemaId(name, namespace).build();
- LeafNode dataNode = ((LeafNode) childNodes.get(key));
- SchemaId schemaId = dataNode.key().schemaId();
- assertThat(schemaId.name(), is(name));
- assertThat(schemaId.namespace(), is(namespace));
- assertThat(dataNode.value(), is(value));
- }
-
- /**
- * Validates leaf-list data node.
- *
- * @param parent data node holding leaf-list
- * @param name name of the leaf-list
- * @param namespace namespace of the leaf-list
- * @param value leaf-list value
- */
- private static void validateLeafListDataNode(DataNode parent,
- String name, String namespace,
- Object value) {
- Map<NodeKey, DataNode> childNodes = ((InnerNode) parent).childNodes();
- NodeKey key = NodeKey.builder().schemaId(name, namespace).build();
- LeafListKey.LeafListKeyBuilder leafListBldr =
- new LeafListKey.LeafListKeyBuilder();
- leafListBldr.schemaId(key.schemaId());
- leafListBldr.value(value);
- DataNode leafListNode = childNodes.get(leafListBldr.build());
- SchemaId schemaId = leafListNode.key().schemaId();
- assertThat(schemaId.name(), is(name));
- assertThat(schemaId.namespace(), is(namespace));
- assertThat(((LeafNode) leafListNode).value().toString(), is(value));
- }
-
- /**
- * Validates root data node.
- *
- * @param resourceData resource data which holds data node
- * @return root data node
- */
- private static DataNode validateRootDataNode(ResourceData resourceData) {
- List<DataNode> dataNodes = resourceData.dataNodes();
- DataNode rootNode = dataNodes.get(0);
- SchemaId rootSchemaId = rootNode.key().schemaId();
- assertThat(rootSchemaId.name(), is("/"));
- return rootNode;
- }
-
- /**
- * Reads XML contents from file path and returns input stream.
- *
- * @param path path of XML file
- * @return input stream
- */
- private static InputStream parseInput(String path) {
- String temp;
- StringBuilder sb = new StringBuilder();
- try (BufferedReader br = new BufferedReader(new FileReader(path))) {
- while ((temp = br.readLine()) != null) {
- sb.append(temp);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return IOUtils.toInputStream(sb);
- }
-
- /**
- * Reads XML contents from file path and returns input stream.
- *
- * @param path path of XML file
- * @return input stream
- */
- private static String parseXml(String path) {
- String temp;
- StringBuilder sb = new StringBuilder();
- try (BufferedReader br = new BufferedReader(new FileReader(path))) {
- while ((temp = br.readLine()) != null) {
- sb.append(temp);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return sb.toString();
- }
-
- /**
- * Converts input stream to string format.
- *
- * @param inputStream input stream of xml
- * @return XML string
- */
- private static String convertInputStreamToString(InputStream inputStream) {
- BufferedReader br;
- StringBuilder sb = new StringBuilder();
- String xmlData;
- br = new BufferedReader(new InputStreamReader(inputStream));
- try {
- while ((xmlData = br.readLine()) != null) {
- sb.append(xmlData);
- }
- } catch (IOException e) {
- throw new XmlSerializerException(e.getMessage());
- }
- return sb.toString();
- }
-
private CompositeData getNewCompositeData(CompositeData data) {
List<AnnotatedNodeInfo> annotatedNodeInfos = data
.annotatedNodesInfo();
diff --git a/serializers/xml/src/test/resources/food.yang b/serializers/xml/src/test/resources/food.yang
index 4c87fa0..861ef3a 100644
--- a/serializers/xml/src/test/resources/food.yang
+++ b/serializers/xml/src/test/resources/food.yang
@@ -44,7 +44,7 @@
}
}
leaf p1 {
- type string;
+ type empty;
}
leaf-list p2 {
type string;
diff --git a/serializers/xml/src/test/resources/testContainer.xml b/serializers/xml/src/test/resources/testContainer.xml
index ee679b8..98d44f8 100644
--- a/serializers/xml/src/test/resources/testContainer.xml
+++ b/serializers/xml/src/test/resources/testContainer.xml
@@ -1,5 +1,5 @@
<food xmlns="yrt:food">
-<p1>p1_value</p1>
+<p1/>
<p2>p2_value</p2>
<p2>p2_value1</p2>
</food>