package org.opendaylight.controller.sal.binding.dom.serializer.impl import org.opendaylight.yangtools.yang.data.api.Node import java.util.Map import org.opendaylight.yangtools.yang.common.QName import java.util.List import java.util.ArrayList import org.opendaylight.yangtools.yang.data.impl.CompositeNodeTOImpl import org.opendaylight.yangtools.yang.data.impl.SimpleNodeTOImpl import com.google.common.base.Preconditions class IntermediateMapping { static def Node toNode(Map map) { if(map instanceof Node) { return map as Node; } val nodeMap = map as Map; Preconditions.checkArgument(map.size == 1); val elem = nodeMap.entrySet.iterator.next; val qname = elem.key; val value = elem.value; toNodeImpl(qname, value); } static def dispatch Node toNodeImpl(QName name, List objects) { val values = new ArrayList>(objects.size); for (obj : objects) { if(obj instanceof Node) { values.add(obj as Node); } else if(obj instanceof Map) { values.add(toNode(obj as Map)); } } return new CompositeNodeTOImpl(name, null, values); } static def dispatch Node toNodeImpl(QName name, Map object) { throw new UnsupportedOperationException("Unsupported node hierarchy."); } static def dispatch Node toNodeImpl(QName name, Object object) { return new SimpleNodeTOImpl(name, null, object); } }