package org.opendaylight.controller.sal.core;
import java.io.Serializable;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.opendaylight.controller.sal.utils.INodeConnectorFactory;
+import org.opendaylight.controller.sal.utils.ServiceHelper;
/**
* Describe a generic network element attachment points,
*
* @return the NodeConnectorType of this object
*/
- @XmlAttribute(name = "type")
+ @XmlElement(name = "type")
public String getType() {
return this.nodeConnectorType;
}
*
* @return the NodeConnector ID of this object in String format
*/
- @XmlAttribute(name = "id")
+ @XmlElement(name = "id")
public String getNodeConnectorIDString() {
return this.nodeConnectorID.toString();
}
@Override
public boolean equals(Object obj) {
- if (this == obj)
+ if (this == obj) {
return true;
- if (obj == null)
+ }
+ if (obj == null) {
return false;
- if (getClass() != obj.getClass())
+ }
+ if (getClass() != obj.getClass()) {
return false;
+ }
NodeConnector other = (NodeConnector) obj;
if (nodeConnectorID == null) {
- if (other.nodeConnectorID != null)
+ if (other.nodeConnectorID != null) {
return false;
- } else if (!nodeConnectorID.equals(other.nodeConnectorID))
+ }
+ } else if (!nodeConnectorID.equals(other.nodeConnectorID)) {
return false;
+ }
if (nodeConnectorNode == null) {
- if (other.nodeConnectorNode != null)
+ if (other.nodeConnectorNode != null) {
return false;
- } else if (!nodeConnectorNode.equals(other.nodeConnectorNode))
+ }
+ } else if (!nodeConnectorNode.equals(other.nodeConnectorNode)) {
return false;
+ }
if (nodeConnectorType == null) {
- if (other.nodeConnectorType != null)
+ if (other.nodeConnectorType != null) {
return false;
- } else if (!nodeConnectorType.equals(other.nodeConnectorType))
+ }
+ } else if (!nodeConnectorType.equals(other.nodeConnectorType)) {
return false;
+ }
return true;
}
return fromStringNoNode(parts[0], n);
}
+ /**
+ * return a set of NodeConnector from a collection of string
+ *
+ * @param stringCollection Collection of String object to be parsed as a NodeConnector
+ *
+ * @return the Set of unique NodeConnector objects if parse is successful, empty Set otherwise
+ */
+ public static Set<NodeConnector> fromString(Collection<String> stringCollection) {
+ Set<NodeConnector> set = new HashSet<NodeConnector>();
+ if (stringCollection != null) {
+
+ for (String str : stringCollection) {
+ NodeConnector nodeConnector = NodeConnector.fromString(str);
+ if (nodeConnector != null) {
+ set.add(nodeConnector);
+ }
+ }
+ }
+ return set;
+ }
+
/**
* return a NodeConnector from a string not containing explicitly
* the Node portion which has to be supplied as parameter
return null;
}
} else {
- // Lookup via OSGi service registry
+ //Use INodeConnectorFactory to create a NodeConnector of registered type.
+ //The protocol plugin being used depends on typeStr.
+ INodeConnectorFactory f = (INodeConnectorFactory) ServiceHelper
+ .getGlobalInstance(INodeConnectorFactory.class, new NodeConnector(), "(protocolName="+typeStr+")");
+ if(f==null) {
+ return null;
+ }
+ return f.fromStringNoNode(typeStr, IDStr, n);
}
- return null;
}
}