Wiring DeviceManagerImpl and RpcManager together 27/17627/1
authorVaclav Demcak <vdemcak@cisco.com>
Thu, 2 Apr 2015 12:33:02 +0000 (14:33 +0200)
committerVaclav Demcak <vdemcak@cisco.com>
Thu, 2 Apr 2015 12:33:02 +0000 (14:33 +0200)
Node: We wana to have only one instance of RpcManager
and it has to be an input param. for DeviceManagerImpl.

Change-Id: I347d5133e81efae6610444eaec3bb062548df1d4
Signed-off-by: Vaclav Demcak <vdemcak@cisco.com>
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/handlers/DeviceContextReadyHandler.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcManagerImpl.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/api/openflow/device/RpcManagerImplTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImplTest.java

index 39f4a6811597b51823d525ce070e69d82bd1890e..ef39b786d6894c6d333845cbe22b5e83c97f3946 100644 (file)
@@ -9,7 +9,6 @@
 package org.opendaylight.openflowplugin.api.openflow.device.handlers;
 
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
 
 /**
  * Created by Martin Bobak &lt;mbobak@cisco.com&gt; on 27.2.2015.
@@ -19,6 +18,6 @@ public interface DeviceContextReadyHandler {
      * Method is used to propagate information about established connection with device. It propagates connected
      * device's device context.
      */
-    void deviceConnected(DeviceContext deviceContext, RequestContext requestContext);
+    void deviceConnected(DeviceContext deviceContext);
 
 }
index ae193ad80a23facdc8cbd59b69be964e82c5b052..96ac58dba4354c2c631b49cc37155fc2a0766c92 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.openflowplugin.impl;
 
 
 import java.util.Collection;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
 import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProvider;
 import org.opendaylight.openflowplugin.api.openflow.OpenFlowPluginProvider;
@@ -47,8 +48,8 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider {
 
     @Override
     public void initialize() {
-        deviceManager = new DeviceManagerImpl(providerContext);
         rpcManager = new RpcManagerImpl(providerContext);
+        deviceManager = new DeviceManagerImpl(rpcManager, providerContext.getSALService(DataBroker.class));
         //TODO : initialize statistics manager
         //TODO : initialize translatorLibrary + inject into deviceMngr
     }
index d42c5bef808d6bab87079503ef77bca9587f4a3b..9334482b14fd4c2334906b69ee74441f22d8e358 100644 (file)
@@ -21,22 +21,16 @@ import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
 import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceManager;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceState;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
 import org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceContextReadyHandler;
 import org.opendaylight.openflowplugin.api.openflow.rpc.RpcManager;
 import org.opendaylight.openflowplugin.impl.common.MultipartRequestInputFactory;
 import org.opendaylight.openflowplugin.impl.common.NodeStaticReplyTranslatorUtil;
-import org.opendaylight.openflowplugin.impl.rpc.RequestContextImpl;
-import org.opendaylight.openflowplugin.impl.rpc.RpcContextImpl;
-import org.opendaylight.openflowplugin.impl.rpc.RpcManagerImpl;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableBuilder;
@@ -64,17 +58,18 @@ public class DeviceManagerImpl implements DeviceManager {
 
     private static final Logger LOG = LoggerFactory.getLogger(DeviceManagerImpl.class);
 
-    private final BindingAwareBroker.ProviderContext providerContext;
+    private final RpcManager rpcManager;
+    private final DataBroker dataBroker;
 
 
-    public DeviceManagerImpl (@Nonnull final ProviderContext providerContext) {
-        this.providerContext = Preconditions.checkNotNull(providerContext);
+    public DeviceManagerImpl (@Nonnull final RpcManager rpcManager, @Nonnull final DataBroker dataBroker) {
+        this.rpcManager = Preconditions.checkNotNull(rpcManager);
+        this.dataBroker = Preconditions.checkNotNull(dataBroker);
     }
 
     @Override
     public void deviceConnected(@CheckForNull final ConnectionContext connectionContext) {
         Preconditions.checkArgument(connectionContext != null);
-        final DataBroker dataBroker = providerContext.getSALService(DataBroker.class);
         final DeviceState deviceState = new DeviceStateImpl(connectionContext.getFeatures(), connectionContext.getNodeId());
         final DeviceContext deviceContext = new DeviceContextImpl(connectionContext, deviceState, dataBroker);
 
@@ -100,10 +95,7 @@ public class DeviceManagerImpl implements DeviceManager {
             @Override
             public void onSuccess(final List<Collection<MultipartReply>> result) {
                 // FIXME : add statistics
-                final RpcManager rpcManager = new RpcManagerImpl(providerContext);
-                final RequestContextStack rcs = new RpcContextImpl(providerContext, deviceContext);
-                final RequestContext<?> requestContext = new RequestContextImpl<>(rcs);
-                rpcManager.deviceConnected(deviceContext, requestContext);
+                rpcManager.deviceConnected(deviceContext);
                 ((DeviceContextImpl) deviceContext).submitTransaction();
             }
 
index e9d99366d4c2f08b2de685306d7d31ef39208ad2..e40b83d0b073cc3dfcca2f2eb12b77baa3db64c4 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.openflowplugin.impl.rpc;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
 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.openflowplugin.api.openflow.rpc.RpcManager;
 import org.opendaylight.openflowplugin.impl.util.MdSalRegistratorUtils;
@@ -31,7 +30,7 @@ public class RpcManagerImpl implements RpcManager {
      * @see org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceContextReadyHandler#deviceConnected(org.opendaylight.openflowplugin.api.openflow.device.DeviceContext, org.opendaylight.openflowplugin.api.openflow.device.RequestContext)
      */
     @Override
-    public void deviceConnected(final DeviceContext deviceContext, final RequestContext requestContext) {
+    public void deviceConnected(final DeviceContext deviceContext) {
         final RpcContext rpcContext = new RpcContextImpl(providerContext, deviceContext);
         MdSalRegistratorUtils.registerServices(rpcContext, deviceContext);
     }
index 222ec83ce003c37ba13663182ef458c892e9efd9..c5541b0d57615e75a9a0ea102386989d564368f3 100644 (file)
@@ -11,7 +11,9 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
-
+import java.math.BigInteger;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.mockito.Matchers;
@@ -29,9 +31,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalF
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FeaturesReply;
 import org.opendaylight.yangtools.yang.binding.RpcService;
 import org.opendaylight.yangtools.yang.common.RpcResult;
-import java.math.BigInteger;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
 
 public class RpcManagerImplTest {
 
@@ -41,7 +40,6 @@ public class RpcManagerImplTest {
 
     final ProviderContext mockedProviderContext = mock(ProviderContext.class);
     final RpcManagerImpl rpcManager = new RpcManagerImpl(mockedProviderContext);
-    final RequestContext mockedRequestContext = mock(RequestContext.class);
     final RpcContext mockedRpcContext = mock(RpcContext.class);
     final AddFlowInput mockedFlowInput = prepareTestingAddFlow();
     final DeviceContext mockedDeviceContext = mock(DeviceContext.class);
@@ -50,7 +48,7 @@ public class RpcManagerImplTest {
     @Test
     public void deviceConnectedTest() {
 
-        rpcManager.deviceConnected(mockedDeviceContext, mockedRequestContext);
+        rpcManager.deviceConnected(mockedDeviceContext);
 
         verify(mockedProviderContext, times(AWAITED_NUM_OF_CALL_ADD_ROUTED_RPC)).addRoutedRpcImplementation(
                 Matchers.any(Class.class), Matchers.any(RpcService.class));
index 496405efcc13becdc308cd100664be5db8e0f398..65937a339cb1ecd4baf01e2601ce2433ecee5aa8 100644 (file)
@@ -18,9 +18,9 @@ import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
 import org.opendaylight.openflowjava.protocol.api.connection.ConnectionAdapter;
 import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext;
+import org.opendaylight.openflowplugin.api.openflow.rpc.RpcManager;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FeaturesReply;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestDescCase;
@@ -40,18 +40,19 @@ public class DeviceManagerImplTest {
     @Mock
     private FeaturesReply features;
     @Mock
-    private ProviderContext providerContext;
+    private DataBroker dataBroker;
+    @Mock
+    private RpcManager rpcManager;
 
     /**
      * @throws java.lang.Exception
      */
     @Before
     public void setUp() throws Exception {
-        Mockito.when(providerContext.getSALService(DataBroker.class)).thenReturn(Mockito.mock(DataBroker.class));
         Mockito.when(connectionContext.getConnectionAdapter()).thenReturn(connectionAdapter);
         Mockito.when(connectionContext.getFeatures()).thenReturn(features);
         Mockito.when(features.getVersion()).thenReturn((short) 42);
-        deviceManager = new DeviceManagerImpl(providerContext);
+        deviceManager = new DeviceManagerImpl(rpcManager, dataBroker);
     }
 
     /**