Ignore event originating from itself

- Hand registryService to NetworkGraphImpl
- Add OriginID to TopologyEvent. (May need to come up with better name)
- Set OriginID on Add/Put event
 - TBD: Cannot add OriginID on remove event

Change-Id: I89b793a48265f2617483651a33ebca1863df7e1f
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
index 176e793..8b6faeb 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
@@ -19,6 +19,7 @@
 import net.onrc.onos.ofcontroller.networkgraph.PortEvent.SwitchPort;
 import net.onrc.onos.ofcontroller.util.EventEntry;
 import net.onrc.onos.ofcontroller.util.Dpid;
+import net.onrc.onos.registry.controller.IControllerRegistryService;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -48,10 +49,12 @@
     private EventHandler eventHandler = new EventHandler();
 
     private final NetworkGraphDatastore datastore;
+    private final IControllerRegistryService registryService;
 
-    public NetworkGraphImpl() {
+    public NetworkGraphImpl(IControllerRegistryService registryService) {
 	super();
 	datastore = new NetworkGraphDatastore(this);
+	this.registryService = registryService;
     }
 
     /**
@@ -119,7 +122,10 @@
 	 */
 	private void processEvents(Collection<EventEntry<TopologyEvent>> events) {
 	    for (EventEntry<TopologyEvent> event : events) {
-		// TODO ignore event triggered by myself
+		if (event.eventData().getOriginID().equals(registryService.getControllerId())) {
+		    // ignore event triggered by myself
+		    continue;
+		}
 		TopologyEvent topologyEvent = event.eventData();
 		switch (event.eventType()) {
 		case ENTRY_ADD:
@@ -227,7 +233,7 @@
 			putSwitch(switchEvent);
 			// Send out notification
 			TopologyEvent topologyEvent =
-			    new TopologyEvent(switchEvent);
+			    new TopologyEvent(switchEvent, registryService.getControllerId());
 			eventChannel.addEntry(topologyEvent.getID(),
 					      topologyEvent);
 		}
@@ -252,7 +258,7 @@
 			putPort(portEvent);
 			// Send out notification
 			TopologyEvent topologyEvent =
-			    new TopologyEvent(portEvent);
+			    new TopologyEvent(portEvent, registryService.getControllerId());
 			eventChannel.addEntry(topologyEvent.getID(),
 					      topologyEvent);
 		}
@@ -277,7 +283,7 @@
 			putLink(linkEvent);
 			// Send out notification
 			TopologyEvent topologyEvent =
-			    new TopologyEvent(linkEvent);
+			    new TopologyEvent(linkEvent, registryService.getControllerId());
 			eventChannel.addEntry(topologyEvent.getID(),
 					      topologyEvent);
 		}
@@ -305,7 +311,7 @@
 //			putDevice(deviceEvent);
 			// Send out notification
 			TopologyEvent topologyEvent =
-			    new TopologyEvent(deviceEvent);
+			    new TopologyEvent(deviceEvent, registryService.getControllerId());
 			eventChannel.addEntry(topologyEvent.getID(),
 					      topologyEvent);
 		}