X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fcompatibility%2Fsal-compatibility%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fcompatibility%2FNodeMapping.xtend;fp=opendaylight%2Fmd-sal%2Fcompatibility%2Fsal-compatibility%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fcompatibility%2FNodeMapping.xtend;h=b180d86c32900ae0c558bc4e0f51366526738ef4;hb=cfa6e9d0a2193edb2a2e36c04ca95eaf28a651f9;hp=0000000000000000000000000000000000000000;hpb=18fa9cb41678400d1decd007a66fc1f7be894f66;p=controller.git diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/NodeMapping.xtend b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/NodeMapping.xtend new file mode 100644 index 0000000000..b180d86c32 --- /dev/null +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/NodeMapping.xtend @@ -0,0 +1,68 @@ +package org.opendaylight.controller.sal.compatibility + +import org.opendaylight.controller.sal.core.Node +import org.opendaylight.controller.sal.core.NodeConnector +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem + +import static com.google.common.base.Preconditions.*; +import static extension org.opendaylight.controller.sal.common.util.Arguments.*; + +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey +import org.opendaylight.controller.sal.core.ConstructionException +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes + +public class NodeMapping { + + public static val MD_SAL_TYPE = "MD_SAL"; + private static val NODE_CLASS = org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; + private static val NODECONNECTOR_CLASS = org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node. + NodeConnector; + + private new() { + throw new UnsupportedOperationException("Utility class. Instantiation is not allowed."); + } + + public static def toADNode(InstanceIdentifier node) throws ConstructionException { + checkNotNull(node); + checkNotNull(node.getPath()); + checkArgument(node.getPath().size() >= 2); + val arg = node.getPath().get(1); + val item = arg.checkInstanceOf(IdentifiableItem); + val nodeKey = item.getKey().checkInstanceOf(NodeKey); + return new Node(MD_SAL_TYPE, nodeKey); + } + + public static def toADNodeConnector(NodeConnectorRef source) throws ConstructionException { + checkNotNull(source); + val InstanceIdentifier path = checkNotNull(source.getValue()); + val node = path.toADNode(); + checkArgument(path.path.size() >= 3); + val arg = path.getPath().get(2); + val item = arg.checkInstanceOf(IdentifiableItem); + val connectorKey = item.getKey().checkInstanceOf(NodeConnectorKey); + return new NodeConnector(MD_SAL_TYPE, connectorKey, node); + } + + public static def toNodeRef(Node node) { + checkArgument(MD_SAL_TYPE.equals(node.getType())); + val nodeKey = node.ID.checkInstanceOf(NodeKey); + val nodePath = InstanceIdentifier.builder().node(Nodes).node(NODE_CLASS, nodeKey).toInstance(); + return new NodeRef(nodePath); + } + + public static def toNodeConnectorRef(NodeConnector nodeConnector) { + val node = nodeConnector.node.toNodeRef(); + val connectorKey = nodeConnector.ID.checkInstanceOf(NodeConnectorKey); + val path = InstanceIdentifier.builder(node.getValue()).node(NODECONNECTOR_CLASS, connectorKey).toInstance(); + return new NodeConnectorRef(path); + } + + public static def toADNode(NodeRef node) throws ConstructionException { + return toADNode(node.getValue()); + } + +}