package org.opendaylight.yangtools.yang.data.impl;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
@Override
public List<Node<?>> getChildren() {
- return getValue();
+ return Collections.unmodifiableList(getValue() == null ? new ArrayList<Node<?>>() : getValue());
}
@Override
*/\r
package org.opendaylight.yangtools.yang.data.impl;\r
\r
+import java.util.ArrayList;\r
import java.util.List;\r
import java.util.Map;\r
\r
}\r
\r
/**\r
- * update nodeMap\r
+ * update nodeMap - it should be invoked after children was changed\r
*/\r
@Override\r
public void init() {\r
nodeMap = NodeUtils.buildNodeMap(getChildren());\r
}\r
}\r
+ \r
+ @Override\r
+ public List<Node<?>> getChildren() {\r
+ return getValue() == null ? new ArrayList<Node<?>>() : getValue();\r
+ }\r
\r
@Override\r
public void setValue(List<Node<?>> value) {\r
super.setValue(value);\r
+ init();\r
}\r
\r
@Override\r
if (!processingQueue.isEmpty()) {
parentNode = processingQueue.peek();
}
- CompositeNode compParentNode = null;
- if (parentNode instanceof CompositeNode) {
- compParentNode = (CompositeNode) parentNode;
+ MutableCompositeNode compParentNode = null;
+ if (parentNode instanceof MutableCompositeNode) {
+ compParentNode = (MutableCompositeNode) parentNode;
}
Node<?> newNode = null;
if (isCompositeNodeEvent(event)) {
}
} else if (event.isEndElement()) {
root = processingQueue.pop();
+ if (root instanceof MutableCompositeNode) {
+ ((MutableCompositeNode) root).init();
+ }
}
}
return root;
* @see CompositeNode
* @see MutableCompositeNode
*/
- private static CompositeNode resolveCompositeNodeFromStartElement(final StartElement startElement,
+ private static MutableCompositeNode resolveCompositeNodeFromStartElement(final StartElement startElement,
CompositeNode parent) {
checkArgument(startElement != null, "Start Element cannot be NULL!");
import java.io.FileInputStream;
import java.io.InputStream;
+import java.util.List;
import javax.xml.stream.XMLStreamException;
assertNotNull(deviceId);
assertNotNull(deviceIP);
}
+
+ @Test
+ public void nodeMapInCompositeNodeTest() {
+ Node<?> rootNode = null;
+ try {
+ rootNode = XmlTreeBuilder.buildDataTree(inputStream);
+ } catch (XMLStreamException e) {
+ e.printStackTrace();
+ }
+
+ CompositeNode compRootNode = (CompositeNode)rootNode;
+ List<CompositeNode> params = compRootNode.getCompositesByName("params");
+ assertEquals(1, params.size());
+ List<CompositeNode> compositesByName = params.get(0).getCompositesByName("param");
+ assertEquals(2, compositesByName.size());
+ }
}
\ No newline at end of file