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