Topology events related modifications:
 * Added new class TopologyEvent which encapsulates one of the following
   events: Switch event, Port event, Link event, Device event
* Added getID() method  to the new TopologyEvent class, and to each
  of the concrete topology related events.
* Added default constructors, because they are needed for Kryo-related
  deserialization
* Added Kryo registration for the new classes.

Change-Id: I61233b3176a7124bdf9e906da9f5efdc663b3003
diff --git a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/KryoFactory.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/KryoFactory.java
index 5998dcd..0d9f116 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/KryoFactory.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/KryoFactory.java
@@ -1,9 +1,16 @@
 package net.onrc.onos.ofcontroller.util.serializers;
 
+import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.TreeMap;
 
 import net.floodlightcontroller.util.MACAddress;
+import net.onrc.onos.ofcontroller.networkgraph.DeviceEvent;
+import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
+import net.onrc.onos.ofcontroller.networkgraph.PortEvent;
+import net.onrc.onos.ofcontroller.networkgraph.PortEvent.SwitchPort;
+import net.onrc.onos.ofcontroller.networkgraph.SwitchEvent;
+import net.onrc.onos.ofcontroller.networkgraph.TopologyEvent;
 import net.onrc.onos.ofcontroller.topology.TopologyElement;
 import net.onrc.onos.ofcontroller.util.CallerId;
 import net.onrc.onos.ofcontroller.util.DataPath;
@@ -28,7 +35,7 @@
 import net.onrc.onos.ofcontroller.util.IPv6Net;
 import net.onrc.onos.ofcontroller.util.Port;
 import net.onrc.onos.ofcontroller.util.Switch;
-import net.onrc.onos.ofcontroller.util.SwitchPort;
+// import net.onrc.onos.ofcontroller.util.SwitchPort;
 
 import com.esotericsoftware.kryo.Kryo;
 
@@ -145,13 +152,22 @@
 	kryo.register(MACAddress.class);
 	kryo.register(Port.class);
 	kryo.register(Switch.class);
-	kryo.register(SwitchPort.class);
+	// kryo.register(SwitchPort.class);
 
 	// Topology-related classes
 	kryo.register(TopologyElement.class);
 	kryo.register(TopologyElement.Type.class);
 	kryo.register(TreeMap.class);
 
+	// New data model-related classes
+	kryo.register(DeviceEvent.class);
+	kryo.register(InetAddress.class);
+	kryo.register(LinkEvent.class);
+	kryo.register(PortEvent.class);
+	kryo.register(PortEvent.SwitchPort.class);
+	kryo.register(SwitchEvent.class);
+	kryo.register(TopologyEvent.class);
+
 	return kryo;
     }
 }