Deprecate redundant StoreSerializer in favor of Serializer
Change-Id: I54a25747ed56d62acc418c01d7a8be1c40d90c26
diff --git a/core/api/src/main/java/org/onosproject/store/service/Serializer.java b/core/api/src/main/java/org/onosproject/store/service/Serializer.java
index f10273f..4f94a50 100644
--- a/core/api/src/main/java/org/onosproject/store/service/Serializer.java
+++ b/core/api/src/main/java/org/onosproject/store/service/Serializer.java
@@ -44,6 +44,14 @@
<T> T decode(byte[] bytes);
/**
+ * Copies the specified object.
+ * @param object object to copy.
+ * @param <T> object type
+ * @return copied object
+ */
+ <T> T copy(T object);
+
+ /**
* Creates a new Serializer instance from a KryoNamespace.
*
* @param kryo kryo namespace
@@ -61,6 +69,11 @@
public <T> T decode(byte[] bytes) {
return kryo.deserialize(bytes);
}
+
+ @Override
+ public <T> T copy(T object) {
+ return kryo.run(k -> k.copy(object));
+ }
};
}
@@ -97,6 +110,11 @@
public <T> T decode(byte[] bytes) {
return namespace.deserialize(bytes);
}
+
+ @Override
+ public <T> T copy(T object) {
+ return namespace.run(kryo -> kryo.copy(object));
+ }
};
}
diff --git a/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/DistributedClusterStore.java b/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/DistributedClusterStore.java
index e0edfe8..34b2f0b 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/DistributedClusterStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/DistributedClusterStore.java
@@ -46,7 +46,7 @@
import org.onosproject.store.cluster.messaging.Endpoint;
import org.onosproject.store.cluster.messaging.MessagingService;
import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.serializers.StoreSerializer;
+import org.onosproject.store.service.Serializer;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
@@ -94,7 +94,7 @@
label = "the value of Phi threshold to detect accrual failure")
private int phiFailureThreshold = DEFAULT_PHI_FAILURE_THRESHOLD;
- private static final StoreSerializer SERIALIZER = StoreSerializer.using(
+ private static final Serializer SERIALIZER = Serializer.using(
KryoNamespace.newBuilder()
.register(KryoNamespaces.API)
.nextId(KryoNamespaces.BEGIN_USER_CUSTOM_ID)
diff --git a/core/store/dist/src/main/java/org/onosproject/store/device/impl/ECDeviceStore.java b/core/store/dist/src/main/java/org/onosproject/store/device/impl/ECDeviceStore.java
index 15a28fc..680f0a0 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/device/impl/ECDeviceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/device/impl/ECDeviceStore.java
@@ -63,7 +63,6 @@
import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
import org.onosproject.store.impl.MastershipBasedTimestamp;
import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.serializers.StoreSerializer;
import org.onosproject.store.serializers.custom.DistributedStoreSerializers;
import org.onosproject.store.service.DistributedSet;
import org.onosproject.store.service.EventuallyConsistentMap;
@@ -150,7 +149,7 @@
private final SetEventListener<DeviceId> deviceStatusTracker =
new InternalDeviceStatusTracker();
- protected static final StoreSerializer SERIALIZER = StoreSerializer.using(
+ protected static final Serializer SERIALIZER = Serializer.using(
KryoNamespace.newBuilder()
.register(DistributedStoreSerializers.STORE_COMMON)
.nextId(DistributedStoreSerializers.STORE_CUSTOM_BEGIN)
diff --git a/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java b/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
index 6b03009..c72da5f 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
@@ -78,12 +78,12 @@
import org.onosproject.store.impl.MastershipBasedTimestamp;
import org.onosproject.store.impl.Timestamped;
import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.serializers.StoreSerializer;
import org.onosproject.store.serializers.custom.DistributedStoreSerializers;
import org.onosproject.store.service.EventuallyConsistentMap;
import org.onosproject.store.service.EventuallyConsistentMapEvent;
import org.onosproject.store.service.EventuallyConsistentMapListener;
import org.onosproject.store.service.MultiValuedTimestamp;
+import org.onosproject.store.service.Serializer;
import org.onosproject.store.service.StorageService;
import org.onosproject.store.service.WallClockTimestamp;
import org.slf4j.Logger;
@@ -173,7 +173,7 @@
private static final Timestamp DEFAULT_TIMESTAMP = new MastershipBasedTimestamp(0, 0);
- protected static final StoreSerializer SERIALIZER = StoreSerializer.using(KryoNamespace.newBuilder()
+ protected static final Serializer SERIALIZER = Serializer.using(KryoNamespace.newBuilder()
.register(DistributedStoreSerializers.STORE_COMMON)
.nextId(DistributedStoreSerializers.STORE_CUSTOM_BEGIN)
.register(new InternalDeviceEventSerializer(), InternalDeviceEvent.class)
diff --git a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java
index 59d476b..0e3c8ea 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java
@@ -752,6 +752,11 @@
public <T> T decode(byte[] bytes) {
return serializer.decode(bytes);
}
+
+ @Override
+ public <T> T copy(T object) {
+ return serializer.copy(object);
+ }
})
.build());
} else {
@@ -775,6 +780,11 @@
public <T> T decode(byte[] bytes) {
return serializer.decode(bytes);
}
+
+ @Override
+ public <T> T copy(T object) {
+ return serializer.copy(object);
+ }
})
.build());
} else {
diff --git a/core/store/dist/src/main/java/org/onosproject/store/link/impl/ECLinkStore.java b/core/store/dist/src/main/java/org/onosproject/store/link/impl/ECLinkStore.java
index 43edb5a..21f8152 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/link/impl/ECLinkStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/link/impl/ECLinkStore.java
@@ -61,11 +61,11 @@
import org.onosproject.store.cluster.messaging.MessageSubject;
import org.onosproject.store.impl.MastershipBasedTimestamp;
import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.serializers.StoreSerializer;
import org.onosproject.store.serializers.custom.DistributedStoreSerializers;
import org.onosproject.store.service.EventuallyConsistentMap;
import org.onosproject.store.service.EventuallyConsistentMapEvent;
import org.onosproject.store.service.EventuallyConsistentMapListener;
+import org.onosproject.store.service.Serializer;
import org.onosproject.store.service.StorageService;
import org.slf4j.Logger;
@@ -153,7 +153,7 @@
protected LinkDiscoveryMode linkDiscoveryMode = LinkDiscoveryMode.STRICT;
- protected static final StoreSerializer SERIALIZER = StoreSerializer.using(
+ protected static final Serializer SERIALIZER = Serializer.using(
KryoNamespace.newBuilder()
.register(DistributedStoreSerializers.STORE_COMMON)
.nextId(DistributedStoreSerializers.STORE_CUSTOM_BEGIN)
diff --git a/core/store/dist/src/main/java/org/onosproject/store/mastership/impl/ConsistentDeviceMastershipStore.java b/core/store/dist/src/main/java/org/onosproject/store/mastership/impl/ConsistentDeviceMastershipStore.java
index f801e17..136df56 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/mastership/impl/ConsistentDeviceMastershipStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/mastership/impl/ConsistentDeviceMastershipStore.java
@@ -59,7 +59,7 @@
import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
import org.onosproject.store.cluster.messaging.MessageSubject;
import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.serializers.StoreSerializer;
+import org.onosproject.store.service.Serializer;
import org.slf4j.Logger;
import com.google.common.base.Objects;
@@ -108,7 +108,7 @@
private static final String DEVICE_ID_NULL = "Device ID cannot be null";
private static final int WAIT_BEFORE_MASTERSHIP_HANDOFF_MILLIS = 3000;
- public static final StoreSerializer SERIALIZER = StoreSerializer.using(
+ public static final Serializer SERIALIZER = Serializer.using(
KryoNamespace.newBuilder()
.register(KryoNamespaces.API)
.register(MastershipRole.class)
diff --git a/core/store/dist/src/main/java/org/onosproject/store/packet/impl/DistributedPacketStore.java b/core/store/dist/src/main/java/org/onosproject/store/packet/impl/DistributedPacketStore.java
index fd621ef..5fdea05 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/packet/impl/DistributedPacketStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/packet/impl/DistributedPacketStore.java
@@ -43,7 +43,6 @@
import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
import org.onosproject.store.cluster.messaging.MessageSubject;
import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.serializers.StoreSerializer;
import org.onosproject.store.service.ConsistentMap;
import org.onosproject.store.service.Serializer;
import org.onosproject.store.service.StorageService;
@@ -100,7 +99,7 @@
private static final MessageSubject PACKET_OUT_SUBJECT =
new MessageSubject("packet-out");
- private static final StoreSerializer SERIALIZER = StoreSerializer.using(KryoNamespaces.API);
+ private static final Serializer SERIALIZER = Serializer.using(KryoNamespaces.API);
private ExecutorService messageHandlingExecutor;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/statistic/impl/DistributedFlowStatisticStore.java b/core/store/dist/src/main/java/org/onosproject/store/statistic/impl/DistributedFlowStatisticStore.java
index 92df2b2..f35ee0d 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/statistic/impl/DistributedFlowStatisticStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/statistic/impl/DistributedFlowStatisticStore.java
@@ -42,7 +42,7 @@
import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
import org.onosproject.store.cluster.messaging.MessageSubject;
import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.serializers.StoreSerializer;
+import org.onosproject.store.service.Serializer;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
@@ -97,7 +97,7 @@
public static final MessageSubject GET_CURRENT = new MessageSubject("peer-return-current");
public static final MessageSubject GET_PREVIOUS = new MessageSubject("peer-return-previous");
- protected static final StoreSerializer SERIALIZER = StoreSerializer.using(KryoNamespaces.API);
+ protected static final Serializer SERIALIZER = Serializer.using(KryoNamespaces.API);
private NodeId local;
private ExecutorService messageHandlingExecutor;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/statistic/impl/DistributedStatisticStore.java b/core/store/dist/src/main/java/org/onosproject/store/statistic/impl/DistributedStatisticStore.java
index 1f38f9c..522183e 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/statistic/impl/DistributedStatisticStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/statistic/impl/DistributedStatisticStore.java
@@ -41,7 +41,7 @@
import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
import org.onosproject.store.cluster.messaging.MessageSubject;
import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.serializers.StoreSerializer;
+import org.onosproject.store.service.Serializer;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
@@ -101,7 +101,7 @@
private Map<ConnectPoint, Set<FlowEntry>> current =
new ConcurrentHashMap<>();
- protected static final StoreSerializer SERIALIZER = StoreSerializer.using(KryoNamespaces.API);
+ protected static final Serializer SERIALIZER = Serializer.using(KryoNamespaces.API);
private ExecutorService messageHandlingExecutor;
diff --git a/core/store/persistence/src/test/java/org/onosproject/persistence/impl/PersistentMapTest.java b/core/store/persistence/src/test/java/org/onosproject/persistence/impl/PersistentMapTest.java
index 69b21df..7dc9fb9 100644
--- a/core/store/persistence/src/test/java/org/onosproject/persistence/impl/PersistentMapTest.java
+++ b/core/store/persistence/src/test/java/org/onosproject/persistence/impl/PersistentMapTest.java
@@ -74,6 +74,11 @@
return (T) Integer.valueOf(num);
}
+
+ @Override
+ public <T> T copy(T object) {
+ return decode(encode(object));
+ }
}, fakeDB, "map");
}
diff --git a/core/store/persistence/src/test/java/org/onosproject/persistence/impl/PersistentSetTest.java b/core/store/persistence/src/test/java/org/onosproject/persistence/impl/PersistentSetTest.java
index 99827da..2c8c92f 100644
--- a/core/store/persistence/src/test/java/org/onosproject/persistence/impl/PersistentSetTest.java
+++ b/core/store/persistence/src/test/java/org/onosproject/persistence/impl/PersistentSetTest.java
@@ -72,6 +72,11 @@
return (T) Integer.valueOf(num);
}
+
+ @Override
+ public <T> T copy(T object) {
+ return decode(encode(object));
+ }
}, fakeDB, "set");
}
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/EventuallyConsistentMapImpl.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/EventuallyConsistentMapImpl.java
index 0992268..bed19d5 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/EventuallyConsistentMapImpl.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/EventuallyConsistentMapImpl.java
@@ -34,11 +34,11 @@
import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
import org.onosproject.store.cluster.messaging.MessageSubject;
import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.serializers.StoreSerializer;
import org.onosproject.store.service.DistributedPrimitive;
import org.onosproject.store.service.EventuallyConsistentMap;
import org.onosproject.store.service.EventuallyConsistentMapEvent;
import org.onosproject.store.service.EventuallyConsistentMapListener;
+import org.onosproject.store.service.Serializer;
import org.onosproject.store.service.WallClockTimestamp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -88,7 +88,7 @@
private final ClusterService clusterService;
private final ClusterCommunicationService clusterCommunicator;
- private final StoreSerializer serializer;
+ private final Serializer serializer;
private final NodeId localNodeId;
private final PersistenceService persistenceService;
@@ -287,8 +287,8 @@
this.bootstrap();
}
- private StoreSerializer createSerializer(KryoNamespace ns) {
- return StoreSerializer.using(KryoNamespace.newBuilder()
+ private Serializer createSerializer(KryoNamespace ns) {
+ return Serializer.using(KryoNamespace.newBuilder()
.register(ns)
// not so robust way to avoid collision with other
// user supplied registrations
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 0d346a2..108d6cf 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
@@ -24,7 +24,10 @@
/**
* Service to serialize Objects into byte array.
+ *
+ * @deprecated since 1.11 ("Loon")
*/
+@Deprecated
public interface StoreSerializer extends Serializer {
/**
diff --git a/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/ConsistentVirtualDeviceMastershipStore.java b/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/ConsistentVirtualDeviceMastershipStore.java
index 7c1c01c..3d1c376 100644
--- a/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/ConsistentVirtualDeviceMastershipStore.java
+++ b/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/ConsistentVirtualDeviceMastershipStore.java
@@ -41,7 +41,7 @@
import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
import org.onosproject.store.cluster.messaging.MessageSubject;
import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.serializers.StoreSerializer;
+import org.onosproject.store.service.Serializer;
import org.slf4j.Logger;
import java.util.List;
@@ -107,7 +107,7 @@
private static final String DEVICE_ID_NULL = "Device ID cannot be null";
private static final int WAIT_BEFORE_MASTERSHIP_HANDOFF_MILLIS = 3000;
- public static final StoreSerializer SERIALIZER = StoreSerializer.using(
+ public static final Serializer SERIALIZER = Serializer.using(
KryoNamespace.newBuilder()
.register(KryoNamespaces.API)
.register(MastershipRole.class)
diff --git a/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualPacketStore.java b/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualPacketStore.java
index 20d82c7..002cbd4 100644
--- a/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualPacketStore.java
+++ b/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualPacketStore.java
@@ -44,7 +44,6 @@
import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
import org.onosproject.store.cluster.messaging.MessageSubject;
import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.serializers.StoreSerializer;
import org.onosproject.store.service.ConsistentMap;
import org.onosproject.store.service.Serializer;
import org.onosproject.store.service.StorageService;
@@ -103,7 +102,7 @@
private static final MessageSubject PACKET_OUT_SUBJECT =
new MessageSubject("virtual-packet-out");
- private static final StoreSerializer SERIALIZER = StoreSerializer.using(KryoNamespaces.API);
+ private static final Serializer SERIALIZER = Serializer.using(KryoNamespaces.API);
private ExecutorService messageHandlingExecutor;