Deprecate KryoSerializer.
Change-Id: I2403b95c2d7a8af69dff55a0e40a35b223127c85
diff --git a/core/store/serializers/src/main/java/org/onosproject/store/serializers/StoreSerializer.java b/core/store/serializers/src/main/java/org/onosproject/store/serializers/StoreSerializer.java
index e605791..af09b31 100644
--- a/core/store/serializers/src/main/java/org/onosproject/store/serializers/StoreSerializer.java
+++ b/core/store/serializers/src/main/java/org/onosproject/store/serializers/StoreSerializer.java
@@ -19,7 +19,8 @@
import java.io.OutputStream;
import java.nio.ByteBuffer;
-// TODO: To be replaced with SerializationService from IOLoop activity
+import org.onlab.util.KryoNamespace;
+
/**
* Service to serialize Objects into byte array.
*/
@@ -84,4 +85,50 @@
* @param <T> object type
*/
<T> T copy(final T object);
+
+ /**
+ * Creates a new StoreSerializer instance from a KryoNamespace.
+ *
+ * @param ns kryo namespace
+ * @return StoreSerializer instance
+ */
+ static StoreSerializer using(KryoNamespace ns) {
+ return new StoreSerializer() {
+
+ @Override
+ public void encode(Object obj, OutputStream stream) {
+ ns.serialize(obj, stream);
+ }
+
+ @Override
+ public void encode(Object obj, ByteBuffer buffer) {
+ ns.serialize(obj, buffer);
+ }
+
+ @Override
+ public byte[] encode(Object obj) {
+ return ns.serialize(obj);
+ }
+
+ @Override
+ public <T> T decode(InputStream stream) {
+ return ns.deserialize(stream);
+ }
+
+ @Override
+ public <T> T decode(ByteBuffer buffer) {
+ return ns.deserialize(buffer);
+ }
+
+ @Override
+ public <T> T decode(byte[] bytes) {
+ return ns.deserialize(bytes);
+ }
+
+ @Override
+ public <T> T copy(T object) {
+ return ns.run(kryo -> kryo.copy(object));
+ }
+ };
+ }
}