Updating MatchAction objects with no-arg constructors and registering them with Kryo

Change-Id: I3512b2e99624c3f496d786ea99133b385a35094e
diff --git a/src/main/java/net/onrc/onos/core/matchaction/MatchAction.java b/src/main/java/net/onrc/onos/core/matchaction/MatchAction.java
index 5f7d9fb..fdf1fc7 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/MatchAction.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/MatchAction.java
@@ -32,6 +32,16 @@
     }
 
     /**
+     * no-arg constructor for Kryo.
+     */
+    protected MatchAction() {
+        id = null;
+        port = null;
+        match = null;
+        actions = null;
+    }
+
+    /**
      * Constructor. TEMPORARY
      *
      * @param id ID for this MatchAction object
diff --git a/src/main/java/net/onrc/onos/core/matchaction/MatchActionId.java b/src/main/java/net/onrc/onos/core/matchaction/MatchActionId.java
index 0bddffa..bea973e 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/MatchActionId.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/MatchActionId.java
@@ -20,6 +20,13 @@
     }
 
     /**
+     * no-arg constructor for Kryo.
+     */
+    protected MatchActionId() {
+        value = -1;
+    }
+
+    /**
      * Returns the MatchActionId as a long.
      *
      * @return MatchAction ID
diff --git a/src/main/java/net/onrc/onos/core/matchaction/MatchActionOperations.java b/src/main/java/net/onrc/onos/core/matchaction/MatchActionOperations.java
index e87fcda..73cff28 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/MatchActionOperations.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/MatchActionOperations.java
@@ -1,11 +1,11 @@
 package net.onrc.onos.core.matchaction;
 
-import net.onrc.onos.api.batchoperation.BatchOperation;
+import static com.google.common.base.Preconditions.checkNotNull;
 
 import java.util.HashSet;
 import java.util.Set;
 
-import static com.google.common.base.Preconditions.checkNotNull;
+import net.onrc.onos.api.batchoperation.BatchOperation;
 
 /**
  * The MatchActionOperations class holds a list of MatchActionOperationEntry
@@ -39,6 +39,14 @@
     }
 
     /**
+     * no-arg constructor for Kryo.
+     */
+    protected MatchActionOperations() {
+        id = null;
+        dependencies = null;
+    }
+
+    /**
      * Gets the identifier for the Match Action Operations object.
      *
      * @return identifier for the Opertions object
diff --git a/src/main/java/net/onrc/onos/core/matchaction/MatchActionOperationsId.java b/src/main/java/net/onrc/onos/core/matchaction/MatchActionOperationsId.java
index e346732..93f2ec7 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/MatchActionOperationsId.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/MatchActionOperationsId.java
@@ -19,6 +19,13 @@
     }
 
     /**
+     * no-arg instructor for Kryo.
+     */
+    protected MatchActionOperationsId() {
+        id = -1;
+    }
+
+    /**
      * Gets the identifier for the Operations object.
      *
      * @return Operations object identifier as a string
diff --git a/src/main/java/net/onrc/onos/core/matchaction/SwitchResult.java b/src/main/java/net/onrc/onos/core/matchaction/SwitchResult.java
index 6faaa0d..b5db2e8 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/SwitchResult.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/SwitchResult.java
@@ -7,7 +7,7 @@
     private Status status;
     private MatchActionOperationsId matchSetId;
 
-    protected enum Status {
+    public enum Status {
         SUCCESS,
         FAILURE,
         UNKNOWN
@@ -19,6 +19,13 @@
         this.matchSetId = match;
     }
 
+    /**
+     * no-arg constructor for Kryo.
+     */
+    protected SwitchResult() {
+
+    }
+
     protected void setStatus(Status newStatus) {
         this.status = newStatus;
     }
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 fbb7999..134f0d7 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
@@ -47,6 +47,14 @@
 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.MatchAction;
+import net.onrc.onos.core.matchaction.MatchActionId;
+import net.onrc.onos.core.matchaction.MatchActionOperationEntry;
+import net.onrc.onos.core.matchaction.MatchActionOperations;
+import net.onrc.onos.core.matchaction.MatchActionOperationsId;
+import net.onrc.onos.core.matchaction.MatchActionOperationsState;
+import net.onrc.onos.core.matchaction.SwitchResult;
+import net.onrc.onos.core.matchaction.SwitchResultList;
 import net.onrc.onos.core.matchaction.action.ModifyDstMacAction;
 import net.onrc.onos.core.matchaction.action.ModifySrcMacAction;
 import net.onrc.onos.core.matchaction.action.OutputAction;
@@ -267,10 +275,20 @@
         kryo.register(SingleDstTreeFlow.class);
 
         // New match action related classes
+        kryo.register(MatchAction.class);
+        kryo.register(MatchActionId.class);
         kryo.register(PacketMatch.class);
         kryo.register(OutputAction.class);
         kryo.register(ModifyDstMacAction.class);
         kryo.register(ModifySrcMacAction.class);
+        kryo.register(MatchActionOperations.class);
+        kryo.register(MatchActionOperations.Operator.class);
+        kryo.register(MatchActionOperationsId.class);
+        kryo.register(MatchActionOperationsState.class);
+        kryo.register(MatchActionOperationEntry.class);
+        kryo.register(SwitchResultList.class);
+        kryo.register(SwitchResult.class);
+        kryo.register(SwitchResult.Status.class);
 
         // Host-related classes
         kryo.register(HashSet.class);