1 package org.opendaylight.controller.sal.restconf.impl.test;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNotNull;
5 import static org.junit.Assert.assertTrue;
9 import javax.ws.rs.WebApplicationException;
11 import org.junit.Test;
12 import org.opendaylight.controller.sal.rest.impl.XmlToCompositeNodeProvider;
13 import org.opendaylight.yangtools.yang.data.api.*;
16 public class FromXmlToCompositeNode {
17 Logger LOG = LoggerFactory.getLogger(FromXmlToCompositeNode.class);
20 * top level element represents container. second level element is list with
24 public void testXmlDataContainer() {
25 CompositeNode compNode = compositeContainerFromXml("/xml-to-composite-node/data-container.xml");
26 verifyCommonPartAOfXml(compNode, "");
30 public void testXmlDataList() {
31 CompositeNode compNode = compositeContainerFromXml("/xml-to-composite-node/data-list.xml");
32 assertNotNull(compNode);
33 assertEquals("cont", compNode.getNodeType().getLocalName());
34 assertEquals(2, compNode.getChildren().size());
35 CompositeNode lst1_1 = null;
36 CompositeNode lst1_2 = null;
38 for (Node<?> node : compNode.getChildren()) {
39 assertTrue(node instanceof CompositeNode);
40 switch (loopCount++) {
42 lst1_1 = (CompositeNode) node;
45 lst1_2 = (CompositeNode) node;
51 verifyCommonPartAOfXml(lst1_1, "1");
55 SimpleNode<?> lflst11 = null;
56 CompositeNode cont11 = null;
57 for (Node<?> node : lst1_2.getChildren()) {
58 String nodeName = node.getNodeType().getLocalName();
59 if (nodeName.equals("lflst11")) {
60 assertTrue(node instanceof SimpleNode<?>);
61 lflst11 = (SimpleNode<?>) node;
63 } else if (nodeName.equals("cont11")) {
64 assertTrue(node instanceof CompositeNode);
65 cont11 = (CompositeNode) node;
68 assertEquals("221", lflst11.getValue());
70 assertEquals(1, cont11.getChildren().size());
71 assertTrue(cont11.getChildren().get(0) instanceof SimpleNode<?>);
72 SimpleNode<?> cont11_lf111 = (SimpleNode<?>) cont11.getChildren().get(0);
73 assertEquals("lf111", cont11_lf111.getNodeType().getLocalName());
74 assertEquals("100", cont11_lf111.getValue());
80 public void testXmlEmptyData() {
81 CompositeNode compNode = compositeContainerFromXml("/xml-to-composite-node/empty-data.xml");
82 assertEquals("cont", compNode.getNodeType().getLocalName());
83 SimpleNode<?> lf1 = null;
84 SimpleNode<?> lflst1_1 = null;
85 SimpleNode<?> lflst1_2 = null;
86 CompositeNode lst1 = null;
88 for (Node<?> node : compNode.getChildren()) {
89 if (node.getNodeType().getLocalName().equals("lf1")) {
90 assertTrue(node instanceof SimpleNode<?>);
91 lf1 = (SimpleNode<?>) node;
92 } else if (node.getNodeType().getLocalName().equals("lflst1")) {
93 assertTrue(node instanceof SimpleNode<?>);
95 switch (lflst1Count++) {
97 lflst1_1 = (SimpleNode<?>) node;
100 lflst1_2 = (SimpleNode<?>) node;
103 } else if (node.getNodeType().getLocalName().equals("lst1")) {
104 assertTrue(node instanceof CompositeNode);
105 lst1 = (CompositeNode) node;
110 assertNotNull(lflst1_1);
111 assertNotNull(lflst1_2);
114 assertEquals("", lf1.getValue());
115 assertEquals("", lflst1_1.getValue());
116 assertEquals("", lflst1_2.getValue());
117 assertEquals(1, lst1.getChildren().size());
118 assertEquals("lf11", lst1.getChildren().get(0).getNodeType().getLocalName());
120 assertTrue(lst1.getChildren().get(0) instanceof SimpleNode<?>);
121 assertEquals("", lst1.getChildren().get(0).getValue());
125 private void verifyCommonPartAOfXml(CompositeNode compNode, String suf) {
126 SimpleNode<?> lf1suf = null;
127 SimpleNode<?> lflst1suf_1 = null;
128 SimpleNode<?> lflst1suf_2 = null;
129 SimpleNode<?> lflst1suf_3 = null;
130 CompositeNode cont1suf = null;
131 CompositeNode lst1suf = null;
135 for (Node<?> node : compNode.getChildren()) {
136 String localName = node.getNodeType().getLocalName();
137 if (localName.equals("lf1" + suf)) {
138 assertTrue(node instanceof SimpleNode<?>);
139 lf1suf = (SimpleNode<?>) node;
140 } else if (localName.equals("lflst1" + suf)) {
141 assertTrue(node instanceof SimpleNode<?>);
142 switch (lflstCount++) {
144 lflst1suf_1 = (SimpleNode<?>) node;
147 lflst1suf_2 = (SimpleNode<?>) node;
150 lflst1suf_3 = (SimpleNode<?>) node;
153 } else if (localName.equals("lst1" + suf)) {
154 assertTrue(node instanceof CompositeNode);
155 lst1suf = (CompositeNode) node;
156 } else if (localName.equals("cont1" + suf)) {
157 assertTrue(node instanceof CompositeNode);
158 cont1suf = (CompositeNode) node;
161 assertNotNull(lf1suf);
162 assertNotNull(lflst1suf_1);
163 assertNotNull(lflst1suf_2);
164 assertNotNull(lflst1suf_3);
165 assertNotNull(lst1suf);
166 assertNotNull(cont1suf);
168 assertEquals("str0", lf1suf.getValue());
169 assertEquals("121", lflst1suf_1.getValue());
170 assertEquals("131", lflst1suf_2.getValue());
171 assertEquals("str1", lflst1suf_3.getValue());
173 assertEquals(1, lst1suf.getChildren().size());
175 assertTrue(lst1suf.getChildren().get(0) instanceof SimpleNode<?>);
176 SimpleNode<?> lst11_lf11 = (SimpleNode<?>) lst1suf.getChildren().get(0);
177 assertEquals("lf11" + suf, lst11_lf11.getNodeType().getLocalName());
178 assertEquals("str2", lst11_lf11.getValue());
180 assertTrue(cont1suf.getChildren().get(0) instanceof SimpleNode<?>);
181 SimpleNode<?> cont1_lf11 = (SimpleNode<?>) cont1suf.getChildren().get(0);
182 assertEquals("lf11" + suf, cont1_lf11.getNodeType().getLocalName());
183 assertEquals("100", cont1_lf11.getValue());
186 private CompositeNode compositeContainerFromXml(String xmlPath) {
187 XmlToCompositeNodeProvider xmlToCompositeNodeProvider = XmlToCompositeNodeProvider.INSTANCE;
189 InputStream xmlStream = FromXmlToCompositeNode.class.getResourceAsStream(xmlPath);
190 return xmlToCompositeNodeProvider.readFrom(null, null, null, null, null, xmlStream);
191 } catch (WebApplicationException | IOException e) {
192 LOG.error(e.getMessage());