From bca5e9084dccefb91da8b600b1fe6b44413580c2 Mon Sep 17 00:00:00 2001
From: Rob Adams <rob.adams@bigswitch.com>
Date: Mon, 30 Apr 2012 13:50:15 -0700
Subject: [PATCH] Fix null pointer exception in device manager and add last
 seen to device serializer

---
 .../internal/DeviceManagerImpl.java           | 25 +++++++++++--------
 .../devicemanager/web/DeviceSerializer.java   |  2 ++
 2 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
index dcc1b4783..895bab089 100755
--- a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
@@ -267,20 +267,23 @@ public class DeviceManagerImpl implements
             else {
                 long e1ts = e1t.getTime();
                 long e2ts = e2t.getTime();
-                if (topology.
-                        isBroadcastDomainPort(e1.getSwitchDPID(), 
-                                              e1.getSwitchPort().
+                if (e1.getSwitchDPID() != null &&
+                    e2.getSwitchPort() != null) {
+                    if (topology.
+                            isBroadcastDomainPort(e1.getSwitchDPID(), 
+                                                  e1.getSwitchPort().
                                                   shortValue())) {
-                    e1ts -= NBD_TO_BD_TIMEDIFF_MS;
-                }
-                if (topology.
-                        isBroadcastDomainPort(e2.getSwitchDPID(), 
-                                              e2.getSwitchPort().
+                        e1ts -= NBD_TO_BD_TIMEDIFF_MS;
+                    }
+                    if (topology.
+                            isBroadcastDomainPort(e2.getSwitchDPID(), 
+                                                  e2.getSwitchPort().
                                                   shortValue())) {
-                    e2ts -= NBD_TO_BD_TIMEDIFF_MS;
+                        e2ts -= NBD_TO_BD_TIMEDIFF_MS;
+                    }
+
+                    r = Long.valueOf(e1ts).compareTo(e2ts);
                 }
-                
-                r = Long.valueOf(e1ts).compareTo(e2ts);
             }
 
             return r;
diff --git a/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceSerializer.java b/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceSerializer.java
index fe93761e2..e34b0b40d 100644
--- a/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceSerializer.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceSerializer.java
@@ -64,6 +64,8 @@ public class DeviceSerializer extends JsonSerializer<Device> {
         }
         jGen.writeEndArray();
 
+        jGen.writeNumberField("lastSeen", device.getLastSeen().getTime());
+        
         jGen.writeEndObject();
     }
 
-- 
GitLab