Merge "Bug 499: Added support for old DOM Broker APIs."
[controller.git] / opendaylight / sal / api / src / main / java / org / opendaylight / controller / sal / utils / NodeConnectorCreator.java
index b04ce9a07591fdd6c976fdf391c0747c26db5c89..9cd551664cb945bb4a0c7ed279507a9870fe9b1e 100644 (file)
@@ -17,6 +17,8 @@ import org.opendaylight.controller.sal.core.Node;
 import org.opendaylight.controller.sal.core.NodeConnector;
 import org.opendaylight.controller.sal.core.Node.NodeIDType;
 import org.opendaylight.controller.sal.core.NodeConnector.NodeConnectorIDType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * The class provides helper functions to create a node connector
@@ -24,6 +26,8 @@ import org.opendaylight.controller.sal.core.NodeConnector.NodeConnectorIDType;
  *
  */
 public abstract class NodeConnectorCreator {
+    protected static final Logger logger = LoggerFactory
+    .getLogger(NodeConnectorCreator.class);
     /**
      * Generic NodeConnector creator
      * The nodeConnector type is inferred from the node type
@@ -36,15 +40,27 @@ public abstract class NodeConnectorCreator {
         if (node.getType().equals(NodeIDType.OPENFLOW)) {
             try {
                 return new NodeConnector(NodeConnectorIDType.OPENFLOW,
-                        (Short) portId, node);
+                        portId, node);
             } catch (ConstructionException e1) {
-                e1.printStackTrace();
+                logger.error("",e1);
                 return null;
             }
         }
         return null;
     }
 
+    /**
+     * Generic NodeConnector creator
+     * The nodeConnector type is inferred from the node type
+     *
+     * @param portId The string representing the port id
+     * @param node The network node as {@link org.opendaylight.controller.sal.core.Node Node} object
+     * @return The corresponding {@link org.opendaylight.controller.sal.core.NodeConnector NodeConnector} object
+     */
+    public static NodeConnector createNodeConnector(String portId, Node node) {
+        return NodeConnector.fromString(String.format("%s|%s@%s", node.getType(), portId, node.toString()));
+    }
+
     /**
      * NodeConnector creator where NodeConnector type can be specified
      * Needed to create special internal node connectors (like software stack)
@@ -57,9 +73,13 @@ public abstract class NodeConnectorCreator {
     public static NodeConnector createNodeConnector(
             String nodeConnectorType, Object portId, Node node) {
         try {
-            return new NodeConnector(nodeConnectorType, portId, node);
+            if (nodeConnectorType.equals(Node.NodeIDType.OPENFLOW) && (portId.getClass() == String.class)) {
+                return new NodeConnector(nodeConnectorType, Short.parseShort((String) portId), node);
+            } else {
+                return new NodeConnector(nodeConnectorType, portId, node);
+            }
         } catch (ConstructionException e1) {
-            e1.printStackTrace();
+            logger.error("",e1);
             return null;
         }
     }
@@ -68,7 +88,7 @@ public abstract class NodeConnectorCreator {
         try {
             return new NodeConnector(NodeConnectorIDType.OPENFLOW, portId, node);
         } catch (ConstructionException e1) {
-            e1.printStackTrace();
+            logger.error("",e1);
             return null;
         }
     }
@@ -85,7 +105,7 @@ public abstract class NodeConnectorCreator {
             }
             return nodeConnectors;
         } catch (ConstructionException e1) {
-            e1.printStackTrace();
+            logger.error("",e1);
             return null;
         }
     }