From: Vaclav Demcak Date: Thu, 2 Apr 2015 12:33:02 +0000 (+0200) Subject: Wiring DeviceManagerImpl and RpcManager together X-Git-Tag: release/lithium~557 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=0b9545a6d5e464e96246aa60b871e02a979a014b;p=openflowplugin.git Wiring DeviceManagerImpl and RpcManager together 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 --- diff --git a/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/handlers/DeviceContextReadyHandler.java b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/handlers/DeviceContextReadyHandler.java index 39f4a68115..ef39b786d6 100644 --- a/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/handlers/DeviceContextReadyHandler.java +++ b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/handlers/DeviceContextReadyHandler.java @@ -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 <mbobak@cisco.com> 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); } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java index ae193ad80a..96ac58dba4 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java @@ -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 } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java index d42c5bef80..9334482b14 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java @@ -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> 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(); } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcManagerImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcManagerImpl.java index e9d99366d4..e40b83d0b0 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcManagerImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcManagerImpl.java @@ -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); } diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/api/openflow/device/RpcManagerImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/api/openflow/device/RpcManagerImplTest.java index 222ec83ce0..c5541b0d57 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/api/openflow/device/RpcManagerImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/api/openflow/device/RpcManagerImplTest.java @@ -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)); diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImplTest.java index 496405efcc..65937a339c 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImplTest.java @@ -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); } /**