X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fcompatibility%2Fsal-compatibility%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fcompatibility%2Ftopology%2FTopologyMapping.java;h=ae723a316524b19a833f880b54132be63ab9701e;hb=fdda2ebadfe3729e21448fe8f44a506aa67b5da9;hp=476a71a4acd0602a7b36ca41b664fcb00b3d5135;hpb=8a52609ed4f230b72c0608632f14d2c607e36e06;p=controller.git diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/topology/TopologyMapping.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/topology/TopologyMapping.java index 476a71a4ac..ae723a3165 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/topology/TopologyMapping.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/topology/TopologyMapping.java @@ -7,18 +7,16 @@ */ package org.opendaylight.controller.sal.compatibility.topology; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.List; -import java.util.Set; -import java.util.concurrent.CopyOnWriteArrayList; - +import com.google.common.base.Function; +import com.google.common.collect.FluentIterable; import org.opendaylight.controller.md.sal.binding.util.TypeSafeDataReader; import org.opendaylight.controller.sal.compatibility.NodeMapping; import org.opendaylight.controller.sal.core.ConstructionException; import org.opendaylight.controller.sal.core.Edge; import org.opendaylight.controller.sal.core.Node; +import org.opendaylight.controller.sal.core.Node.NodeIDType; import org.opendaylight.controller.sal.core.NodeConnector; +import org.opendaylight.controller.sal.core.NodeConnector.NodeConnectorIDType; import org.opendaylight.controller.sal.core.Property; import org.opendaylight.controller.sal.core.UpdateType; import org.opendaylight.controller.sal.topology.TopoEdgeUpdate; @@ -31,11 +29,16 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Function; -import com.google.common.collect.FluentIterable; +import java.util.List; +import java.util.Set; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.regex.Pattern; + +import static com.google.common.base.Preconditions.checkNotNull; public final class TopologyMapping { private static final Logger LOG = LoggerFactory.getLogger(TopologyMapping.class); + private final static Pattern NUMBERS_ONLY = Pattern.compile("[0-9]+"); private TopologyMapping() { throw new UnsupportedOperationException("Utility class. Instantiation is not allowed."); @@ -93,20 +96,32 @@ public final class TopologyMapping { } public static String toADNodeId(final NodeId nodeId) { - return nodeId.getValue(); + return nodeId.getValue().replaceFirst("^.*:", ""); } public static NodeConnector toADNodeConnector(final TpId source, final NodeId nodeId) throws ConstructionException { checkNotNull(source); - return new NodeConnector(NodeMapping.MD_SAL_TYPE, toADNodeConnectorId(source), toADNode(nodeId)); + String nodeConnectorIdStripped = toADNodeConnectorId(source); + if (NUMBERS_ONLY.matcher(nodeConnectorIdStripped).matches()) { + return new NodeConnector(NodeConnectorIDType.OPENFLOW, Short.valueOf(nodeConnectorIdStripped), toADNode(nodeId)); + } + LOG.debug("NodeConnectorId does not match openflow id type, using " + NodeMapping.MD_SAL_TYPE + "instead"); + NodeConnectorIDType.registerIDType(NodeMapping.MD_SAL_TYPE, String.class, NodeMapping.MD_SAL_TYPE); + return new NodeConnector(NodeMapping.MD_SAL_TYPE, nodeConnectorIdStripped, toADNode(nodeId)); } public static String toADNodeConnectorId(final TpId nodeConnectorId) { - return nodeConnectorId.getValue(); + return nodeConnectorId.getValue().replaceFirst("^.*:", ""); } public static Node toADNode(final NodeId nodeId) throws ConstructionException { checkNotNull(nodeId); - return new Node(NodeMapping.MD_SAL_TYPE, toADNodeId(nodeId)); + String nodeIdStripped = toADNodeId(nodeId); + if (NUMBERS_ONLY.matcher(nodeIdStripped).matches()) { + return new Node(NodeIDType.OPENFLOW, Long.valueOf(nodeIdStripped)); + } + LOG.debug("NodeId does not match openflow id type, using " + NodeMapping.MD_SAL_TYPE + "instead"); + NodeIDType.registerIDType(NodeMapping.MD_SAL_TYPE, String.class); + return new Node(NodeMapping.MD_SAL_TYPE, nodeId.getValue()); } }