Kryo related fixes

- KryoNamespace to allow control over registration id

Change-Id: Idc2a0e27a09916657c725ee97e4366109144cc66
diff --git a/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoSerializer.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoSerializer.java
index da37848..4554f8c 100644
--- a/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoSerializer.java
+++ b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoSerializer.java
@@ -15,10 +15,14 @@
  */
 package org.onlab.onos.store.serializers;
 
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.nio.ByteBuffer;
 
 import org.onlab.util.KryoNamespace;
 
+import com.google.common.base.MoreObjects;
+
 /**
  * StoreSerializer implementation using Kryo.
  */
@@ -36,8 +40,8 @@
     protected void setupKryoPool() {
         serializerPool = KryoNamespace.newBuilder()
                 .register(KryoNamespaces.API)
-                .build()
-                .populate(1);
+                .nextId(KryoNamespaces.BEGIN_USER_CUSTOM_ID)
+                .build();
     }
 
     @Override
@@ -63,4 +67,20 @@
         return serializerPool.deserialize(buffer);
     }
 
+    @Override
+    public void encode(Object obj, OutputStream stream) {
+        serializerPool.serialize(obj, stream);
+    }
+
+    @Override
+    public <T> T decode(InputStream stream) {
+        return serializerPool.deserialize(stream);
+    }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(getClass())
+                .add("serializerPool", serializerPool)
+                .toString();
+    }
 }