Added null-pointer checks.
The second check fixes a failing unit test.
Note: the first null-pointer check was observed by reading
the code, and might not be a complete solution.
Code reviewed and tested by: Ping Ping
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
index dedf607..b084be6 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
@@ -332,7 +332,7 @@
IPortObject portObject1 = ope.searchPort(HexString.toHexString(
onosDevice.getSwitchDPID()), onosDevice.getSwitchPort());
- if (portObject1.getLinkedPorts().iterator().hasNext()) {
+ if ((portObject1 != null) && portObject1.getLinkedPorts().iterator().hasNext()) {
log.debug("stop adding OnosDevice: {} due to there is a link to: {}",
onosDevice, portObject1.getLinkedPorts().iterator().next().getPortId());
return;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java
index 7c8541d..a9088de 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java
@@ -111,7 +111,12 @@
private void deleteDeviceOnPort(Long dpid, Short number)
{
IPortObject srcPortObject = op.searchPort(HexString.toHexString(dpid), number);
- if (srcPortObject.getDevices().iterator().hasNext()) {
+ if (srcPortObject == null)
+ return;
+ Iterable<IDeviceObject> devices = srcPortObject.getDevices();
+ if (devices == null)
+ return;
+ if (devices.iterator().hasNext()) {
for (IDeviceObject deviceObject: srcPortObject.getDevices()) {
srcPortObject.removeDevice(deviceObject);
log.debug("delete Device "+ deviceObject.getMACAddress() +