1 package org.opendaylight.controller.sal.dom.broker.impl
3 import org.opendaylight.yangtools.yang.data.api.CompositeNode
5 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier
6 import java.util.Map.Entry
7 import java.util.HashSet
8 import java.util.ArrayList
9 import org.opendaylight.yangtools.yang.data.api.Node
10 import org.opendaylight.yangtools.yang.data.impl.CompositeNodeTOImpl
14 static def CompositeNode read(Map<InstanceIdentifier, CompositeNode> map, InstanceIdentifier path) {
15 val root = map.get(path);
16 val childs = map.getChilds(path);
17 if(root === null && childs.empty) {
21 return merge(path, root, childs);
24 static def CompositeNode merge(InstanceIdentifier path, CompositeNode node,
25 HashSet<Entry<InstanceIdentifier, CompositeNode>> entries) {
26 val it = new ArrayList<Node<?>>();
27 val qname = path.path.last.nodeType;
29 addAll(node.children);
31 for (entry : entries) {
32 val nesting = entry.key.path.size - path.path.size;
37 return new CompositeNodeTOImpl(qname, null, it);
40 static def getChilds(Map<InstanceIdentifier, CompositeNode> map, InstanceIdentifier path) {
41 val it = new HashSet<Entry<InstanceIdentifier, CompositeNode>>();
42 for (entry : map.entrySet) {
43 if (path.contains(entry.key)) {