Added a builder for TransactionContexts

Change-Id: I22b467ed0b1e691f3df4ccc5e414b8f4c3bf18f4
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 91cc273..b836ce8 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
@@ -63,9 +63,9 @@
     AtomicCounterBuilder atomicCounterBuilder();
 
     /**
-     * Creates a new transaction context.
+     * Creates a new transaction context builder.
      *
-     * @return transaction context
+     * @return a builder for a transaction context.
      */
-    TransactionContext createTransactionContext();
+    TransactionContextBuilder transactionContextBuilder();
 }
diff --git a/core/api/src/main/java/org/onosproject/store/service/TransactionContextBuilder.java b/core/api/src/main/java/org/onosproject/store/service/TransactionContextBuilder.java
new file mode 100644
index 0000000..4ae6b0f
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/store/service/TransactionContextBuilder.java
@@ -0,0 +1,32 @@
+package org.onosproject.store.service;
+
+/**
+ * Interface definition for a transaction context builder.
+ */
+public interface TransactionContextBuilder {
+
+    /**
+     * 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>
+     * Note: By default, partitions are enabled. This feature is intended to
+     * simplify debugging.
+     * </p>
+     *
+     * @return this TransactionalContextBuilder
+     */
+    public TransactionContextBuilder withPartitionsDisabled();
+
+    /**
+     * Builds a TransactionContext based on configuration options supplied to this
+     * builder.
+     *
+     * @return a new TransactionalContext
+     * @throws java.lang.RuntimeException if a mandatory parameter is missing
+     */
+    public TransactionContext build();
+}