From: Robert Varga Date: Wed, 1 Jun 2016 13:28:09 +0000 (+0200) Subject: Eliminate the use of CompositeObjectRegistration X-Git-Tag: release/boron~211^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=d966b89f58577f662eaabf1c2386cb64770374c8;p=openflowplugin.git Eliminate the use of CompositeObjectRegistration The class has been long-deprecated, remove its users and substitute them with proper registration subclasses. Change-Id: Ie7534d69efb117b7d0469dce54e25a3708f065d8 Signed-off-by: Robert Varga --- diff --git a/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/AbstractModelDrivenSwitchRegistration.java b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/AbstractModelDrivenSwitchRegistration.java new file mode 100644 index 0000000000..e710c608aa --- /dev/null +++ b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/AbstractModelDrivenSwitchRegistration.java @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.openflowplugin.api.openflow.md; + +import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; + +public abstract class AbstractModelDrivenSwitchRegistration extends AbstractObjectRegistration + implements ModelDrivenSwitchRegistration { + + protected AbstractModelDrivenSwitchRegistration(final ModelDrivenSwitch instance) { + super(instance); + } + +} diff --git a/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/ModelDrivenSwitch.java b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/ModelDrivenSwitch.java index 0120d9004f..90270c6326 100644 --- a/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/ModelDrivenSwitch.java +++ b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/ModelDrivenSwitch.java @@ -8,6 +8,7 @@ package org.opendaylight.openflowplugin.api.openflow.md; import com.google.common.base.Optional; +import java.math.BigInteger; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService; @@ -25,12 +26,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.SalP import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.OpendaylightPortStatisticsService; import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.OpendaylightQueueStatisticsService; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.SalTableService; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration; import org.opendaylight.yangtools.concepts.Identifiable; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import java.math.BigInteger; - /** * interface concatenating all md-sal services provided by OF-switch */ @@ -47,7 +45,7 @@ public interface ModelDrivenSwitch * @param rpcProviderRegistry * @return wrapped list of {service provider + path} registration couples */ - CompositeObjectRegistration register(RpcProviderRegistry rpcProviderRegistry); + ModelDrivenSwitchRegistration register(RpcProviderRegistry rpcProviderRegistry); /** * @return id of encapsulated node (served by this impl) diff --git a/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/ModelDrivenSwitchRegistration.java b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/ModelDrivenSwitchRegistration.java new file mode 100644 index 0000000000..9da85b3901 --- /dev/null +++ b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/ModelDrivenSwitchRegistration.java @@ -0,0 +1,15 @@ +/** + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.openflowplugin.api.openflow.md; + +import org.opendaylight.yangtools.concepts.ObjectRegistration; + +public interface ModelDrivenSwitchRegistration extends ObjectRegistration { + @Override + void close(); +} diff --git a/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/core/session/SessionContext.java b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/core/session/SessionContext.java index 221055b4aa..9de1dd7ad4 100644 --- a/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/core/session/SessionContext.java +++ b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/core/session/SessionContext.java @@ -12,7 +12,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitch; +import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitchRegistration; import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor; import org.opendaylight.openflowplugin.api.openflow.md.core.NotificationEnqueuer; import org.opendaylight.openflowplugin.api.openflow.md.core.NotificationQueueWrapper; @@ -20,7 +20,6 @@ import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDist import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ControllerRole; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration; /** * @author mirehak @@ -160,12 +159,12 @@ public interface SessionContext { /** * @param registration provider composite registration */ - void setProviderRegistration(CompositeObjectRegistration registration); + void setProviderRegistration(ModelDrivenSwitchRegistration registration); /** * @return provider composite registration */ - CompositeObjectRegistration getProviderRegistration(); + ModelDrivenSwitchRegistration getProviderRegistration(); /** * @return seed value for random operations diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/role/OfEntityManager.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/role/OfEntityManager.java index 910f930f65..4f446b58a1 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/role/OfEntityManager.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/role/OfEntityManager.java @@ -23,9 +23,9 @@ import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipS import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipCandidateRegistration; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitch; +import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitchRegistration; import org.opendaylight.openflowplugin.api.openflow.md.core.NotificationQueueWrapper; import org.opendaylight.openflowplugin.openflow.md.core.sal.OpenflowPluginConfig; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; @@ -348,13 +348,13 @@ public class OfEntityManager implements TransactionChainListener{ // NOOP } - private void registerRoutedRPCForSwitch(MDSwitchMetaData entityMetadata) { + private static void registerRoutedRPCForSwitch(MDSwitchMetaData entityMetadata) { // Routed RPC registration is only done when *this* instance is owner of // the entity. if(entityMetadata.getOfSwitch().isEntityOwner()) { if (!entityMetadata.isRPCRegistrationDone.get()) { entityMetadata.setIsRPCRegistrationDone(true); - CompositeObjectRegistration registration = + ModelDrivenSwitchRegistration registration = entityMetadata.getOfSwitch().register(entityMetadata.getRpcProviderRegistry()); entityMetadata.getContext().setProviderRegistration(registration); @@ -368,9 +368,9 @@ public class OfEntityManager implements TransactionChainListener{ } } - private void deregisterRoutedRPCForSwitch(MDSwitchMetaData entityMetadata) { + private static void deregisterRoutedRPCForSwitch(MDSwitchMetaData entityMetadata) { - CompositeObjectRegistration registration = entityMetadata.getContext().getProviderRegistration(); + ModelDrivenSwitchRegistration registration = entityMetadata.getContext().getProviderRegistration(); if (null != registration) { registration.close(); entityMetadata.getContext().setProviderRegistration(null); @@ -380,7 +380,7 @@ public class OfEntityManager implements TransactionChainListener{ entityMetadata.getOfSwitch().getNodeId().getValue()); } - private void sendNodeAddedNotification(MDSwitchMetaData entityMetadata) { + private static void sendNodeAddedNotification(MDSwitchMetaData entityMetadata) { //Node added notification need to be sent irrespective of whether // *this* instance is owner of the entity or not. Because yang notifications // are local, and we should maintain the behavior across the application. diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/AbstractModelDrivenSwitch.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/AbstractModelDrivenSwitch.java index ad4bdbc3ff..088bc74800 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/AbstractModelDrivenSwitch.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/AbstractModelDrivenSwitch.java @@ -7,9 +7,14 @@ */ package org.opendaylight.openflowplugin.openflow.md.core.sal; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableList.Builder; +import java.util.Collection; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RoutedRpcRegistration; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; +import org.opendaylight.openflowplugin.api.openflow.md.AbstractModelDrivenSwitchRegistration; import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitch; +import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitchRegistration; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.OpendaylightFlowStatisticsService; @@ -26,8 +31,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.SalP import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.OpendaylightPortStatisticsService; import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.OpendaylightQueueStatisticsService; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.SalTableService; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration.CompositeObjectRegistrationBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; /** @@ -52,9 +55,8 @@ public abstract class AbstractModelDrivenSwitch implements ModelDrivenSwitch { } @Override - public CompositeObjectRegistration register(RpcProviderRegistry rpcProviderRegistry) { - CompositeObjectRegistrationBuilder builder = CompositeObjectRegistration - . builderFor(this); + public ModelDrivenSwitchRegistration register(RpcProviderRegistry rpcProviderRegistry) { + final Builder> builder = ImmutableList.builder(); final RoutedRpcRegistration flowRegistration = rpcProviderRegistry.addRoutedRpcImplementation(SalFlowService.class, this); flowRegistration.registerPath(NodeContext.class, getIdentifier()); @@ -108,7 +110,15 @@ public abstract class AbstractModelDrivenSwitch implements ModelDrivenSwitch { queueStatisticsRegistration.registerPath(NodeContext.class, getIdentifier()); builder.add(queueStatisticsRegistration); - return builder.build(); + final Collection> registrations = builder.build(); + return new AbstractModelDrivenSwitchRegistration(this) { + @Override + protected void removeRegistration() { + for (RoutedRpcRegistration r : registrations) { + r.close(); + } + } + }; } /** diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManager.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManager.java index 46463f1c70..0b52d395fd 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManager.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManager.java @@ -17,11 +17,13 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.sal.binding.api.NotificationProviderService; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitch; +import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitchRegistration; import org.opendaylight.openflowplugin.api.openflow.md.core.NotificationQueueWrapper; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionListener; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionManager; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SwitchSessionKeyOF; +import org.opendaylight.openflowplugin.openflow.md.core.role.OfEntityManager; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address; @@ -38,12 +40,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder; -import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService; -import org.opendaylight.openflowplugin.openflow.md.core.role.OfEntityManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -129,7 +128,7 @@ public class SalRegistrationManager implements SessionListener, AutoCloseable { unregOpenflowEntityOwnership(nodeId); NodeRemoved nodeRemoved = nodeRemoved(nodeRef); - CompositeObjectRegistration registration = context.getProviderRegistration(); + ModelDrivenSwitchRegistration registration = context.getProviderRegistration(); if (null != registration) { registration.close(); context.setProviderRegistration(null); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/session/SessionContextOFImpl.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/session/SessionContextOFImpl.java index 899e1f66c5..803f41bd7d 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/session/SessionContextOFImpl.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/session/SessionContextOFImpl.java @@ -19,7 +19,7 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicLong; -import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitch; +import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitchRegistration; import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor; import org.opendaylight.openflowplugin.api.openflow.md.core.NotificationEnqueuer; import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; @@ -29,7 +29,6 @@ import org.opendaylight.openflowplugin.api.openflow.md.core.session.SwitchSessio import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ControllerRole; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration; /** * @author mirehak @@ -46,7 +45,7 @@ public class SessionContextOFImpl implements SessionContext { private final AtomicLong xid; private final Map physicalPorts; private final Map portBandwidth; - private CompositeObjectRegistration providerRegistration; + private ModelDrivenSwitchRegistration providerRegistration; private int seed; private ControllerRole roleOnDevice = ControllerRole.OFPCRROLEEQUAL; @@ -212,13 +211,12 @@ public class SessionContextOFImpl implements SessionContext { } @Override - public void setProviderRegistration( - CompositeObjectRegistration providerRegistration) { - this.providerRegistration = providerRegistration; + public void setProviderRegistration(ModelDrivenSwitchRegistration providerRegistration) { + this.providerRegistration = providerRegistration; } @Override - public CompositeObjectRegistration getProviderRegistration() { + public ModelDrivenSwitchRegistration getProviderRegistration() { return providerRegistration; } diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManagerTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManagerTest.java index 367f0a0917..120107b547 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManagerTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManagerTest.java @@ -10,11 +10,9 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListeningExecutorService; import java.math.BigInteger; -import java.util.Collections; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -24,16 +22,20 @@ 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.md.sal.common.api.clustering.EntityOwnershipService; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; import org.opendaylight.controller.sal.binding.api.NotificationProviderService; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.api.openflow.md.AbstractModelDrivenSwitchRegistration; import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitch; +import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitchRegistration; import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor; import org.opendaylight.openflowplugin.api.openflow.md.core.NotificationEnqueuer; import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.session.IMessageDispatchService; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SwitchSessionKeyOF; +import org.opendaylight.openflowplugin.openflow.md.core.role.OfEntityManager; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; import org.opendaylight.openflowplugin.openflow.md.core.session.SessionContextOFImpl; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowOutput; @@ -43,14 +45,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration; -import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; -import org.opendaylight.openflowplugin.openflow.md.core.role.OfEntityManager; -import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService; /** * Created by Martin Bobak mbobak@cisco.com on 8/26/14. @@ -90,8 +88,7 @@ public class SalRegistrationManagerTest { private ModelDrivenSwitch mdSwitchOF13; - CompositeObjectRegistration registration; - + ModelDrivenSwitchRegistration registration; @Before public void setUp() { @@ -107,7 +104,12 @@ public class SalRegistrationManagerTest { OfEntityManager entManager = new OfEntityManager(entityOwnershipService,getConfig()); mdSwitchOF13 = new ModelDrivenSwitchImpl(null, null, context); - registration = new CompositeObjectRegistration<>(mdSwitchOF13, Collections.emptyList()); + registration = new AbstractModelDrivenSwitchRegistration(mdSwitchOF13) { + @Override + protected void removeRegistration() { + // no-op + } + }; context.setProviderRegistration(registration); UpdateFlowOutputBuilder updateFlowOutput = new UpdateFlowOutputBuilder(); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/session/MessageDispatchServiceImplTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/session/MessageDispatchServiceImplTest.java index 448fb45ac3..2db23adaaf 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/session/MessageDispatchServiceImplTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/session/MessageDispatchServiceImplTest.java @@ -24,7 +24,7 @@ import org.opendaylight.openflowjava.protocol.api.connection.ConnectionReadyList import org.opendaylight.openflowjava.protocol.api.connection.OutboundQueueHandler; import org.opendaylight.openflowjava.protocol.api.connection.OutboundQueueHandlerRegistration; import org.opendaylight.openflowplugin.api.OFConstants; -import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitch; +import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitchRegistration; import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor; import org.opendaylight.openflowplugin.api.openflow.md.core.ErrorHandler; import org.opendaylight.openflowplugin.api.openflow.md.core.NotificationEnqueuer; @@ -75,7 +75,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.TableModInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.TableModInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.SystemNotificationsListener; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; @@ -323,7 +322,7 @@ class MockSessionContext implements SessionContext { private Map map; private IMessageDispatchService messageService; private boolean isValid = true; - private CompositeObjectRegistration registration; + private ModelDrivenSwitchRegistration registration; private int seed; private SwitchSessionKeyOF sessionKey; @@ -450,13 +449,12 @@ class MockSessionContext implements SessionContext { } @Override - public CompositeObjectRegistration getProviderRegistration() { + public ModelDrivenSwitchRegistration getProviderRegistration() { return registration; } @Override - public void setProviderRegistration( - CompositeObjectRegistration registration) { + public void setProviderRegistration(ModelDrivenSwitchRegistration registration) { this.registration = registration; } diff --git a/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginGroupTestServiceProvider.java b/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginGroupTestServiceProvider.java index 3308b94b21..fb75736a36 100644 --- a/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginGroupTestServiceProvider.java +++ b/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginGroupTestServiceProvider.java @@ -24,8 +24,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration.CompositeObjectRegistrationBuilder; +import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; +import org.opendaylight.yangtools.concepts.ObjectRegistration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder; import org.opendaylight.yangtools.yang.common.RpcResult; @@ -147,13 +147,10 @@ public class OpenflowpluginGroupTestServiceProvider implements AutoCloseable, /** * @param ctx - * @return {@link CompositeObjectRegistrationBuilder #toInstance()} + * @return {@link ObjectRegistration} */ - public CompositeObjectRegistration register( + public ObjectRegistration register( final ProviderContext ctx) { - CompositeObjectRegistrationBuilder builder = CompositeObjectRegistration - . builderFor(this); - RoutedRpcRegistration addRoutedRpcImplementation = ctx . addRoutedRpcImplementation( SalGroupService.class, this); @@ -171,8 +168,12 @@ public class OpenflowpluginGroupTestServiceProvider implements AutoCloseable, groupRegistration.registerPath(NodeContext.class, instance); RoutedRpcRegistration groupRegistration1 = this .getGroupRegistration(); - builder.add(groupRegistration1); - return builder.build(); + return new AbstractObjectRegistration(this) { + @Override + protected void removeRegistration() { + groupRegistration1.close(); + } + }; } } diff --git a/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginMeterTestServiceProvider.java b/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginMeterTestServiceProvider.java index a560f657c7..b4b5438efa 100644 --- a/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginMeterTestServiceProvider.java +++ b/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginMeterTestServiceProvider.java @@ -25,8 +25,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.Rem import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.SalMeterService; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterOutput; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration.CompositeObjectRegistrationBuilder; +import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; +import org.opendaylight.yangtools.concepts.ObjectRegistration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder; import org.opendaylight.yangtools.yang.common.RpcResult; @@ -162,12 +162,10 @@ public class OpenflowpluginMeterTestServiceProvider implements AutoCloseable, /** * @param ctx - * @return {@link CompositeObjectRegistrationBuilder #toInstance()} + * @return {@link ObjectRegistration} */ - public CompositeObjectRegistration register( + public ObjectRegistration register( final ProviderContext ctx) { - CompositeObjectRegistrationBuilder builder = CompositeObjectRegistration - . builderFor(this); RoutedRpcRegistration addRoutedRpcImplementation = ctx . addRoutedRpcImplementation( @@ -191,9 +189,13 @@ public class OpenflowpluginMeterTestServiceProvider implements AutoCloseable, RoutedRpcRegistration meterRegistration1 = this .getMeterRegistration(); - builder.add(meterRegistration1); + return new AbstractObjectRegistration(this) { - return builder.build(); + @Override + protected void removeRegistration() { + meterRegistration1.close(); + } + }; } } diff --git a/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginTableFeaturesTestServiceProvider.java b/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginTableFeaturesTestServiceProvider.java index 261a29cba8..9a0e554b6c 100644 --- a/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginTableFeaturesTestServiceProvider.java +++ b/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginTableFeaturesTestServiceProvider.java @@ -20,8 +20,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.SalTableService; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableOutput; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration.CompositeObjectRegistrationBuilder; +import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; +import org.opendaylight.yangtools.concepts.ObjectRegistration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder; import org.opendaylight.yangtools.yang.common.RpcResult; @@ -110,13 +110,10 @@ public class OpenflowpluginTableFeaturesTestServiceProvider implements /** * @param ctx - * @return {@link CompositeObjectRegistrationBuilder #toInstance()} + * @return {@link ObjectRegistration} */ - public CompositeObjectRegistration register( + public ObjectRegistration register( final ProviderContext ctx) { - CompositeObjectRegistrationBuilder builder = CompositeObjectRegistration - . builderFor(this); - RoutedRpcRegistration addRoutedRpcImplementation = ctx . addRoutedRpcImplementation( SalTableService.class, this); @@ -139,9 +136,12 @@ public class OpenflowpluginTableFeaturesTestServiceProvider implements RoutedRpcRegistration tableRegistration1 = this .getTableRegistration(); - builder.add(tableRegistration1); - - return builder.build(); + return new AbstractObjectRegistration(this) { + @Override + protected void removeRegistration() { + tableRegistration1.close(); + } + }; } } diff --git a/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginTestServiceProvider.java b/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginTestServiceProvider.java index ec67835b82..1464509c06 100644 --- a/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginTestServiceProvider.java +++ b/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginTestServiceProvider.java @@ -25,8 +25,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration.CompositeObjectRegistrationBuilder; +import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; +import org.opendaylight.yangtools.concepts.ObjectRegistration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder; import org.opendaylight.yangtools.yang.common.RpcResult; @@ -166,13 +166,10 @@ public class OpenflowpluginTestServiceProvider implements AutoCloseable, /** * @param ctx - * @return {@link CompositeObjectRegistrationBuilder #toInstance()} + * @return {@link ObjectRegistration} */ - public CompositeObjectRegistration register( + public ObjectRegistration register( final ProviderContext ctx) { - CompositeObjectRegistrationBuilder builder = CompositeObjectRegistration - . builderFor(this); - RoutedRpcRegistration addRoutedRpcImplementation = ctx . addRoutedRpcImplementation( SalFlowService.class, this); @@ -194,8 +191,11 @@ public class OpenflowpluginTestServiceProvider implements AutoCloseable, RoutedRpcRegistration flowRegistration2 = getFlowRegistration(); - builder.add(flowRegistration2); - - return builder.build(); + return new AbstractObjectRegistration(this) { + @Override + protected void removeRegistration() { + flowRegistration2.close(); + } + }; } }