1 package org.opendaylight.controller.sal.binding.dom.serializer.impl
3 import org.opendaylight.yangtools.yang.data.api.Node
5 import org.opendaylight.yangtools.yang.common.QName
7 import java.util.ArrayList
8 import org.opendaylight.yangtools.yang.data.impl.CompositeNodeTOImpl
9 import org.opendaylight.yangtools.yang.data.impl.SimpleNodeTOImpl
10 import com.google.common.base.Preconditions
12 class IntermediateMapping {
16 static def Node<?> toNode(Map<?,?> map) {
17 if(map instanceof Node<?>) {
18 return map as Node<?>;
20 val nodeMap = map as Map<QName,Object>;
21 Preconditions.checkArgument(map.size == 1);
22 val elem = nodeMap.entrySet.iterator.next;
24 val value = elem.value;
25 toNodeImpl(qname, value);
29 static def dispatch Node<?> toNodeImpl(QName name, List<?> objects) {
30 val values = new ArrayList<Node<?>>(objects.size);
32 if(obj instanceof Node<?>) {
33 values.add(obj as Node<?>);
34 } else if(obj instanceof Map<?,?>) {
35 values.add(toNode(obj as Map<?,?>));
38 return new CompositeNodeTOImpl(name, null, values);
41 static def dispatch Node<?> toNodeImpl(QName name, Map<QName, Object> object) {
42 throw new UnsupportedOperationException("Unsupported node hierarchy.");
45 static def dispatch Node<?> toNodeImpl(QName name, Object object) {
46 return new SimpleNodeTOImpl(name, null, object);