* Fix a bug when processing reordered topology events.
* Add debug statements when dispatching network graph events to the listeners.

Change-Id: I5599fd2f9921c9dc4edee6d43ebc2fc815829f9d
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java
index 7fe7955..315cee7 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java
@@ -387,6 +387,27 @@
 	    return;		// No events to dispatch
 	}
 
+	//
+	// Debug statements
+	// TODO: Those statements should be removed in the future
+	//
+	for (SwitchEvent switchEvent : apiAddedSwitchEvents)
+	    log.debug("Dispatch Network Graph Event: ADDED {}", switchEvent);
+	for (SwitchEvent switchEvent : apiRemovedSwitchEvents)
+	    log.debug("Dispatch Network Graph Event: REMOVED {}", switchEvent);
+	for (PortEvent portEvent : apiAddedPortEvents)
+	    log.debug("Dispatch Network Graph Event: ADDED {}", portEvent);
+	for (PortEvent portEvent : apiRemovedPortEvents)
+	    log.debug("Dispatch Network Graph Event: REMOVED {}", portEvent);
+	for (LinkEvent linkEvent : apiAddedLinkEvents)
+	    log.debug("Dispatch Network Graph Event: ADDED {}", linkEvent);
+	for (LinkEvent linkEvent : apiRemovedLinkEvents)
+	    log.debug("Dispatch Network Graph Event: REMOVED {}", linkEvent);
+	for (DeviceEvent deviceEvent : apiAddedDeviceEvents)
+	    log.debug("Dispatch Network Graph Event: ADDED {}", deviceEvent);
+	for (DeviceEvent deviceEvent : apiRemovedDeviceEvents)
+	    log.debug("Dispatch Network Graph Event: REMOVED {}", deviceEvent);
+
 	// Deliver the events
 	for (INetworkGraphListener listener : this.networkGraphListeners) {
 	    // TODO: Should copy before handing them over to listener?
@@ -433,16 +454,13 @@
 	//  - Apply reordered Link and Device Events if Switches or Ports
 	//    were added
 	//
-	Map<ByteBuffer, PortEvent> portEvents = reorderedAddedPortEvents;
-	Map<ByteBuffer, LinkEvent> linkEvents = reorderedAddedLinkEvents;
-	Map<ByteBuffer, DeviceEvent> deviceEvents = reorderedAddedDeviceEvents;
-	reorderedAddedPortEvents = new HashMap<>();
-	reorderedAddedLinkEvents = new HashMap<>();
-	reorderedAddedDeviceEvents = new HashMap<>();
+
 	//
 	// Apply reordered Port Events if Switches were added
 	//
 	if (hasAddedSwitchEvents) {
+	    Map<ByteBuffer, PortEvent> portEvents = reorderedAddedPortEvents;
+	    reorderedAddedPortEvents = new HashMap<>();
 	    for (PortEvent portEvent : portEvents.values())
 		addPort(portEvent);
 	}
@@ -450,8 +468,13 @@
 	// Apply reordered Link and Device Events if Switches or Ports
 	// were added.
 	//
+	Map<ByteBuffer, LinkEvent> linkEvents = reorderedAddedLinkEvents;
+	reorderedAddedLinkEvents = new HashMap<>();
 	for (LinkEvent linkEvent : linkEvents.values())
 	    addLink(linkEvent);
+	//
+	Map<ByteBuffer, DeviceEvent> deviceEvents = reorderedAddedDeviceEvents;
+	reorderedAddedDeviceEvents = new HashMap<>();
 	for (DeviceEvent deviceEvent : deviceEvents.values())
 	    addDevice(deviceEvent);
     }