Bug 868: Remove AD-SAL components which were deprecated in Lithium
[controller.git] / opendaylight / adsal / sal / api / src / main / java / org / opendaylight / controller / sal / core / Node.java
diff --git a/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Node.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Node.java
deleted file mode 100644 (file)
index be1ed07..0000000
+++ /dev/null
@@ -1,459 +0,0 @@
-
-/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-/**
- * @file   Node.java
- *
- * @brief  Describe a generic network element in multiple SDNs technologies
- *
- * Describe a generic network element in multiple SDNs technologies. A
- * Node is identified by the pair (NodeType, NodeID), the nodetype are
- * needed in order to further specify the nodeID
- */
-package org.opendaylight.controller.sal.core;
-
-import java.io.Serializable;
-import java.math.BigInteger;
-import java.util.Set;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.opendaylight.controller.sal.utils.HexEncode;
-import org.opendaylight.controller.sal.utils.INodeFactory;
-import org.opendaylight.controller.sal.utils.ServiceHelper;
-
-/**
- * Describe a generic network element in multiple SDNs technologies. A
- * Node is identified by the pair (NodeType, NodeID), the nodetype are
- * needed in order to further specify the nodeID
- *
- */
-@XmlAccessorType(XmlAccessType.NONE)
-@XmlRootElement
-@Deprecated
-public class Node implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * Enum-like static class created with the purpose of identifing
-     * multiple type of nodes in the SDN network. The type is
-     * necessary to figure out to later on correctly use the
-     * nodeID. Using a static class instead of an Enum so we can add
-     * dynamically new types without changing anything in the
-     * surround.
-     */
-    public static final class NodeIDType {
-        private static final ConcurrentHashMap<String, Class<? extends Object>> compatibleType =
-            new ConcurrentHashMap<String, Class<? extends Object>>();
-        /**
-         * Identifier for an OpenFlow node
-         */
-        public static String OPENFLOW = "OF";
-        /**
-         * Identifier for a PCEP node
-         */
-        public static String PCEP = "PE";
-        /**
-         * Identifier for a ONEPK node
-         */
-        public static String ONEPK = "PK";
-        /**
-         * Identifier for a node in a non-SDN network
-         */
-        public static String PRODUCTION = "PR";
-
-        // Pre-populated types, just here for convenience and ease of
-        // unit-testing, but certainly those could live also outside.
-        static {
-            compatibleType.put(OPENFLOW, Long.class);
-            compatibleType.put(PCEP, UUID.class);
-            compatibleType.put(ONEPK, String.class);
-            compatibleType.put(PRODUCTION, String.class);
-        }
-
-        /**
-         * Return the type of the class expected for the
-         * NodeID, it's used for validity check in the constructor
-         *
-         * @param nodeType the type of the node we want to check
-         * compatibility for
-         *
-         * @return The Class which is supposed to instantiate the ID
-         * for the NodeID
-         */
-        public static Class<?> getClassType(String nodeType) {
-            return compatibleType.get(nodeType);
-        }
-
-        /**
-         * Returns all the registered nodeIDTypes currently available
-         *
-         * @return The current registered NodeIDTypes
-         */
-        public static Set<String> values() {
-            return compatibleType.keySet();
-        }
-
-        /**
-         * Register a new ID for which Node can be created
-         *
-         * @param type, the new type being registered
-         * @param compatibleID, the type of class to be accepted as ID
-         *
-         * @return true if registered, false otherwise
-         */
-        public static boolean registerIDType(String type,
-                                             Class<? extends Object> compatibleID) {
-            if (compatibleType.get(type) != null) {
-                return false;
-            }  else {
-                compatibleType.put(type, compatibleID);
-                return true;
-            }
-        }
-
-        /**
-         * UNRegister a new ID for which Node can be created
-         *
-         * @param type, the type being UN-registered
-         *
-         */
-        public static void unRegisterIDType(String type) {
-            compatibleType.remove(type);
-        }
-    }
-
-    // This is the identity of the Node a (Type,ID) pair!, the full
-    // essence of this class.
-    private Object nodeID;
-    private String nodeType;
-
-    // Shadow value for unmarshalling
-    private String nodeIDString;
-
-    /**
-     * Private constructor used for JAXB mapping
-     */
-    private Node() {
-        this.nodeID = null;
-        this.nodeType = null;
-        this.nodeIDString = null;
-    }
-
-    /**
-     * Constructor for the Node objects, it validate the input so if
-     * the ID passed is not of the type expected accordingly to the
-     * type an exception is raised.
-     *
-     * @param nodeType Type of the node we are building
-     * @param id ID used by the SDN technology to identify the node
-     *
-     */
-    public Node(String nodeType, Object id) throws ConstructionException {
-        if (NodeIDType.getClassType(nodeType) != null &&
-            NodeIDType.getClassType(nodeType).isInstance(id)) {
-            this.nodeType = nodeType;
-            this.nodeID = id;
-        } else {
-            throw new ConstructionException("Type of incoming object:"
-                                            + id.getClass() + " not compatible with expected type:"
-                                            + NodeIDType.getClassType(nodeType));
-        }
-    }
-
-    /**
-     * Copy Constructor for the Node objects.
-     *
-     * @param src type of nodes to copy from
-     *
-     */
-    public Node(Node src) throws ConstructionException {
-        if (src != null) {
-            this.nodeType = src.getType();
-            // Here we can reference the object because that is
-            // supposed to be an immutable identifier as well like a
-            // UUID/Integer and so on, hence no need to create a copy
-            // of it
-            this.nodeID = src.getID();
-        } else {
-            throw
-                new ConstructionException("Null incoming object to copy from");
-        }
-    }
-
-    /**
-     * getter for node type
-     *
-     *
-     * @return The node Type for this Node object
-     */
-    @XmlElement(name = "type")
-    public String getType() {
-        return this.nodeType;
-    }
-
-    /**
-     * fill the current object from the string parameters passed, will
-     * be only used by JAXB
-     *
-     * @param typeStr string representing the type of the Node
-     * @param IDStr String representation of the ID
-     */
-    private void fillmeFromString(String typeStr, String IDStr) {
-        if (typeStr == null) {
-            return;
-        }
-
-        if (IDStr == null) {
-            return;
-        }
-
-        this.nodeType = typeStr;
-        if (typeStr.equals(NodeIDType.OPENFLOW)) {
-            this.nodeID = Long.valueOf(HexEncode.stringToLong(IDStr));
-        } else if (typeStr.equals(NodeIDType.ONEPK)) {
-            this.nodeID = IDStr;
-        } else if (typeStr.equals(NodeIDType.PCEP)) {
-            this.nodeID = UUID.fromString(IDStr);
-        } else if (typeStr.equals(NodeIDType.PRODUCTION)) {
-            this.nodeID = IDStr;
-        } else {
-            //Use plugin's method to get appropriate conversion from IDStr to nodeID
-            INodeFactory f = (INodeFactory) ServiceHelper
-                    .getGlobalInstance(INodeFactory.class, new Node(), "(protocolName="+typeStr+")");
-            if(f!=null){
-                Node n = f.fromString(typeStr, IDStr);
-                this.nodeID = n.nodeID;
-            }
-        }
-    }
-
-    /**
-     * Private setter for nodeType to be called by JAXB not by anyone
-     * else, Node is immutable
-     *
-     * @param type of node to be set
-     */
-    @SuppressWarnings("unused")
-    private void setType(String type) {
-        this.nodeType = type;
-        if (this.nodeIDString != null) {
-            this.fillmeFromString(type, this.nodeIDString);
-        }
-    }
-
-    /**
-     * getter for node ID
-     *
-     *
-     * @return The node ID for this Node object
-     */
-    public Object getID() {
-        return this.nodeID;
-    }
-
-    /**
-     * Getter for the node ID in string format
-     *
-     * @return The nodeID in string format
-     */
-    @XmlElement(name = "id")
-    public String getNodeIDString() {
-        if (this.nodeType.equals(NodeIDType.OPENFLOW)) {
-            return HexEncode.longToHexString((Long) this.nodeID);
-        } else {
-            return this.nodeID.toString();
-        }
-    }
-
-    /**
-     * private setter to be used by JAXB
-     *
-     * @param nodeIDString String representation for NodeID
-     */
-    @SuppressWarnings("unused")
-    private void setNodeIDString(String nodeIDString) {
-        this.nodeIDString = nodeIDString;
-        if (this.nodeType != null) {
-            this.fillmeFromString(this.nodeType, nodeIDString);
-        }
-    }
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((nodeID == null) ? 0 : nodeID.hashCode());
-        result = prime * result
-                + ((nodeType == null) ? 0 : nodeType.hashCode());
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj)
-            return true;
-        if (obj == null)
-            return false;
-        if (getClass() != obj.getClass())
-            return false;
-        Node other = (Node) obj;
-        if (nodeID == null) {
-            if (other.nodeID != null)
-                return false;
-        } else if (!nodeID.equals(other.nodeID))
-            return false;
-        if (nodeType == null) {
-            if (other.nodeType != null)
-                return false;
-        } else if (!nodeType.equals(other.nodeType))
-            return false;
-        return true;
-    }
-
-    @Override
-    public String toString() {
-        if (this.nodeType.equals(NodeIDType.OPENFLOW)) {
-            return this.nodeType + "|"
-                + HexEncode.longToHexString((Long) this.nodeID);
-        } else {
-            return this.nodeType + "|" + this.nodeID.toString();
-        }
-    }
-
-    /**
-     * Static method to get back a Node from a string
-     *
-     * @param str string formatted in toString mode that can be
-     * converted back to a Node format.
-     *
-     * @return a Node if succed or null if no
-     */
-    public static Node fromString(String str) {
-        if (str == null) {
-            return null;
-        }
-
-        String parts[] = str.split("\\|");
-        if (parts.length != 2) {
-            // Try to guess from a String formatted as a long because
-            // for long time openflow has been prime citizen so lets
-            // keep this legacy for now
-            String numStr = str.toUpperCase();
-
-            Long ofNodeID = null;
-            if (numStr.startsWith("0X")) {
-                // Try as an hex number
-                try {
-                    BigInteger b = new BigInteger(
-                        numStr.replaceFirst("0X", ""), 16);
-                    ofNodeID = Long.valueOf(b.longValue());
-                } catch (Exception ex) {
-                    ofNodeID = null;
-                }
-            } else {
-                // Try as a decimal number
-                try {
-                    BigInteger b = new BigInteger(numStr);
-                    ofNodeID = Long.valueOf(b.longValue());
-                } catch (Exception ex) {
-                    ofNodeID = null;
-                }
-            }
-
-            // Startegy #3 parse as HexLong
-            if (ofNodeID == null) {
-                try {
-                    ofNodeID = Long.valueOf(HexEncode.stringToLong(numStr));
-                } catch (Exception ex) {
-                    ofNodeID = null;
-                }
-            }
-
-            // We ran out of ideas ... return null
-            if (ofNodeID == null) {
-                return null;
-            }
-
-            // Lets return the cooked up NodeID
-            try {
-                return new Node(NodeIDType.OPENFLOW, ofNodeID);
-            } catch (ConstructionException ex) {
-                return null;
-            }
-        }
-
-        String typeStr = parts[0];
-        String IDStr = parts[1];
-
-        return fromString(typeStr, IDStr);
-    }
-
-    /**
-     * Static method to get back a Node from a pair of strings, the
-     * first one being the Type representation, the second one being
-     * the ID string representation, expected to be heavily used in
-     * northbound API.
-     *
-     * @param type, the type of the node we are parsing
-     * @param id, the string representation of the node id
-     *
-     * @return a Node if succed or null if no
-     */
-    public static Node fromString(String typeStr, String IDStr) {
-        if (typeStr == null) {
-            return null;
-        }
-
-        if (IDStr == null) {
-            return null;
-        }
-
-        if (typeStr.equals(NodeIDType.OPENFLOW)) {
-            try {
-                Long ID = Long.valueOf(HexEncode.stringToLong(IDStr));
-                return new Node(typeStr, ID);
-            } catch (Exception ex) {
-                return null;
-            }
-        } else if (typeStr.equals(NodeIDType.ONEPK)) {
-            try {
-                return new Node(typeStr, IDStr);
-            } catch (Exception ex) {
-                return null;
-            }
-        } else if (typeStr.equals(NodeIDType.PCEP)) {
-            try {
-                UUID ID = UUID.fromString(IDStr);
-                return new Node(typeStr, ID);
-            } catch (Exception ex) {
-                return null;
-            }
-        } else if (typeStr.equals(NodeIDType.PRODUCTION)) {
-            try {
-                return new Node(typeStr, IDStr);
-            } catch (Exception ex) {
-                return null;
-            }
-        } else {
-            //Use INodeFactory to create a Node of registered Node type.
-            //The protocol plugin being used depends on typeStr.
-            INodeFactory f = (INodeFactory) ServiceHelper
-                    .getGlobalInstance(INodeFactory.class, new Node(), "(protocolName="+typeStr+")");
-            if(f==null)
-                return null;
-            return f.fromString(typeStr, IDStr);
-        }
-    }
-}