Support a inmemory p0 partition encompassing all nodes in the cluster. This will be used by leadership manager and other usecases
that need strong consistency for coordination and not durable storage
Change-Id: I8e590e46d82a3d43cae3157a04be820bb7e1b175
diff --git a/core/api/src/main/java/org/onosproject/store/service/ConsistentMap.java b/core/api/src/main/java/org/onosproject/store/service/ConsistentMap.java
index e0ed4bc..6d19259 100644
--- a/core/api/src/main/java/org/onosproject/store/service/ConsistentMap.java
+++ b/core/api/src/main/java/org/onosproject/store/service/ConsistentMap.java
@@ -17,8 +17,8 @@
package org.onosproject.store.service;
import java.util.Collection;
-import java.util.Set;
import java.util.Map.Entry;
+import java.util.Set;
/**
* A distributed, strongly consistent map.
diff --git a/core/api/src/main/java/org/onosproject/store/service/ConsistentMapBuilder.java b/core/api/src/main/java/org/onosproject/store/service/ConsistentMapBuilder.java
new file mode 100644
index 0000000..6a02f34
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/store/service/ConsistentMapBuilder.java
@@ -0,0 +1,75 @@
+package org.onosproject.store.service;
+
+
+/**
+ * Builder for consistent maps.
+ *
+ * @param <K> type for map key
+ * @param <V> type for map value
+ */
+public interface ConsistentMapBuilder<K, V> {
+
+ /**
+ * Sets the name of the map.
+ * <p>
+ * Each consistent map is identified by a unique map name.
+ * </p>
+ * <p>
+ * Note: This is a mandatory parameter.
+ * </p>
+ *
+ * @param name name of the consistent map
+ * @return this ConsistentMapBuilder
+ */
+ public ConsistentMapBuilder<K, V> withName(String name);
+
+ /**
+ * Sets a serializer that can be used to serialize
+ * both the keys and values inserted into the map. The serializer
+ * builder should be pre-populated with any classes that will be
+ * put into the map.
+ * <p>
+ * Note: This is a mandatory parameter.
+ * </p>
+ *
+ * @param serializer serializer
+ * @return this ConsistentMapBuilder
+ */
+ public ConsistentMapBuilder<K, V> withSerializer(Serializer serializer);
+
+ /**
+ * Disables distribution of map entries across multiple database partitions.
+ * <p>
+ * When partitioning is disabled, the returned map will have a single partition
+ * that spans the entire cluster. Furthermore, the changes made to the map are
+ * ephemeral and do not survive a full cluster restart.
+ * </p>
+ * <p>
+ * Disabling partitions is more appropriate when the returned map is used for
+ * coordination activities such as leader election and not for long term data persistence.
+ * </p>
+ * <p>
+ * Note: By default partitions are enabled and entries in the map are durable.
+ * </p>
+ * @return this ConsistentMapBuilder
+ */
+ public ConsistentMapBuilder<K, V> withPartitionsDisabled();
+
+ /**
+ * Builds an consistent map based on the configuration options
+ * supplied to this builder.
+ *
+ * @return new consistent map
+ * @throws java.lang.RuntimeException if a mandatory parameter is missing
+ */
+ public ConsistentMap<K, V> build();
+
+ /**
+ * Builds an async consistent map based on the configuration options
+ * supplied to this builder.
+ *
+ * @return new async consistent map
+ * @throws java.lang.RuntimeException if a mandatory parameter is missing
+ */
+ public AsyncConsistentMap<K, V> buildAsyncMap();
+}
\ No newline at end of file
diff --git a/core/api/src/main/java/org/onosproject/store/service/StorageService.java b/core/api/src/main/java/org/onosproject/store/service/StorageService.java
index a59e376..c8a394d 100644
--- a/core/api/src/main/java/org/onosproject/store/service/StorageService.java
+++ b/core/api/src/main/java/org/onosproject/store/service/StorageService.java
@@ -29,28 +29,6 @@
public interface StorageService {
/**
- * Creates a ConsistentMap.
- *
- * @param name map name
- * @param serializer serializer to use for serializing keys and values
- * @return consistent map.
- * @param <K> key type
- * @param <V> value type
- */
- <K, V> ConsistentMap<K , V> createConsistentMap(String name, Serializer serializer);
-
- /**
- * Creates a AsyncConsistentMap.
- *
- * @param name map name
- * @param serializer serializer to use for serializing keys and values
- * @return async consistent map
- * @param <K> key type
- * @param <V> value type
- */
- <K, V> AsyncConsistentMap<K , V> createAsyncConsistentMap(String name, Serializer serializer);
-
- /**
* Creates a new transaction context.
*
* @return transaction context
@@ -66,4 +44,12 @@
*/
<K, V> EventuallyConsistentMapBuilder<K, V> eventuallyConsistentMapBuilder();
-}
+ /**
+ * Creates a new EventuallyConsistentMapBuilder.
+ *
+ * @param <K> key type
+ * @param <V> value type
+ * @return builder for an eventually consistent map
+ */
+ <K, V> ConsistentMapBuilder<K, V> consistentMapBuilder();
+}
\ No newline at end of file