Refactor: Simplify register() and unregister() in transactional stores

Change-Id: Ie39391774d54c209ec2b8ce61adc76d5ba4efa7e
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentResourceStore.java
index e367281..29ef2f3 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentResourceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentResourceStore.java
@@ -358,14 +358,6 @@
                 .map(x -> (ContinuousResource) x)
                 .collect(Collectors.toList());
 
-        // short-circuit decision avoiding unnecessary distributed map operations
-        if (continuousValues.isEmpty()) {
-            return discreteTxStore.register(key, discreteValues);
-        }
-        if (discreteValues.isEmpty()) {
-            return continuousTxStore.register(key, continuousValues);
-        }
-
         return discreteTxStore.register(key, discreteValues)
                 && continuousTxStore.register(key, continuousValues);
     }
@@ -395,14 +387,6 @@
                 .map(x -> (ContinuousResource) x)
                 .collect(Collectors.toList());
 
-        // short-circuit decision avoiding unnecessary distributed map operations
-        if (continuousValues.isEmpty()) {
-            return discreteTxStore.unregister(key, discreteValues);
-        }
-        if (discreteValues.isEmpty()) {
-            return continuousTxStore.unregister(key, continuousValues);
-        }
-
         return discreteTxStore.unregister(key, discreteValues)
                 && continuousTxStore.unregister(key, continuousValues);
     }
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalContinuousResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalContinuousResourceStore.java
index 0813f15..7a630fa 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalContinuousResourceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalContinuousResourceStore.java
@@ -67,6 +67,11 @@
     }
 
     boolean register(DiscreteResourceId key, List<ContinuousResource> values) {
+        // short-circuit: receiving empty resource is regarded as success
+        if (values.isEmpty()) {
+            return true;
+        }
+
         Set<ContinuousResource> requested = new LinkedHashSet<>(values);
         Set<ContinuousResource> oldValues = childMap.putIfAbsent(key, requested);
         if (oldValues == null) {
@@ -95,6 +100,11 @@
     }
 
     boolean unregister(DiscreteResourceId key, List<ContinuousResource> values) {
+        // short-circuit: receiving empty resource is regarded as success
+        if (values.isEmpty()) {
+            return true;
+        }
+
         Set<ContinuousResource> oldValues = childMap.putIfAbsent(key, new LinkedHashSet<>());
         if (oldValues == null) {
             log.trace("No-Op removing values. key {} did not exist", key);
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceStore.java
index 72841fb..3c99da9 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceStore.java
@@ -63,6 +63,11 @@
     }
 
     boolean register(DiscreteResourceId key, List<DiscreteResource> values) {
+        // short-circuit: receiving empty resource is regarded as success
+        if (values.isEmpty()) {
+            return true;
+        }
+
         Set<DiscreteResource> requested = new LinkedHashSet<>(values);
         Set<DiscreteResource> oldValues = childMap.putIfAbsent(key, requested);
         if (oldValues == null) {
@@ -82,6 +87,11 @@
     }
 
     boolean unregister(DiscreteResourceId key, List<DiscreteResource> values) {
+        // short-circuit: receiving empty resource is regarded as success
+        if (values.isEmpty()) {
+            return true;
+        }
+
         Set<DiscreteResource> oldValues = childMap.putIfAbsent(key, new LinkedHashSet<>());
         if (oldValues == null) {
             log.trace("No-Op removing values. key {} did not exist", key);