Fixed the handling of removeDevice events to ensure devices are removed from the database
diff --git a/src/main/java/net/onrc/onos/graph/GraphDBOperation.java b/src/main/java/net/onrc/onos/graph/GraphDBOperation.java
index 489eb5e..bfd9046 100644
--- a/src/main/java/net/onrc/onos/graph/GraphDBOperation.java
+++ b/src/main/java/net/onrc/onos/graph/GraphDBOperation.java
@@ -266,6 +266,11 @@
 		}
 		return ipv4Vertex;
 	}
+	
+	public void removeIpv4Address(IIpv4Address ipv4Address) {
+		FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+		fg.removeVertex(ipv4Address.asVertex());
+	}
 
 	/**
 	 * Create and return a flow path object.
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
index 256008a..ed6d85f 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
@@ -114,6 +114,10 @@
 		IDeviceObject dev;
 		try {
 			if ((dev = ope.searchDevice(device.getMACAddressString())) != null) {
+				for (IIpv4Address ipv4AddressVertex : dev.getIpv4Addresses()) {
+					ope.removeIpv4Address(ipv4AddressVertex);
+				}
+				
              	ope.removeDevice(dev);
              	ope.commit();
             	log.error("DeviceStorage:removeDevice mac:{} done", device.getMACAddressString());
diff --git a/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java b/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
index 14cffd8..c1f66d9 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
@@ -273,6 +273,7 @@
 	@Override
 	public void deviceRemoved(IDevice device) {
 		// TODO Auto-generated method stub
+		devStore.removeDevice(device);
 	}
 
 	@Override