Fix potential NPE
Change-Id: I88d759be0f397d23d0980a343413d24ba4dd2fb4
diff --git a/ecord/co/src/main/java/org/onosproject/ecord/co/BigSwitchDeviceProvider.java b/ecord/co/src/main/java/org/onosproject/ecord/co/BigSwitchDeviceProvider.java
index 0d9e5c3..f54a6d2 100644
--- a/ecord/co/src/main/java/org/onosproject/ecord/co/BigSwitchDeviceProvider.java
+++ b/ecord/co/src/main/java/org/onosproject/ecord/co/BigSwitchDeviceProvider.java
@@ -559,6 +559,9 @@
ConnectPoint src = new ConnectPoint(srcDev, srcPort);
// receiver-side: some assembly required.
PortNumber dstPort = bigSwitchService.getPort(context.inPacket().receivedFrom());
+ if (dstPort == null) {
+ return;
+ }
ConnectPoint dst = new ConnectPoint(bigSwitch.id(), dstPort);
LOG.debug("recvd link: {}->{}", src, dst);
diff --git a/ecord/co/src/main/java/org/onosproject/ecord/co/BigSwitchManager.java b/ecord/co/src/main/java/org/onosproject/ecord/co/BigSwitchManager.java
index 5a4f5d8..ee849c6 100644
--- a/ecord/co/src/main/java/org/onosproject/ecord/co/BigSwitchManager.java
+++ b/ecord/co/src/main/java/org/onosproject/ecord/co/BigSwitchManager.java
@@ -46,6 +46,7 @@
import org.onosproject.store.service.ConsistentMap;
import org.onosproject.store.service.Serializer;
import org.onosproject.store.service.StorageService;
+import org.onosproject.store.service.Versioned;
import org.slf4j.Logger;
import java.util.List;
@@ -128,7 +129,12 @@
@Override
public PortNumber getPort(ConnectPoint port) {
// XXX error-check and seriously think about a better method definition.
- return PortNumber.portNumber(portMap.get(port).value());
+ Versioned<Long> portNo = portMap.get(port);
+ if (Versioned.valueOrNull(portNo) != null) {
+ return PortNumber.portNumber(portNo.value());
+ } else {
+ return null;
+ }
}
/**
@@ -149,7 +155,11 @@
// add annotation about underlying physical connect-point
annot.set(REALIZED_BY, String.format("%s/%s", cp.deviceId().toString(),
cp.port().toString()));
- PortNumber portNumber = PortNumber.portNumber(portMap.get(cp).value());
+ Long vPortNo = Versioned.valueOrNull(portMap.get(cp));
+ if (vPortNo == null) {
+ return null;
+ }
+ PortNumber portNumber = PortNumber.portNumber(vPortNo);
// FIXME remove the code specific to optical port types
switch (p.type()) {
@@ -196,7 +206,7 @@
// Only listen for real devices
Device d = deviceService.getDevice(event.subject().deviceId());
- return !d.type().equals(Device.Type.VIRTUAL);
+ return d != null && !d.type().equals(Device.Type.VIRTUAL);
}
@Override