Rpc Registration for path.
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / rpc / RpcContextImpl.java
index 047d44dd06b9b8e5a763fb8a0b8184e0cf6e01d9..eedcf3ab57e20662b51d7308b6884689ad8138d0 100644 (file)
@@ -16,6 +16,7 @@ import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RoutedRpcR
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
 import org.opendaylight.openflowplugin.api.openflow.rpc.RpcContext;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeContext;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.RpcService;
 import org.opendaylight.yangtools.yang.common.RpcError;
@@ -30,8 +31,8 @@ public class RpcContextImpl implements RpcContext {
     private final List<RequestContext<? extends DataObject>> requestContexts = new ArrayList<>();
     private final DeviceContext deviceContext;
     private final List<RoutedRpcRegistration> rpcRegistrations = new ArrayList<>();
-    private final List<RequestContext<? extends DataObject>> synchronizedRequestsList = Collections
-            .<RequestContext<? extends DataObject>>synchronizedList(new ArrayList<RequestContext<? extends DataObject>>());
+    private final List<RequestContext<?>> synchronizedRequestsList = Collections
+            .<RequestContext<?>>synchronizedList(new ArrayList<RequestContext<?>>());
 
     private int maxRequestsPerDevice;
 
@@ -47,11 +48,13 @@ public class RpcContextImpl implements RpcContext {
     @Override
     public <S extends RpcService> void registerRpcServiceImplementation(final Class<S> serviceClass,
             final S serviceInstance) {
-        rpcRegistrations.add(providerContext.addRoutedRpcImplementation(serviceClass, serviceInstance));
+        final RoutedRpcRegistration<S> routedRpcReg = providerContext.addRoutedRpcImplementation(serviceClass, serviceInstance);
+        routedRpcReg.registerPath(NodeContext.class, deviceContext.getDeviceState().getNodeInstanceIdentifier());
+        rpcRegistrations.add(routedRpcReg);
     }
 
     @Override
-    public <T extends DataObject> SettableFuture<RpcResult<T>> storeOrFail(final RequestContext<T> requestContext) {
+    public <T> SettableFuture<RpcResult<T>> storeOrFail(final RequestContext<T> requestContext) {
         final SettableFuture<RpcResult<T>> rpcResultFuture = requestContext.getFuture();
 
         if (synchronizedRequestsList.size() < maxRequestsPerDevice) {
@@ -71,7 +74,8 @@ public class RpcContextImpl implements RpcContext {
      */
     @Override
     public void close() throws Exception {
-        for (final RoutedRpcRegistration rpcRegistration : rpcRegistrations) {
+        for (final RoutedRpcRegistration<?> rpcRegistration : rpcRegistrations) {
+            rpcRegistration.unregisterPath(NodeContext.class, deviceContext.getDeviceState().getNodeInstanceIdentifier());
             rpcRegistration.close();
         }
     }
@@ -85,7 +89,7 @@ public class RpcContextImpl implements RpcContext {
     }
 
     @Override
-    public <T extends DataObject> void forgetRequestContext(final RequestContext<T> requestContext) {
+    public <T> void forgetRequestContext(final RequestContext<T> requestContext) {
         requestContexts.remove(requestContext);
     }
 
@@ -95,7 +99,7 @@ public class RpcContextImpl implements RpcContext {
     }
 
     @Override
-    public <T extends DataObject> RequestContext<T> createRequestContext() {
+    public <T> RequestContext<T> createRequestContext() {
         return new RequestContextImpl<T>(this);
     }