Performance improvements
 - Fast path of transactions updating a single key.
 - Bug fix in StoragePartitionClient where we were always creating a CachingMap

Change-Id: Ide117fba34fd12a9ff4aabd5fb7a21952bae672b
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionalMap.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionalMap.java
index 1aaf297..2d80970 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionalMap.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionalMap.java
@@ -180,8 +180,13 @@
     }
 
     @Override
-    public boolean hasPendingUpdates() {
-        return updates().size() > 0;
+    public CompletableFuture<Boolean> prepareAndCommit() {
+        return backingMap.prepareAndCommit(new MapTransaction<>(txContext.transactionId(), updates()));
+    }
+
+    @Override
+    public int totalUpdates() {
+        return updates().size();
     }
 
     protected List<MapUpdate<K, V>> updates() {