Formalize and document ConsistentResourceStore internal interfaces. This is cleanup in preparation for changes coming in ONOS-4859

Change-Id: I23077352f428d83848bee48666957a43642d3665
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceSubStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceSubStore.java
index 600f73d..199fc34 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceSubStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceSubStore.java
@@ -15,6 +15,9 @@
  */
 package org.onosproject.store.resource.impl;
 
+import java.util.Optional;
+import java.util.Set;
+
 import org.onosproject.net.resource.DiscreteResource;
 import org.onosproject.net.resource.DiscreteResourceId;
 import org.onosproject.net.resource.Resource;
@@ -24,12 +27,13 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.Optional;
-import java.util.Set;
-
 import static org.onosproject.store.resource.impl.ConsistentResourceStore.SERIALIZER;
 
-class TransactionalDiscreteResourceSubStore {
+/**
+ * Transactional substore for discrete resources.
+ */
+class TransactionalDiscreteResourceSubStore
+        implements TransactionalResourceSubStore<DiscreteResourceId, DiscreteResource> {
     private final Logger log = LoggerFactory.getLogger(getClass());
     private final TransactionalMap<DiscreteResourceId, DiscreteResources> childMap;
     private final TransactionalMap<DiscreteResourceId, ResourceConsumerId> consumers;
@@ -40,7 +44,8 @@
     }
 
     // check the existence in the set: O(1) operation
-    Optional<DiscreteResource> lookup(DiscreteResourceId id) {
+    @Override
+    public Optional<DiscreteResource> lookup(DiscreteResourceId id) {
         if (!id.parent().isPresent()) {
             return Optional.of(Resource.ROOT);
         }
@@ -53,7 +58,8 @@
         return values.lookup(id);
     }
 
-    boolean register(DiscreteResourceId parent, Set<DiscreteResource> resources) {
+    @Override
+    public boolean register(DiscreteResourceId parent, Set<DiscreteResource> resources) {
         // short-circuit: receiving empty resource is regarded as success
         if (resources.isEmpty()) {
             return true;
@@ -76,7 +82,8 @@
         return childMap.replace(parent, oldValues, newValues);
     }
 
-    boolean unregister(DiscreteResourceId parent, Set<DiscreteResource> resources) {
+    @Override
+    public boolean unregister(DiscreteResourceId parent, Set<DiscreteResource> resources) {
         // short-circuit: receiving empty resource is regarded as success
         if (resources.isEmpty()) {
             return true;
@@ -107,11 +114,13 @@
         return childMap.replace(parent, oldValues, newValues);
     }
 
-    private boolean isAllocated(DiscreteResourceId id) {
+    @Override
+    public boolean isAllocated(DiscreteResourceId id) {
         return consumers.get(id) != null;
     }
 
-    boolean allocate(ResourceConsumerId consumerId, DiscreteResource resource) {
+    @Override
+    public boolean allocate(ResourceConsumerId consumerId, DiscreteResource resource) {
         // if the resource is not registered, then abort
         Optional<DiscreteResource> lookedUp = lookup(resource.id());
         if (!lookedUp.isPresent()) {
@@ -122,13 +131,10 @@
         return oldValue == null;
     }
 
-    boolean release(DiscreteResource resource, ResourceConsumerId consumerId) {
+    @Override
+    public boolean release(ResourceConsumerId consumerId, DiscreteResource resource) {
         // if this single release fails (because the resource is allocated to another consumer)
         // the whole release fails
-        if (!consumers.remove(resource.id(), consumerId)) {
-            return false;
-        }
-
-        return true;
+        return consumers.remove(resource.id(), consumerId);
     }
 }