[ONOS-7551] Support primitive revisions for upgrades
Change-Id: Ib56e10f06ab9abedd176cdd84add6cbf4e3d4c50
diff --git a/core/api/src/main/java/org/onosproject/store/primitives/DistributedPrimitiveCreator.java b/core/api/src/main/java/org/onosproject/store/primitives/DistributedPrimitiveCreator.java
index 1e68bdb..5fa88a7 100644
--- a/core/api/src/main/java/org/onosproject/store/primitives/DistributedPrimitiveCreator.java
+++ b/core/api/src/main/java/org/onosproject/store/primitives/DistributedPrimitiveCreator.java
@@ -29,9 +29,21 @@
import org.onosproject.store.service.AsyncDistributedSet;
import org.onosproject.store.service.AsyncDocumentTree;
import org.onosproject.store.service.AsyncLeaderElector;
+import org.onosproject.store.service.AtomicCounterMapOptions;
+import org.onosproject.store.service.AtomicCounterOptions;
+import org.onosproject.store.service.AtomicIdGeneratorOptions;
+import org.onosproject.store.service.AtomicValueOptions;
+import org.onosproject.store.service.ConsistentMapOptions;
+import org.onosproject.store.service.ConsistentMultimapOptions;
+import org.onosproject.store.service.ConsistentTreeMapOptions;
+import org.onosproject.store.service.DistributedLockOptions;
+import org.onosproject.store.service.DistributedSetOptions;
+import org.onosproject.store.service.DocumentTreeOptions;
+import org.onosproject.store.service.LeaderElectorOptions;
import org.onosproject.store.service.Ordering;
import org.onosproject.store.service.Serializer;
import org.onosproject.store.service.WorkQueue;
+import org.onosproject.store.service.WorkQueueOptions;
import static org.onosproject.store.service.DistributedPrimitive.DEFAULT_OPERATION_TIMEOUT_MILLIS;
@@ -48,8 +60,23 @@
* @param <K> key type
* @param <V> value type
* @return map
+ * @deprecated in Nightingale Release (1.13)
*/
- <K, V> AsyncConsistentMap<K, V> newAsyncConsistentMap(String name, Serializer serializer);
+ @Deprecated
+ default <K, V> AsyncConsistentMap<K, V> newAsyncConsistentMap(String name, Serializer serializer) {
+ return newAsyncConsistentMap((ConsistentMapOptions) new ConsistentMapOptions() {
+ }.withName(name).withSerializer(serializer));
+ }
+
+ /**
+ * Creates a new {@code AsyncConsistentMap}.
+ *
+ * @param options map options
+ * @param <K> key type
+ * @param <V> value type
+ * @return map
+ */
+ <K, V> AsyncConsistentMap<K, V> newAsyncConsistentMap(ConsistentMapOptions options);
/**
* Creates a new {@code AsyncConsistentTreeMap}.
@@ -58,8 +85,22 @@
* @param serializer serializer to use for serializing/deserializing map entries
* @param <V> value type
* @return distributedTreeMap
+ * @deprecated in Nightingale Release (1.13)
*/
- <V> AsyncConsistentTreeMap<V> newAsyncConsistentTreeMap(String name, Serializer serializer);
+ @Deprecated
+ default <V> AsyncConsistentTreeMap<V> newAsyncConsistentTreeMap(String name, Serializer serializer) {
+ return newAsyncConsistentTreeMap((ConsistentTreeMapOptions) new ConsistentTreeMapOptions() {
+ }.withName(name).withSerializer(serializer));
+ }
+
+ /**
+ * Creates a new {@code AsyncConsistentTreeMap}.
+ *
+ * @param options tree map options
+ * @param <V> value type
+ * @return distributedTreeMap
+ */
+ <V> AsyncConsistentTreeMap<V> newAsyncConsistentTreeMap(ConsistentTreeMapOptions options);
/**
* Creates a new set backed {@code AsyncConsistentMultimap}.
@@ -69,8 +110,23 @@
* @param <K> key type
* @param <V> value type
* @return set backed distributedMultimap
+ * @deprecated in Nightingale Release (1.13)
*/
- <K, V> AsyncConsistentMultimap<K, V> newAsyncConsistentSetMultimap(String name, Serializer serializer);
+ @Deprecated
+ default <K, V> AsyncConsistentMultimap<K, V> newAsyncConsistentSetMultimap(String name, Serializer serializer) {
+ return newAsyncConsistentSetMultimap((ConsistentMultimapOptions) new ConsistentMultimapOptions() {
+ }.withName(name).withSerializer(serializer));
+ }
+
+ /**
+ * Creates a new set backed {@code AsyncConsistentMultimap}.
+ *
+ * @param options multimap options
+ * @param <K> key type
+ * @param <V> value type
+ * @return set backed distributedMultimap
+ */
+ <K, V> AsyncConsistentMultimap<K, V> newAsyncConsistentSetMultimap(ConsistentMultimapOptions options);
/**
* Creates a new {@code AsyncAtomicCounterMap}.
@@ -79,24 +135,64 @@
* @param serializer serializer to use for serializing/deserializing keys
* @param <K> key type
* @return atomic counter map
+ * @deprecated in Nightingale Release (1.13)
*/
- <K> AsyncAtomicCounterMap<K> newAsyncAtomicCounterMap(String name, Serializer serializer);
+ @Deprecated
+ default <K> AsyncAtomicCounterMap<K> newAsyncAtomicCounterMap(String name, Serializer serializer) {
+ return newAsyncAtomicCounterMap((AtomicCounterMapOptions) new AtomicCounterMapOptions() {
+ }.withName(name).withSerializer(serializer));
+ }
+
+ /**
+ * Creates a new {@code AsyncAtomicCounterMap}.
+ *
+ * @param options counter map options
+ * @param <K> key type
+ * @return atomic counter map
+ */
+ <K> AsyncAtomicCounterMap<K> newAsyncAtomicCounterMap(AtomicCounterMapOptions options);
/**
* Creates a new {@code AsyncAtomicCounter}.
*
* @param name counter name
* @return counter
+ * @deprecated in Nightingale Release (1.13)
*/
- AsyncAtomicCounter newAsyncCounter(String name);
+ @Deprecated
+ default AsyncAtomicCounter newAsyncCounter(String name) {
+ return newAsyncCounter((AtomicCounterOptions) new AtomicCounterOptions() {
+ }.withName(name));
+ }
+
+ /**
+ * Creates a new {@code AsyncAtomicCounter}.
+ *
+ * @param options counter options
+ * @return counter
+ */
+ AsyncAtomicCounter newAsyncCounter(AtomicCounterOptions options);
/**
* Creates a new {@code AsyncAtomixIdGenerator}.
*
* @param name ID generator name
* @return ID generator
+ * @deprecated in Nightingale Release (1.13)
*/
- AsyncAtomicIdGenerator newAsyncIdGenerator(String name);
+ @Deprecated
+ default AsyncAtomicIdGenerator newAsyncIdGenerator(String name) {
+ return newAsyncIdGenerator((AtomicIdGeneratorOptions) new AtomicIdGeneratorOptions() {
+ }.withName(name));
+ }
+
+ /**
+ * Creates a new {@code AsyncAtomixIdGenerator}.
+ *
+ * @param options ID generator options
+ * @return ID generator
+ */
+ AsyncAtomicIdGenerator newAsyncIdGenerator(AtomicIdGeneratorOptions options);
/**
* Creates a new {@code AsyncAtomicValue}.
@@ -105,8 +201,22 @@
* @param serializer serializer to use for serializing/deserializing value type
* @param <V> value type
* @return value
+ * @deprecated in Nightingale Release (1.13)
*/
- <V> AsyncAtomicValue<V> newAsyncAtomicValue(String name, Serializer serializer);
+ @Deprecated
+ default <V> AsyncAtomicValue<V> newAsyncAtomicValue(String name, Serializer serializer) {
+ return newAsyncAtomicValue((AtomicValueOptions) new AtomicValueOptions() {
+ }.withName(name).withSerializer(serializer));
+ }
+
+ /**
+ * Creates a new {@code AsyncAtomicValue}.
+ *
+ * @param options value options
+ * @param <V> value type
+ * @return value
+ */
+ <V> AsyncAtomicValue<V> newAsyncAtomicValue(AtomicValueOptions options);
/**
* Creates a new {@code AsyncDistributedSet}.
@@ -115,23 +225,52 @@
* @param serializer serializer to use for serializing/deserializing set entries
* @param <E> set entry type
* @return set
+ * @deprecated in Nightingale Release (1.13)
*/
- <E> AsyncDistributedSet<E> newAsyncDistributedSet(String name, Serializer serializer);
+ @Deprecated
+ default <E> AsyncDistributedSet<E> newAsyncDistributedSet(String name, Serializer serializer) {
+ return newAsyncDistributedSet((DistributedSetOptions) new DistributedSetOptions() {
+ }.withName(name).withSerializer(serializer));
+ }
+
+ /**
+ * Creates a new {@code AsyncDistributedSet}.
+ *
+ * @param options set options
+ * @param <E> set entry type
+ * @return set
+ */
+ <E> AsyncDistributedSet<E> newAsyncDistributedSet(DistributedSetOptions options);
/**
* Creates a new {@code AsyncDistributedLock}.
*
* @param name lock name
* @return lock
+ * @deprecated in Nightingale Release (1.13)
*/
- AsyncDistributedLock newAsyncDistributedLock(String name);
+ @Deprecated
+ default AsyncDistributedLock newAsyncDistributedLock(String name) {
+ return newAsyncDistributedLock((DistributedLockOptions) new DistributedLockOptions() {
+ }.withName(name));
+ }
+
+ /**
+ * Creates a new {@code AsyncDistributedLock}.
+ *
+ * @param options lock options
+ * @return lock
+ */
+ AsyncDistributedLock newAsyncDistributedLock(DistributedLockOptions options);
/**
* Creates a new {@code AsyncLeaderElector}.
*
* @param name leader elector name
* @return leader elector
+ * @deprecated in Nightingale Release (1.13)
*/
+ @Deprecated
default AsyncLeaderElector newAsyncLeaderElector(String name) {
return newAsyncLeaderElector(name, DEFAULT_OPERATION_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
}
@@ -143,8 +282,24 @@
* @param electionTimeout leader election timeout
* @param timeUnit leader election timeout time unit
* @return leader elector
+ * @deprecated in Nightingale Release (1.13)
*/
- AsyncLeaderElector newAsyncLeaderElector(String name, long electionTimeout, TimeUnit timeUnit);
+ @Deprecated
+ default AsyncLeaderElector newAsyncLeaderElector(String name, long electionTimeout, TimeUnit timeUnit) {
+ LeaderElectorOptions options = new LeaderElectorOptions() {
+ };
+ options.withName(name);
+ options.withElectionTimeout(electionTimeout, timeUnit);
+ return newAsyncLeaderElector(options);
+ }
+
+ /**
+ * Creates a new {@code AsyncLeaderElector}.
+ *
+ * @param options leader elector options
+ * @return leader elector
+ */
+ AsyncLeaderElector newAsyncLeaderElector(LeaderElectorOptions options);
/**
* Creates a new {@code WorkQueue}.
@@ -153,8 +308,22 @@
* @param name work queue name
* @param serializer serializer
* @return work queue
+ * @deprecated in Nightingale Release (1.13)
*/
- <E> WorkQueue<E> newWorkQueue(String name, Serializer serializer);
+ @Deprecated
+ default <E> WorkQueue<E> newWorkQueue(String name, Serializer serializer) {
+ return newWorkQueue((WorkQueueOptions) new WorkQueueOptions() {
+ }.withName(name).withSerializer(serializer));
+ }
+
+ /**
+ * Creates a new {@code WorkQueue}.
+ *
+ * @param <E> work element type
+ * @param options work queue options
+ * @return work queue
+ */
+ <E> WorkQueue<E> newWorkQueue(WorkQueueOptions options);
/**
* Creates a new {@code AsyncDocumentTree}.
@@ -163,7 +332,9 @@
* @param name tree name
* @param serializer serializer
* @return document tree
+ * @deprecated in Nightingale Release (1.13)
*/
+ @Deprecated
default <V> AsyncDocumentTree<V> newAsyncDocumentTree(String name, Serializer serializer) {
return newAsyncDocumentTree(name, serializer, Ordering.NATURAL);
}
@@ -176,8 +347,26 @@
* @param serializer serializer
* @param ordering tree node ordering
* @return document tree
+ * @deprecated in Nightingale Release (1.13)
*/
- <V> AsyncDocumentTree<V> newAsyncDocumentTree(String name, Serializer serializer, Ordering ordering);
+ @Deprecated
+ default <V> AsyncDocumentTree<V> newAsyncDocumentTree(String name, Serializer serializer, Ordering ordering) {
+ DocumentTreeOptions options = new DocumentTreeOptions() {
+ };
+ options.withName(name);
+ options.withSerializer(serializer);
+ options.withOrdering(ordering);
+ return newAsyncDocumentTree(options);
+ }
+
+ /**
+ * Creates a new {@code AsyncDocumentTree}.
+ *
+ * @param <V> document tree node value type
+ * @param options tree options
+ * @return document tree
+ */
+ <V> AsyncDocumentTree<V> newAsyncDocumentTree(DocumentTreeOptions options);
/**
* Returns the names of all created {@code AsyncConsistentMap} instances.