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.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
*
* @return The node Type for this Node object
*/
- @XmlAttribute(name = "type")
+ @XmlElement(name = "type")
public String getType() {
return this.nodeType;
}
} else if (typeStr.equals(NodeIDType.PRODUCTION)) {
this.nodeID = IDStr;
} else {
- // We need to lookup via OSGi service registry for an
- // handler for this
+ //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;
+ }
}
}
*
* @return The nodeID in string format
*/
- @XmlAttribute(name = "id")
+ @XmlElement(name = "id")
public String getNodeIDString() {
if (this.nodeType.equals(NodeIDType.OPENFLOW)) {
return HexEncode.longToHexString((Long) this.nodeID);
return null;
}
} else {
- // We need to lookup via OSGi service registry for an
- // handler for this
+ //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);
}
- return null;
}
}