Added distributed transaction support through a two phase commit protocol

Change-Id: I85d64234a24823fee8b3c2ea830abbb6867dad38
diff --git a/core/api/src/main/java/org/onosproject/store/service/TransactionContext.java b/core/api/src/main/java/org/onosproject/store/service/TransactionContext.java
index b404bae..94942e2 100644
--- a/core/api/src/main/java/org/onosproject/store/service/TransactionContext.java
+++ b/core/api/src/main/java/org/onosproject/store/service/TransactionContext.java
@@ -19,21 +19,31 @@
 /**
  * Provides a context for transactional operations.
  * <p>
- * A transaction context provides a boundary within which transactions
- * are run. It also is a place where all modifications made within a transaction
- * are cached until the point when the transaction commits or aborts. It thus ensures
- * isolation of work happening with in the transaction boundary.
- * <p>
  * A transaction context is a vehicle for grouping operations into a unit with the
  * properties of atomicity, isolation, and durability. Transactions also provide the
  * ability to maintain an application's invariants or integrity constraints,
  * supporting the property of consistency. Together these properties are known as ACID.
+ * <p>
+ * A transaction context provides a boundary within which transactions
+ * are run. It also is a place where all modifications made within a transaction
+ * are cached until the point when the transaction commits or aborts. It thus ensures
+ * isolation of work happening with in the transaction boundary. Within a transaction
+ * context isolation level is REPEATABLE_READS i.e. only data that is committed can be read.
+ * The only uncommitted data that can be read is the data modified by the current transaction.
  */
 public interface TransactionContext {
 
     /**
+     * Returns the unique transactionId.
+     *
+     * @return transaction id
+     */
+    long transactionId();
+
+    /**
      * Returns if this transaction context is open.
-     * @return true if open, false otherwise.
+     *
+     * @return true if open, false otherwise
      */
     boolean isOpen();
 
@@ -45,22 +55,24 @@
     /**
      * Commits a transaction that was previously started thereby making its changes permanent
      * and externally visible.
-     * @throws TransactionException if transaction fails to commit.
+     *
+     * @throws TransactionException if transaction fails to commit
      */
     void commit();
 
     /**
-     * Rolls back the current transaction, discarding all its changes.
+     * Aborts any changes made in this transaction context and discarding all locally cached updates.
      */
-    void rollback();
+    void abort();
 
     /**
-     * Creates a new transactional map.
+     * Returns a transactional map data structure with the specified name.
+     *
      * @param <K> key type
      * @param <V> value type
-     * @param mapName name of the transactional map.
-     * @param serializer serializer to use for encoding/decoding keys and vaulues.
-     * @return new Transactional Map.
+     * @param mapName name of the transactional map
+     * @param serializer serializer to use for encoding/decoding keys and values of the map
+     * @return Transactional Map
      */
-    <K, V> TransactionalMap<K, V> createTransactionalMap(String mapName, Serializer serializer);
+    <K, V> TransactionalMap<K, V> getTransactionalMap(String mapName, Serializer serializer);
 }