Register Intent-related classes to KryoFactory and fix bugs

Change-Id: I591c8788dda31c658a6d985d394653524d884c5d
diff --git a/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java b/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java
index 56758cb..26afe51 100644
--- a/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java
+++ b/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java
@@ -31,7 +31,7 @@
 	@Override
 	public Collection<Class<? extends IFloodlightService>> getModuleServices() {
 		Collection<Class<? extends IFloodlightService>> l = new ArrayList<>(1);
-		l.add(PathCalcRuntime.class);
+		l.add(IPathCalcRuntimeService.class);
 		return l;
 	}
 
@@ -54,13 +54,13 @@
 	public void init(FloodlightModuleContext context) throws FloodlightModuleException {
 		datagridService = context.getServiceImpl(IDatagridService.class);
 		networkGraphService = context.getServiceImpl(INetworkGraphService.class); 
-		runtime = new PathCalcRuntime(networkGraphService.getNetworkGraph());
-		highLevelIntents = new IntentMap();
-		pathIntents = new PathIntentMap(networkGraphService.getNetworkGraph());
 	}
 
 	@Override
 	public void startUp(FloodlightModuleContext context) {
+		highLevelIntents = new IntentMap();
+		runtime = new PathCalcRuntime(networkGraphService.getNetworkGraph());
+		pathIntents = new PathIntentMap(networkGraphService.getNetworkGraph());
 		eventChannel = datagridService.createChannel(
 				EVENT_CHANNEL_NAME,
 				byte[].class,
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 0d9f116..840ece5 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
@@ -5,6 +5,12 @@
 import java.util.TreeMap;
 
 import net.floodlightcontroller.util.MACAddress;
+import net.onrc.onos.intent.ConstrainedShortestPathIntent;
+import net.onrc.onos.intent.Intent;
+import net.onrc.onos.intent.IntentOperation;
+import net.onrc.onos.intent.IntentOperationList;
+import net.onrc.onos.intent.PathIntent;
+import net.onrc.onos.intent.ShortestPathIntent;
 import net.onrc.onos.ofcontroller.networkgraph.DeviceEvent;
 import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
 import net.onrc.onos.ofcontroller.networkgraph.PortEvent;
@@ -37,6 +43,7 @@
 import net.onrc.onos.ofcontroller.util.Switch;
 // import net.onrc.onos.ofcontroller.util.SwitchPort;
 
+
 import com.esotericsoftware.kryo.Kryo;
 
 /**
@@ -168,6 +175,16 @@
 	kryo.register(SwitchEvent.class);
 	kryo.register(TopologyEvent.class);
 
+	// Intent-related classes
+	kryo.register(IntentOperationList.class);
+	kryo.register(IntentOperation.class);
+	kryo.register(PathIntent.class);
+	kryo.register(ShortestPathIntent.class);
+	kryo.register(ConstrainedShortestPathIntent.class);
+	kryo.register(Intent.IntentState.class);
+	kryo.register(long[].class);
+	kryo.register(IntentOperation.Operator.class);
+
 	return kryo;
     }
 }