NPE Fix: Adding a null pointer check to avoid null pointer exception. Need to monitor and debug why it is NULL in the first place

Change-Id: I07445756e5a95e1a7c380bae321ece61b180f1b1
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/GenericIpHandler.java b/src/main/java/net/onrc/onos/apps/segmentrouting/GenericIpHandler.java
index 87b9cd4..6030eb2 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/GenericIpHandler.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/GenericIpHandler.java
@@ -103,7 +103,8 @@
         // If we do not know the host, then we cannot set the forwarding rule
         net.onrc.onos.core.topology.Host host = mutableTopology.getHostByMac(MACAddress
                 .valueOf(destinationMacAddress));
-        if (host == null) {
+        if ((host == null) || (host.getAttachmentPoints()==null)) {
+            log.error("addRouteToHost: Invalid Host object");
             return;
         }
 
diff --git a/src/main/java/net/onrc/onos/core/topology/HostImpl.java b/src/main/java/net/onrc/onos/core/topology/HostImpl.java
index 1023806..f9d31a6 100644
--- a/src/main/java/net/onrc/onos/core/topology/HostImpl.java
+++ b/src/main/java/net/onrc/onos/core/topology/HostImpl.java
@@ -49,6 +49,9 @@
 
     @Override
     public Iterable<Port> getAttachmentPoints() {
+        if (getHostData() == null) {
+            return null;
+        }
         List<Port> ports = new ArrayList<>();
         final BaseTopologyAdaptor topo = new BaseTopologyAdaptor(topology);
         for (SwitchPort swp : getHostData().getAttachmentPoints()) {
@@ -62,7 +65,7 @@
 
     @Override
     public long getLastSeenTime() {
-        return this.topology.getHostData(id).getLastSeenTime();
+        return (getHostData() != null) ? getHostData().getLastSeenTime() : 0;
     }
 
     @Override