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;
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;
@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) {
*/
@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();
}
}
}
@Override
- public <T extends DataObject> void forgetRequestContext(final RequestContext<T> requestContext) {
+ public <T> void forgetRequestContext(final RequestContext<T> requestContext) {
requestContexts.remove(requestContext);
}
}
@Override
- public <T extends DataObject> RequestContext<T> createRequestContext() {
+ public <T> RequestContext<T> createRequestContext() {
return new RequestContextImpl<T>(this);
}