BUG 1082 Migrate sal-rest-connector to Async Data Broker API
[controller.git] / opendaylight / md-sal / sal-rest-connector / src / main / java / org / opendaylight / controller / sal / restconf / rpc / impl / MountPointRpcExecutor.java
index 36502656c22834829deaaa73f01defce0be1885d..efb3e0a1d3924d914afe4dcc286ad783d94de8e0 100644 (file)
@@ -7,9 +7,12 @@
  */
 package org.opendaylight.controller.sal.restconf.rpc.impl;
 
+import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import java.util.concurrent.Future;
-import org.opendaylight.controller.sal.core.api.mount.MountInstance;
+import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
+import org.opendaylight.controller.sal.core.api.RpcProvisionRegistry;
+import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
@@ -21,9 +24,9 @@ import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
  *
  */
 public class MountPointRpcExecutor extends AbstractRpcExecutor {
-    private final MountInstance mountPoint;
+    private final DOMMountPoint mountPoint;
 
-    public MountPointRpcExecutor(RpcDefinition rpcDef, MountInstance mountPoint) {
+    public MountPointRpcExecutor(RpcDefinition rpcDef, DOMMountPoint mountPoint) {
         super(rpcDef);
         this.mountPoint = mountPoint;
         Preconditions.checkNotNull(mountPoint, "MountInstance can not be null.");
@@ -31,6 +34,10 @@ public class MountPointRpcExecutor extends AbstractRpcExecutor {
 
     @Override
     protected Future<RpcResult<CompositeNode>> invokeRpcUnchecked(CompositeNode rpcRequest) {
-        return mountPoint.rpc(getRpcDefinition().getQName(), rpcRequest);
+        Optional<RpcProvisionRegistry> service = mountPoint.getService(RpcProvisionRegistry.class);
+        if (service.isPresent()) {
+            return service.get().invokeRpc(getRpcDefinition().getQName(), rpcRequest);
+        }
+        throw new RestconfDocumentedException("Rpc service is missing.");
     }
 }
\ No newline at end of file