ONOS-6787
Dynamic Config: API cleanup and Rpc brokerage implementation

Change-Id: Ic8b9922533c9bb8869d3b4c0ed55611a0e61f4f5
diff --git a/apps/config/src/main/java/org/onosproject/config/impl/DynamicConfigManager.java b/apps/config/src/main/java/org/onosproject/config/impl/DynamicConfigManager.java
index fac5073..5ec5422 100644
--- a/apps/config/src/main/java/org/onosproject/config/impl/DynamicConfigManager.java
+++ b/apps/config/src/main/java/org/onosproject/config/impl/DynamicConfigManager.java
@@ -23,6 +23,9 @@
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
 import org.onlab.util.KryoNamespace;
+import org.onosproject.event.AbstractListenerManager;
+import org.onosproject.store.serializers.KryoNamespaces;
+import org.onosproject.store.service.StorageService;
 import org.onosproject.config.DynamicConfigEvent;
 import org.onosproject.config.DynamicConfigListener;
 import org.onosproject.config.DynamicConfigService;
@@ -30,25 +33,21 @@
 import org.onosproject.config.DynamicConfigStoreDelegate;
 import org.onosproject.config.FailedException;
 import org.onosproject.config.Filter;
-import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.ConsistentMap;
-import org.onosproject.store.service.StorageService;
-import org.onosproject.store.service.Serializer;
-import org.onosproject.store.service.Versioned;
-import org.onosproject.yang.model.RpcCaller;
-import org.onosproject.yang.model.RpcCommand;
 import org.onosproject.yang.model.RpcHandler;
 import org.onosproject.yang.model.RpcInput;
 import org.onosproject.yang.model.RpcOutput;
 import org.onosproject.yang.model.DataNode;
 import org.onosproject.yang.model.ResourceId;
-import org.onosproject.event.AbstractListenerManager;
-import org.slf4j.Logger;
+//TODO import org.onosproject.yang.model.RpcRegistry;
+//TODO import org.onosproject.yang.model.RpcService;
 
+import java.util.concurrent.CompletableFuture;
+
+import org.slf4j.Logger;
 import static org.slf4j.LoggerFactory.getLogger;
 
 /**
- * Demo application to use the DynamicConfig Service and DynamicConfigStore.
+ * Implementation of the Dynamic Config Service.
  *
  */
 @Beta
@@ -61,8 +60,8 @@
     private final DynamicConfigStoreDelegate storeDelegate = new InternalStoreDelegate();
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected DynamicConfigStore store;
-    private ConsistentMap<RpcCommand, RpcHandler> handlerRegistry;
-    private ConsistentMap<Integer, RpcCaller> callerRegistry;
+    //TODO after 14420 is merged
+    //private ConsistentMap<RpcService, RpcHandler> handlerRegistry;
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected StorageService storageService;
 
@@ -75,19 +74,13 @@
                 .register(KryoNamespaces.BASIC)
                 .register(Class.class)
                 .register(RpcHandler.class)
-                .register(RpcCaller.class)
-                .register(RpcCommand.class)
                 .register(ResourceId.class);
-        callerRegistry = storageService.<Integer, RpcCaller>consistentMapBuilder()
+        //TODO after 14420 is merged
+        /*handlerRegistry = storageService.<RpcService, RpcHandler>consistentMapBuilder()
                 .withSerializer(Serializer.using(kryoBuilder.build()))
                 .withName("config-object-store")
                 .withRelaxedReadConsistency()
-                .build();
-        handlerRegistry = storageService.<RpcCommand, RpcHandler>consistentMapBuilder()
-                .withSerializer(Serializer.using(kryoBuilder.build()))
-                .withName("config-object-store")
-                .withRelaxedReadConsistency()
-                .build();
+                .build();*/
         log.info("Started");
     }
 
@@ -98,7 +91,7 @@
         log.info("Stopped");
     }
 
-    public void createNodeRecursive(ResourceId path, DataNode node) {
+    public void createNode(ResourceId path, DataNode node) {
         store.addNode(path, node).join();
     }
 
@@ -111,10 +104,6 @@
     }
 
     public void deleteNode(ResourceId path) {
-        throw new FailedException("Not yet implemented");
-    }
-
-    public void deleteNodeRecursive(ResourceId path) {
         store.deleteNodeRecursive(path).join();
     }
 
@@ -122,15 +111,12 @@
         throw new FailedException("Not yet implemented");
     }
 
-    public Integer getNumberOfChildren(ResourceId path, Filter filter) {
-        throw new FailedException("Not yet implemented");
-    }
-
     public Boolean nodeExist(ResourceId path) {
         return store.nodeExist(path).join();
     }
 
-    public void registerHandler(RpcHandler handler, RpcCommand command) {
+    //TODO after RPC abstractions are merged; else will lead to build failure
+    /*public void registerHandler(RpcHandler handler, RpcCommand command) {
         handlerRegistry.put(command, handler);
     }
 
@@ -140,24 +126,13 @@
             throw new FailedException("No registered handler found, cannot unregister");
         }
         handlerRegistry.remove(command);
+    }*/
+
+    public CompletableFuture<RpcOutput> invokeRpc(ResourceId id, RpcInput input) {
+        //TODO after RPC abstractions are merged; else will lead to build failure
+        throw new FailedException("Not yet implemented");
     }
 
-    public void invokeRpc(RpcCaller caller, Integer msgId, RpcCommand command, RpcInput input) {
-        callerRegistry.put(msgId, caller);
-        Versioned<RpcHandler> hndlr = handlerRegistry.get(command);
-        if ((hndlr == null) || (hndlr.value() == null)) {
-            throw new FailedException("No registered handler found, cannot invoke");
-        }
-        hndlr.value().executeRpc(msgId, command, input);
-    }
-
-    public void rpcResponse(Integer msgId, RpcOutput output) {
-        Versioned<RpcCaller> caller = callerRegistry.get(msgId);
-        if (caller.value() == null) {
-            throw new FailedException("No registered receiver found, cannot relay response");
-        }
-        caller.value().receiveResponse(msgId, output);
-    }
     /**
      * Auxiliary store delegate to receive notification about changes in the store.
      */