Refactor transaction support in preparation for migration to latest APIs
 - Added a explicit transaction id type
 - cli command now just returns the identifiers of in-progress transactions
 - Removed redriveTransactions until a better alternative is provided
 - Removed DatabaseUpdate and replaced its usage with MapUpdate

Change-Id: Ic4a14967072068834510cd8459fd2a6790e456ef
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultDatabaseState.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultDatabaseState.java
index 45869ff..d6d4ab4 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultDatabaseState.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultDatabaseState.java
@@ -26,8 +26,8 @@
 import net.kuujo.copycat.state.StateContext;
 
 import org.onlab.util.Match;
-import org.onosproject.store.service.DatabaseUpdate;
-import org.onosproject.store.service.Transaction;
+import org.onosproject.store.primitives.TransactionId;
+import org.onosproject.store.primitives.resources.impl.MapUpdate;
 import org.onosproject.store.service.Versioned;
 
 import java.util.Arrays;
@@ -278,7 +278,7 @@
         return queues.computeIfAbsent(queueName, name -> new LinkedList<>());
     }
 
-    private boolean isUpdatePossible(DatabaseUpdate update) {
+    private boolean isUpdatePossible(MapUpdate<String, byte[]> update) {
         Versioned<byte[]> existingEntry = mapGet(update.mapName(), update.key());
         switch (update.type()) {
         case PUT:
@@ -299,7 +299,7 @@
         }
     }
 
-    private void doProvisionalUpdate(DatabaseUpdate update, long transactionId) {
+    private void doProvisionalUpdate(MapUpdate<String, byte[]> update, TransactionId transactionId) {
         Map<String, Update> lockMap = getLockMap(update.mapName());
         switch (update.type()) {
         case PUT:
@@ -318,7 +318,8 @@
         }
     }
 
-    private UpdateResult<String, byte[]> commitProvisionalUpdate(DatabaseUpdate update, long transactionId) {
+    private UpdateResult<String, byte[]> commitProvisionalUpdate(
+            MapUpdate<String, byte[]> update, TransactionId transactionId) {
         String mapName = update.mapName();
         String key = update.key();
         Update provisionalUpdate = getLockMap(mapName).get(key);
@@ -330,7 +331,7 @@
         return mapUpdate(mapName, key, Match.any(), Match.any(), provisionalUpdate.value()).value();
     }
 
-    private void undoProvisionalUpdate(DatabaseUpdate update, long transactionId) {
+    private void undoProvisionalUpdate(MapUpdate<String, byte[]> update, TransactionId transactionId) {
         String mapName = update.mapName();
         String key = update.key();
         Update provisionalUpdate = getLockMap(mapName).get(key);
@@ -342,7 +343,7 @@
         }
     }
 
-    private boolean isLockedByAnotherTransaction(String mapName, String key, long transactionId) {
+    private boolean isLockedByAnotherTransaction(String mapName, String key, TransactionId transactionId) {
         Update update = getLockMap(mapName).get(key);
         return update != null && !Objects.equal(transactionId, update.transactionId());
     }
@@ -356,15 +357,15 @@
     }
 
     private class Update {
-        private final long transactionId;
+        private final TransactionId transactionId;
         private final byte[] value;
 
-        public Update(long txId, byte[] value) {
+        public Update(TransactionId txId, byte[] value) {
             this.transactionId = txId;
             this.value = value;
         }
 
-        public long transactionId() {
+        public TransactionId transactionId() {
             return this.transactionId;
         }