Register flow-manager and match-action related classes to KryoFactory.

- The following classes are now registered and available on KryoFactory:
 -- FlowId
 -- Path
 -- Tree
 -- FlowLink
 -- OpticalPathFlow
 -- PacketPathFlow
 -- SingleDstTreeFlow
 -- PacketMatch
 -- OutputAction
 -- ModifyDstMacAction
 -- ModifyDstMacAction
- This task is a preperation for ONOS-1736 and ONOS-1842.

Change-Id: If438f5175e68672e0ce02f56681c35c3be87f0bc
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/ModifyDstMacAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/ModifyDstMacAction.java
index 491d986..c39cebe 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/action/ModifyDstMacAction.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/ModifyDstMacAction.java
@@ -15,6 +15,14 @@
     private final MACAddress dstMac;
 
     /**
+     * Default constructor for Kryo deserialization.
+     */
+    @Deprecated
+    protected ModifyDstMacAction() {
+        dstMac = null;
+    }
+
+    /**
      * Constructor.
      *
      * @param dstMac destination MAC address after the modification
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/ModifySrcMacAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/ModifySrcMacAction.java
index 21ecf32..e679e29 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/action/ModifySrcMacAction.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/ModifySrcMacAction.java
@@ -15,6 +15,14 @@
     private final MACAddress srcMac;
 
     /**
+     * Default constructor for Kryo deserialization.
+     */
+    @Deprecated
+    protected ModifySrcMacAction() {
+        srcMac = null;
+    }
+
+    /**
      * Constructor.
      *
      * @param srcMac source MAC address after the modification
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/OutputAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/OutputAction.java
index 2453640..10b5aaf 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/action/OutputAction.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/OutputAction.java
@@ -15,6 +15,14 @@
     private final PortNumber portNumber;
 
     /**
+     * Default constructor for Kryo deserialization.
+     */
+    @Deprecated
+    protected OutputAction() {
+        portNumber = null;
+    }
+
+    /**
      * Constructor.
      *
      * @param dstPort The port number of the target output port.
diff --git a/src/main/java/net/onrc/onos/core/matchaction/match/PacketMatch.java b/src/main/java/net/onrc/onos/core/matchaction/match/PacketMatch.java
index c9b1f9d..c49c3d8 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/match/PacketMatch.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/match/PacketMatch.java
@@ -26,6 +26,21 @@
     private final Short dstTcpPort;
 
     /**
+     * Default constructor for Kryo deserialization.
+     */
+    @Deprecated
+    protected PacketMatch() {
+        srcMac = null;
+        dstMac = null;
+        etherType = null;
+        srcIp = null;
+        dstIp = null;
+        ipProto = null;
+        srcTcpPort = null;
+        dstTcpPort = null;
+    }
+
+    /**
      * Package private constructor.
      * <p>
      * This class should be instantiated by the builder.
diff --git a/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java b/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java
index 4341e4a..5fec5b2 100644
--- a/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java
+++ b/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java
@@ -16,6 +16,12 @@
 import net.floodlightcontroller.core.IFloodlightProviderService.Role;
 import net.floodlightcontroller.util.MACAddress;
 import net.onrc.onos.api.batchoperation.BatchOperationEntry;
+import net.onrc.onos.api.flowmanager.FlowId;
+import net.onrc.onos.api.flowmanager.FlowLink;
+import net.onrc.onos.api.flowmanager.OpticalPathFlow;
+import net.onrc.onos.api.flowmanager.PacketPathFlow;
+import net.onrc.onos.api.flowmanager.SingleDstTreeFlow;
+import net.onrc.onos.api.flowmanager.Tree;
 import net.onrc.onos.api.newintent.AbstractIntent;
 import net.onrc.onos.api.newintent.ConnectivityIntent;
 import net.onrc.onos.api.newintent.IntentEvent;
@@ -38,6 +44,10 @@
 import net.onrc.onos.core.intent.PathIntent;
 import net.onrc.onos.core.intent.ShortestPathIntent;
 import net.onrc.onos.core.intent.runtime.IntentStateList;
+import net.onrc.onos.core.matchaction.action.ModifyDstMacAction;
+import net.onrc.onos.core.matchaction.action.ModifySrcMacAction;
+import net.onrc.onos.core.matchaction.action.OutputAction;
+import net.onrc.onos.core.matchaction.match.PacketMatch;
 import net.onrc.onos.core.newintent.IntentCompilationResult;
 import net.onrc.onos.core.newintent.PathFlowIntent;
 import net.onrc.onos.core.newintent.SingleDstTreeFlowIntent;
@@ -240,6 +250,21 @@
         kryo.register(TestIntent.class);
         kryo.register(TestSubclassIntent.class);
 
+        // New flow manager related classes
+        kryo.register(FlowId.class);
+        kryo.register(net.onrc.onos.api.flowmanager.Path.class);
+        kryo.register(Tree.class);
+        kryo.register(FlowLink.class);
+        kryo.register(OpticalPathFlow.class);
+        kryo.register(PacketPathFlow.class);
+        kryo.register(SingleDstTreeFlow.class);
+
+        // New match action related classes
+        kryo.register(PacketMatch.class);
+        kryo.register(OutputAction.class);
+        kryo.register(ModifyDstMacAction.class);
+        kryo.register(ModifySrcMacAction.class);
+
         // Host-related classes
         kryo.register(HashSet.class);
         kryo.register(Host.class);