Improve KryoNamespaces to better support Objectives and lambda functions

Change-Id: Iaeb10d8e237e4c2bca972e97f65bb0fc1cf338f9
diff --git a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
index f4d15b6..f57421f 100644
--- a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
+++ b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.store.serializers;
 
+import com.esotericsoftware.kryo.serializers.ClosureSerializer;
 import com.google.common.collect.HashMultiset;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
@@ -159,10 +160,12 @@
 import org.onosproject.net.flowobjective.DefaultFilteringObjective;
 import org.onosproject.net.flowobjective.DefaultForwardingObjective;
 import org.onosproject.net.flowobjective.DefaultNextObjective;
+import org.onosproject.net.flowobjective.DefaultObjectiveContext;
 import org.onosproject.net.flowobjective.FilteringObjective;
 import org.onosproject.net.flowobjective.ForwardingObjective;
 import org.onosproject.net.flowobjective.NextObjective;
 import org.onosproject.net.flowobjective.Objective;
+import org.onosproject.net.flowobjective.ObjectiveError;
 import org.onosproject.net.host.DefaultHostDescription;
 import org.onosproject.net.host.HostDescription;
 import org.onosproject.net.intent.ConnectivityIntent;
@@ -272,6 +275,7 @@
 import org.onosproject.ui.model.topo.UiTopoLayoutId;
 import org.onosproject.upgrade.Upgrade;
 
+import java.lang.invoke.SerializedLambda;
 import java.net.URI;
 import java.time.Duration;
 import java.util.ArrayList;
@@ -351,6 +355,11 @@
             .register(char[].class)
             .register(String[].class)
             .register(boolean[].class)
+            // For serializing lambda functions
+            .register(Object[].class)
+            .register(Class.class)
+            .register(SerializedLambda.class)
+            .register(new ClosureSerializer(), ClosureSerializer.Closure.class)
             .build("BASIC");
 
     /**
@@ -589,7 +598,9 @@
                     FilteringObjective.Type.class,
                     DefaultNextObjective.class,
                     NextObjective.Type.class,
-                    Objective.Operation.class
+                    Objective.Operation.class,
+                    DefaultObjectiveContext.class,
+                    ObjectiveError.class
             )
             .register(new DefaultApplicationIdSerializer(), DefaultApplicationId.class)
             .register(new UriSerializer(), URI.class)