Implement toString()

- add more debug logs

Change-Id: I1541d66f24d2dde0712a4daef081ca1f49951ef8
diff --git a/core/api/src/main/java/org/onosproject/net/newresource/BandwidthCapacity.java b/core/api/src/main/java/org/onosproject/net/newresource/BandwidthCapacity.java
index f7cb3c4..5121181 100644
--- a/core/api/src/main/java/org/onosproject/net/newresource/BandwidthCapacity.java
+++ b/core/api/src/main/java/org/onosproject/net/newresource/BandwidthCapacity.java
@@ -25,6 +25,7 @@
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.annotations.Beta;
+import com.google.common.base.MoreObjects;
 
 /**
  * Configuration to specify maximum available bandwidth resource (Capacity) on a port.
@@ -82,4 +83,11 @@
             return Bandwidth.mbps(v.asDouble());
         }
     }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(this)
+                .add("capacity", capacity())
+                .toString();
+    }
 }
diff --git a/core/api/src/main/java/org/onosproject/store/primitives/ConsistentMapBackedJavaMap.java b/core/api/src/main/java/org/onosproject/store/primitives/ConsistentMapBackedJavaMap.java
index 0b67b62..431e404 100644
--- a/core/api/src/main/java/org/onosproject/store/primitives/ConsistentMapBackedJavaMap.java
+++ b/core/api/src/main/java/org/onosproject/store/primitives/ConsistentMapBackedJavaMap.java
@@ -16,6 +16,7 @@
 package org.onosproject.store.primitives;
 
 import java.util.Collection;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 import java.util.function.BiConsumer;
@@ -149,6 +150,23 @@
     }
 
     @Override
+    public String toString() {
+        // Map like output
+        StringBuilder sb = new StringBuilder();
+        sb.append('{');
+        Iterator<Entry<K, Versioned<V>>> it = backingMap.entrySet().iterator();
+        while (it.hasNext()) {
+            Entry<K, Versioned<V>> entry = it.next();
+            sb.append(entry.getKey()).append('=').append(entry.getValue().value());
+            if (it.hasNext()) {
+                sb.append(',').append(' ');
+            }
+        }
+        sb.append('}');
+        return sb.toString();
+    }
+
+    @Override
     public void forEach(BiConsumer<? super K, ? super V> action) {
         entrySet().forEach(e -> action.accept(e.getKey(), e.getValue()));
     }
diff --git a/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java
index b8541ee..f13481c 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java
@@ -505,11 +505,13 @@
     private <K, V> boolean removeValues(TransactionalMap<K, Set<V>> map, K key, List<? extends V> values) {
         Set<V> oldValues = map.putIfAbsent(key, new LinkedHashSet<>());
         if (oldValues == null) {
+            log.trace("No-Op removing values. key {} did not exist", key);
             return true;
         }
 
         if (values.stream().allMatch(x -> !oldValues.contains(x))) {
             // don't write map because none of the values are stored
+            log.trace("No-Op removing values. key {} did not contain {}", key, values);
             return true;
         }
 
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultConsistentMap.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultConsistentMap.java
index 569fc90..e09b624 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultConsistentMap.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultConsistentMap.java
@@ -189,6 +189,11 @@
         return javaMap;
     }
 
+    @Override
+    public String toString() {
+        return asJavaMap().toString();
+    }
+
     private static <T> T complete(CompletableFuture<T> future) {
         try {
             return future.get(OPERATION_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionContext.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionContext.java
index c8abc04..8cbe99f 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionContext.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionContext.java
@@ -29,6 +29,8 @@
 import org.onosproject.store.service.TransactionContext;
 import org.onosproject.store.service.TransactionalMap;
 
+import com.google.common.base.MoreObjects;
+import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.util.concurrent.Futures;
@@ -114,4 +116,16 @@
             }
         }
     }
+
+    @Override
+    public String toString() {
+        ToStringHelper s = MoreObjects.toStringHelper(this)
+             .add("transactionId", transactionId)
+             .add("isOpen", isOpen);
+
+        txMaps.entrySet().forEach(e -> {
+            s.add(e.getKey(), e.getValue());
+        });
+        return s.toString();
+    }
 }
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 3594adb..dfeb4c1 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
@@ -30,6 +30,7 @@
 
 import static com.google.common.base.Preconditions.*;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
@@ -193,6 +194,15 @@
         return updates;
     }
 
+    // TODO: build expected result Map processing DB updates?
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(this)
+                .add("backingMap", backingMap)
+                .add("updates", prepareDatabaseUpdates())
+                .toString();
+    }
+
     /**
      * Discards all changes made to this transactional map.
      */