Remove OSGi dependency from bgp modules 29/81929/2
authorMatej Perina <matej.perina@pantheon.tech>
Fri, 11 Jan 2019 09:05:01 +0000 (10:05 +0100)
committerRobert Varga <nite@hq.sk>
Tue, 7 May 2019 10:04:19 +0000 (10:04 +0000)
This change makes modules reusable for projects that
do not use OSGi framework.

BgpPeer, AppPeer and RibImpl creation moved from
blueprint to BgpDeployerImpl.

Change-Id: I1d13ade6f5f8edeb9595ceb94017962401f44ed6
Signed-off-by: Matej Perina <matej.perina@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 62b37d2c48880f858e7b0503e9bb60d5e168c412)

18 files changed:
bgp/extensions/evpn/pom.xml
bgp/extensions/linkstate/pom.xml
bgp/parser-spi/pom.xml
bgp/rib-impl/pom.xml
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/AppPeer.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/BGPClusterSingletonService.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpDeployerImpl.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpPeer.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/RibImpl.java
bgp/rib-impl/src/main/resources/org/opendaylight/blueprint/bgp-rib.xml
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/AbstractConfig.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpDeployerImplTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpPeerTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/RibImplTest.java
bgp/rib-spi/pom.xml
bgp/topology-provider/pom.xml
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/config/BgpTopologyDeployerImpl.java
bgp/topology-provider/src/main/resources/org/opendaylight/blueprint/bgp-topology-provider.xml

index f4799087930e3de91a68d724336bfd955af7c05b..5af67f51d3d339d54747741e5f71b1631085cd94 100644 (file)
             <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
             <artifactId>rfc6991-ietf-yang-types</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-        </dependency>
 
         <!-- test scope dependencies -->
         <dependency>
index 15d11b9fc27f4afc6c60c3a5a1d8bdae332e5f1e..587154e12798f48fbffc24c56c26f25cb40520c1 100644 (file)
             <groupId>org.opendaylight.mdsal.model</groupId>
             <artifactId>yang-ext</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-        </dependency>
 
         <!-- test scope dependencies -->
         <dependency>
index 742337c8e0858787d90ba2c7d5147cb6395868a6..87730b9bae7bf07cfd27c93ff060594732cd213b 100644 (file)
             <artifactId>rfc6991-ietf-inet-types</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>io.netty</groupId>
             <artifactId>netty-buffer</artifactId>
index ab43dd1c056c6ed03bdab4411cc3208f7effc0ff..e9851a5e0dc7d19d763b29f12a881eda88cc58e8 100644 (file)
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
-        </dependency>
         <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
index 1245f90d1381eae63798ebddef8b5f5b79d2b4fd..aa0c5c32a395aed6087c29d4a2926f26dacdc61b 100644 (file)
@@ -32,7 +32,6 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.osgi.framework.ServiceRegistration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -44,8 +43,6 @@ public final class AppPeer implements PeerBean, BGPPeerStateConsumer {
     private Neighbor currentConfiguration;
     @GuardedBy("this")
     private BgpAppPeerSingletonService bgpAppPeerSingletonService;
-    @GuardedBy("this")
-    private ServiceRegistration<?> serviceRegistration;
 
     private static ApplicationRibId createAppRibId(final Neighbor neighbor) {
         final Config config = neighbor.getConfig();
@@ -77,10 +74,6 @@ public final class AppPeer implements PeerBean, BGPPeerStateConsumer {
         if (this.bgpAppPeerSingletonService != null) {
             this.bgpAppPeerSingletonService = null;
         }
-        if (this.serviceRegistration != null) {
-            this.serviceRegistration.unregister();
-            this.serviceRegistration = null;
-        }
     }
 
     @Override
@@ -110,10 +103,6 @@ public final class AppPeer implements PeerBean, BGPPeerStateConsumer {
         return this.bgpAppPeerSingletonService.getPeerState();
     }
 
-    synchronized void setServiceRegistration(final ServiceRegistration<?> serviceRegistration) {
-        this.serviceRegistration = serviceRegistration;
-    }
-
     private static final class BgpAppPeerSingletonService implements BGPPeerStateConsumer {
         private final ApplicationPeer applicationPeer;
         private final DOMDataTreeChangeService dataTreeChangeService;
index 52e60cf48562ed33689036194741d40f1b1ecfcb..05ef26498e5e0ebf27b80725ad383a1587f3beae 100644 (file)
@@ -11,7 +11,6 @@ package org.opendaylight.protocol.bgp.rib.impl.config;
 import static org.opendaylight.protocol.bgp.rib.impl.config.OpenConfigMappingUtil.APPLICATION_PEER_GROUP_NAME;
 import static org.opendaylight.protocol.bgp.rib.impl.config.OpenConfigMappingUtil.APPLICATION_PEER_GROUP_NAME_OPT;
 import static org.opendaylight.protocol.bgp.rib.impl.config.OpenConfigMappingUtil.getNeighborInstanceIdentifier;
-import static org.opendaylight.protocol.bgp.rib.impl.config.OpenConfigMappingUtil.getNeighborInstanceName;
 import static org.opendaylight.protocol.bgp.rib.impl.config.OpenConfigMappingUtil.getRibInstanceName;
 
 import com.google.common.util.concurrent.FutureCallback;
@@ -20,9 +19,7 @@ import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.SettableFuture;
 import java.util.ArrayList;
-import java.util.Dictionary;
 import java.util.HashMap;
-import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -32,13 +29,20 @@ import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
 import javax.annotation.concurrent.GuardedBy;
 import org.apache.commons.lang3.StringUtils;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
+import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
+import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
 import org.opendaylight.mdsal.common.api.CommitInfo;
+import org.opendaylight.mdsal.dom.api.DOMSchemaService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
 import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
+import org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.BGPRibRoutingPolicyFactory;
 import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
-import org.opendaylight.protocol.bgp.rib.impl.spi.InstanceType;
+import org.opendaylight.protocol.bgp.rib.impl.spi.BGPDispatcher;
+import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext;
 import org.opendaylight.protocol.bgp.rib.spi.util.ClusterSingletonServiceRegistrationHelper;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.Config;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbors.Neighbor;
@@ -48,9 +52,6 @@ import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.t
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborPeerGroupConfig;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.blueprint.container.BlueprintContainer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -65,25 +66,43 @@ public final class BGPClusterSingletonService implements ClusterSingletonService
     @GuardedBy("this")
     private final Map<String, List<PeerBean>> peersGroups = new HashMap<>();
     private final BGPTableTypeRegistryConsumer tableTypeRegistry;
-    private final BlueprintContainer container;
-    private final BundleContext bundleContext;
     private final ServiceGroupIdentifier serviceGroupIdentifier;
     private final AtomicBoolean instantiated = new AtomicBoolean(false);
     private final PeerGroupConfigLoader peerGroupLoader;
     private RibImpl ribImpl;
+    private final RIBExtensionConsumerContext ribExtensionContext;
+    private final BGPDispatcher dispatcher;
+    private final BGPRibRoutingPolicyFactory policyFactory;
+    private final BindingCodecTreeFactory codecFactory;
+    private final DOMDataBroker domBroker;
+    private final DataBroker dataBroker;
+    private final DOMSchemaService schemaService;
+    private final RpcProviderRegistry rpcRegistry;
 
     BGPClusterSingletonService(
             @Nonnull final PeerGroupConfigLoader peerGroupLoader,
             @Nonnull final ClusterSingletonServiceProvider provider,
             @Nonnull final BGPTableTypeRegistryConsumer tableTypeRegistry,
-            @Nonnull final BlueprintContainer container,
-            @Nonnull final BundleContext bundleContext,
-            @Nonnull final InstanceIdentifier<Bgp> bgpIid) {
+            @Nonnull final InstanceIdentifier<Bgp> bgpIid,
+            @Nonnull final RIBExtensionConsumerContext ribExtensionContext,
+            @Nonnull final BGPDispatcher dispatcher,
+            @Nonnull final BGPRibRoutingPolicyFactory policyFactory,
+            @Nonnull final BindingCodecTreeFactory codecFactory,
+            @Nonnull final DOMDataBroker domBroker,
+            @Nonnull final DataBroker dataBroker,
+            @Nonnull final DOMSchemaService schemaService,
+            @Nonnull final RpcProviderRegistry rpcRegistry) {
         this.peerGroupLoader = peerGroupLoader;
         this.tableTypeRegistry = tableTypeRegistry;
-        this.container = container;
-        this.bundleContext = bundleContext;
         this.bgpIid = bgpIid;
+        this.ribExtensionContext = ribExtensionContext;
+        this.dispatcher = dispatcher;
+        this.policyFactory = policyFactory;
+        this.codecFactory = codecFactory;
+        this.domBroker = domBroker;
+        this.dataBroker = dataBroker;
+        this.schemaService = schemaService;
+        this.rpcRegistry = rpcRegistry;
         final String ribInstanceName = getRibInstanceName(bgpIid);
         this.serviceGroupIdentifier = ServiceGroupIdentifier.create(ribInstanceName + "-service-group");
         LOG.info("BGPClusterSingletonService {} registered", this.serviceGroupIdentifier.getValue());
@@ -159,7 +178,8 @@ public final class BGPClusterSingletonService implements ClusterSingletonService
 
     private synchronized void onGlobalCreated(final Global global) {
         LOG.debug("Creating RIB instance with configuration: {}", global);
-        this.ribImpl = (RibImpl) this.container.getComponentInstance(InstanceType.RIB.getBeanName());
+        this.ribImpl = new RibImpl(ribExtensionContext, dispatcher, policyFactory, codecFactory, domBroker, dataBroker,
+                schemaService);
         initiateRibInstance(global, this.ribImpl);
         LOG.debug("RIB instance created: {}", this.ribImpl);
     }
@@ -190,7 +210,6 @@ public final class BGPClusterSingletonService implements ClusterSingletonService
     private synchronized void initiateRibInstance(final Global global, final RibImpl ribImpl) {
         final String ribInstanceName = getRibInstanceName(this.bgpIid);
         ribImpl.start(global, ribInstanceName, this.tableTypeRegistry);
-        registerRibInstance(ribImpl, ribInstanceName);
         if (this.instantiated.get()) {
             this.ribImpl.instantiateServiceInstance();
         }
@@ -210,14 +229,6 @@ public final class BGPClusterSingletonService implements ClusterSingletonService
         return filtered;
     }
 
-    private synchronized void registerRibInstance(final RibImpl ribImpl, final String ribInstanceName) {
-        final Dictionary<String, String> properties = new Hashtable<>();
-        properties.put(InstanceType.RIB.getBeanName(), ribInstanceName);
-        final ServiceRegistration<?> serviceRegistration = this.bundleContext.registerService(
-                InstanceType.RIB.getServices(), ribImpl, properties);
-        ribImpl.setServiceRegistration(serviceRegistration);
-    }
-
     @Override
     public void close() {
         LOG.info("BGPClusterSingletonService {} close", this.serviceGroupIdentifier.getValue());
@@ -258,9 +269,9 @@ public final class BGPClusterSingletonService implements ClusterSingletonService
         LOG.debug("Creating Peer instance with configuration: {}", neighbor);
         final PeerBean bgpPeer;
         if (OpenConfigMappingUtil.isApplicationPeer(neighbor)) {
-            bgpPeer = (PeerBean) this.container.getComponentInstance(InstanceType.APP_PEER.getBeanName());
+            bgpPeer = new AppPeer();
         } else {
-            bgpPeer = (PeerBean) this.container.getComponentInstance(InstanceType.PEER.getBeanName());
+            bgpPeer = new BgpPeer(this.rpcRegistry);
         }
         final InstanceIdentifier<Neighbor> neighborInstanceIdentifier =
                 getNeighborInstanceIdentifier(this.bgpIid, neighbor.key());
@@ -321,32 +332,10 @@ public final class BGPClusterSingletonService implements ClusterSingletonService
         closePeer(bgpPeer);
     }
 
-    private synchronized void registerPeerInstance(final BgpPeer bgpPeer, final String peerInstanceName) {
-        final Dictionary<String, String> properties = new Hashtable<>();
-        properties.put(InstanceType.PEER.getBeanName(), peerInstanceName);
-        final ServiceRegistration<?> serviceRegistration = this.bundleContext
-                .registerService(InstanceType.PEER.getServices(), bgpPeer, properties);
-        bgpPeer.setServiceRegistration(serviceRegistration);
-    }
-
-    private synchronized void registerAppPeerInstance(final AppPeer appPeer, final String peerInstanceName) {
-        final Dictionary<String, String> properties = new Hashtable<>();
-        properties.put(InstanceType.PEER.getBeanName(), peerInstanceName);
-        final ServiceRegistration<?> serviceRegistration = this.bundleContext
-                .registerService(InstanceType.APP_PEER.getServices(), appPeer, properties);
-        appPeer.setServiceRegistration(serviceRegistration);
-    }
-
     private synchronized void initiatePeerInstance(final InstanceIdentifier<Neighbor> neighborIdentifier,
             final Neighbor neighbor, final PeerBean bgpPeer) {
-        final String peerInstanceName = getNeighborInstanceName(neighborIdentifier);
         if (this.ribImpl != null) {
             bgpPeer.start(this.ribImpl, neighbor, this.bgpIid, this.peerGroupLoader, this.tableTypeRegistry);
-            if (bgpPeer instanceof BgpPeer) {
-                registerPeerInstance((BgpPeer) bgpPeer, peerInstanceName);
-            } else if (bgpPeer instanceof AppPeer) {
-                registerAppPeerInstance((AppPeer) bgpPeer, peerInstanceName);
-            }
         }
         if (this.instantiated.get()) {
             bgpPeer.instantiateServiceInstance();
index 9817ce0f3bd03fb6c3c342a2cbce83d98ed0c316..9e23d684b1520a84eefff494745027b67a2ca4e2 100644 (file)
@@ -33,9 +33,16 @@ import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
+import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
 import org.opendaylight.mdsal.common.api.CommitInfo;
+import org.opendaylight.mdsal.dom.api.DOMSchemaService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
+import org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.BGPRibRoutingPolicyFactory;
 import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
+import org.opendaylight.protocol.bgp.rib.impl.spi.BGPDispatcher;
+import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.peer.group.PeerGroup;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.peer.group.PeerGroupKey;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.Bgp;
@@ -53,8 +60,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.open
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.osgi.framework.BundleContext;
-import org.osgi.service.blueprint.container.BlueprintContainer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -62,8 +67,6 @@ public final class BgpDeployerImpl implements ClusteredDataTreeChangeListener<Bg
         AutoCloseable {
     private static final Logger LOG = LoggerFactory.getLogger(BgpDeployerImpl.class);
     private final InstanceIdentifier<NetworkInstance> networkInstanceIId;
-    private final BlueprintContainer container;
-    private final BundleContext bundleContext;
     private final BGPTableTypeRegistryConsumer tableTypeRegistry;
     private final ClusterSingletonServiceProvider provider;
     @GuardedBy("this")
@@ -82,17 +85,36 @@ public final class BgpDeployerImpl implements ClusteredDataTreeChangeListener<Bg
     private ListenerRegistration<BgpDeployerImpl> registration;
     @GuardedBy("this")
     private boolean closed;
+    private final RIBExtensionConsumerContext ribExtensionContext;
+    private final BGPDispatcher dispatcher;
+    private final BGPRibRoutingPolicyFactory policyFactory;
+    private final BindingCodecTreeFactory codecFactory;
+    private final DOMDataBroker domBroker;
+    private final DOMSchemaService schemaService;
+    private final RpcProviderRegistry rpcRegistry;
 
-    public BgpDeployerImpl(final String networkInstanceName, final ClusterSingletonServiceProvider provider,
-            final BlueprintContainer container,
-            final BundleContext bundleContext, final DataBroker dataBroker,
-            final BGPTableTypeRegistryConsumer mappingService) {
+    public BgpDeployerImpl(final String networkInstanceName,
+                           final ClusterSingletonServiceProvider provider,
+                           final DataBroker dataBroker,
+                           final BGPTableTypeRegistryConsumer mappingService,
+                           final RIBExtensionConsumerContext ribExtensionContext,
+                           final BGPDispatcher dispatcher,
+                           final BGPRibRoutingPolicyFactory policyFactory,
+                           final BindingCodecTreeFactory codecFactory,
+                           final DOMDataBroker domBroker,
+                           final DOMSchemaService schemaService,
+                           final RpcProviderRegistry rpcRegistry) {
         this.dataBroker = requireNonNull(dataBroker);
         this.provider = requireNonNull(provider);
         this.networkInstanceName = requireNonNull(networkInstanceName);
-        this.container = requireNonNull(container);
-        this.bundleContext = requireNonNull(bundleContext);
         this.tableTypeRegistry = requireNonNull(mappingService);
+        this.ribExtensionContext = requireNonNull(ribExtensionContext);
+        this.dispatcher = requireNonNull(dispatcher);
+        this.policyFactory = requireNonNull(policyFactory);
+        this.codecFactory = requireNonNull(codecFactory);
+        this.domBroker = requireNonNull(domBroker);
+        this.schemaService = requireNonNull(schemaService);
+        this.rpcRegistry = rpcRegistry;
         this.networkInstanceIId = InstanceIdentifier.create(NetworkInstances.class)
                 .child(NetworkInstance.class, new NetworkInstanceKey(networkInstanceName));
         initializeNetworkInstance(dataBroker, this.networkInstanceIId).addCallback(new FutureCallback<CommitInfo>() {
@@ -244,7 +266,8 @@ public final class BgpDeployerImpl implements ClusteredDataTreeChangeListener<Bg
         BGPClusterSingletonService old = this.bgpCss.get(bgpInstanceIdentifier);
         if (old == null) {
             old = new BGPClusterSingletonService(this, this.provider, this.tableTypeRegistry,
-                    this.container, this.bundleContext, bgpInstanceIdentifier);
+                    bgpInstanceIdentifier, this.ribExtensionContext, this.dispatcher, this.policyFactory,
+                    this.codecFactory, this.domBroker, this.dataBroker, this.schemaService, this.rpcRegistry);
             this.bgpCss.put(bgpInstanceIdentifier, old);
         }
         old.onGlobalChanged(dataObjectModification);
@@ -256,7 +279,8 @@ public final class BgpDeployerImpl implements ClusteredDataTreeChangeListener<Bg
         BGPClusterSingletonService old = this.bgpCss.get(bgpInstanceIdentifier);
         if (old == null) {
             old = new BGPClusterSingletonService(this, this.provider, this.tableTypeRegistry,
-                    this.container, this.bundleContext, bgpInstanceIdentifier);
+                    bgpInstanceIdentifier, this.ribExtensionContext, this.dispatcher, this.policyFactory,
+                    this.codecFactory, this.domBroker, this.dataBroker, this.schemaService, this.rpcRegistry);
             this.bgpCss.put(bgpInstanceIdentifier, old);
         }
         old.onNeighborsChanged(dataObjectModification);
index 925a4c79518dcc06d8918d283032fdff3a4521f9..4f80e26efe9d051c0f23638bd5a561be6ef31e60 100644 (file)
@@ -67,7 +67,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.ClusterIdentifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.osgi.framework.ServiceRegistration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -77,8 +76,6 @@ public class BgpPeer implements PeerBean, BGPPeerStateConsumer {
 
     private final RpcProviderRegistry rpcRegistry;
     @GuardedBy("this")
-    private ServiceRegistration<?> serviceRegistration;
-    @GuardedBy("this")
     private Neighbor currentConfiguration;
     @GuardedBy("this")
     private BgpPeerSingletonService bgpPeerSingletonService;
@@ -150,11 +147,8 @@ public class BgpPeer implements PeerBean, BGPPeerStateConsumer {
     }
 
     @Override
-    public synchronized void close() {
-        if (this.serviceRegistration != null) {
-            this.serviceRegistration.unregister();
-            this.serviceRegistration = null;
-        }
+    public void close() {
+        // No-op
     }
 
     @Override
@@ -207,10 +201,6 @@ public class BgpPeer implements PeerBean, BGPPeerStateConsumer {
         return this.bgpPeerSingletonService.getPeerState();
     }
 
-    synchronized void setServiceRegistration(final ServiceRegistration<?> serviceRegistration) {
-        this.serviceRegistration = serviceRegistration;
-    }
-
     synchronized void removePeer(final BGPPeerRegistry bgpPeerRegistry) {
         if (BgpPeer.this.currentConfiguration != null) {
             bgpPeerRegistry.removePeer(BgpPeer.this.currentConfiguration.getNeighborAddress());
index adecec086744628c272d67c24a2f3147b547ec84..2d0ededb2c1de6f12409e45157da5ed13c028b88 100644 (file)
@@ -58,7 +58,6 @@ import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
-import org.osgi.framework.ServiceRegistration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -73,7 +72,6 @@ public final class RibImpl implements RIB, BGPRibStateConsumer, AutoCloseable {
     private final DOMSchemaService domSchemaService;
     private final BGPRibRoutingPolicyFactory policyProvider;
     private RIBImpl ribImpl;
-    private ServiceRegistration<?> serviceRegistration;
     private ListenerRegistration<SchemaContextListener> schemaContextRegistration;
     private List<AfiSafi> afiSafi;
     private AsNumber asNumber;
@@ -205,18 +203,6 @@ public final class RibImpl implements RIB, BGPRibStateConsumer, AutoCloseable {
             this.schemaContextRegistration.close();
             this.schemaContextRegistration = null;
         }
-        if (this.serviceRegistration != null) {
-            try {
-                this.serviceRegistration.unregister();
-            } catch (final IllegalStateException e) {
-                LOG.warn("Failed to unregister {} service instance", this, e);
-            }
-            this.serviceRegistration = null;
-        }
-    }
-
-    void setServiceRegistration(final ServiceRegistration<?> serviceRegistration) {
-        this.serviceRegistration = serviceRegistration;
     }
 
     @Override
index a74d4b41f22d7ce1ecf6efa67c38e5aef9ad41f8..bd9d1866dee85d4695a9d625e30f284975d37b3f 100644 (file)
         destroy-method="close">
     <argument value="global-bgp"/>
     <argument ref="clusterSingletonServiceProvider"/>
-    <argument ref="blueprintContainer"/>
-    <argument ref="blueprintBundleContext"/>
     <argument ref="dataBroker"/>
     <argument ref="bgpTableTypeRegistry"/>
-  </bean>
-
-  <reference id="policiesProvider" interface="org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.BGPRibRoutingPolicyFactory"/>
-  <bean id="ribImpl" class="org.opendaylight.protocol.bgp.rib.impl.config.RibImpl" scope="prototype">
     <argument ref="globalBgpExtensions"/>
     <argument ref="BGPDispatcher"/>
     <argument ref="policiesProvider"/>
     <argument ref="codecTreeFactory"/>
     <argument ref="domDataBroker"/>
-    <argument ref="dataBroker"/>
     <argument ref="domSchemaService"/>
-  </bean>
-
-  <bean id="bgpPeer" class="org.opendaylight.protocol.bgp.rib.impl.config.BgpPeer" scope="prototype">
     <argument ref="rpcRegistry"/>
   </bean>
 
-  <bean id="appPeer" class="org.opendaylight.protocol.bgp.rib.impl.config.AppPeer" scope="prototype"/>
+  <reference id="policiesProvider" interface="org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.BGPRibRoutingPolicyFactory"/>
 
   <bean id="bgpStateCollector" class="org.opendaylight.protocol.bgp.rib.impl.state.BGPStateCollectorImpl"/>
   <service ref="bgpStateCollector" interface="org.opendaylight.protocol.bgp.rib.spi.state.BGPStateConsumer"/>
index 39bd7989d0543a74154c20b0973af80972de4d72..4b54027661a5e2203840325417bca3700bbbece2 100644 (file)
@@ -57,7 +57,6 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.osgi.framework.ServiceRegistration;
 
 class AbstractConfig extends DefaultRibPoliciesMockTest {
     protected static final AsNumber AS = new AsNumber(72L);
@@ -73,8 +72,6 @@ class AbstractConfig extends DefaultRibPoliciesMockTest {
     @Mock
     protected BGPDispatcher dispatcher;
     @Mock
-    protected ServiceRegistration<?> serviceRegistration;
-    @Mock
     protected BGPPeerRegistry bgpPeerRegistry;
     @Mock
     protected ListenerRegistration<?> listener;
index 88cac35e27e05d1d1e277adeed2d1477915d2db6..5bdfa9c8f6f71d601c9f27c4d2f8a6d31566d9da 100644 (file)
@@ -5,16 +5,15 @@
  * 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.protocol.bgp.rib.impl.config;
 
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.opendaylight.protocol.bgp.rib.impl.config.AbstractConfig.TABLES_KEY;
 import static org.opendaylight.protocol.bgp.rib.impl.config.RIBTestsUtil.createGlobalIpv4;
@@ -23,27 +22,34 @@ import static org.opendaylight.protocol.bgp.rib.impl.config.RIBTestsUtil.createN
 import static org.opendaylight.protocol.bgp.rib.impl.config.RIBTestsUtil.createNeighborsNoRR;
 import static org.opendaylight.protocol.util.CheckUtil.checkPresentConfiguration;
 
-import java.util.Dictionary;
+import io.netty.util.concurrent.Future;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
 import org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
+import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
+import org.opendaylight.protocol.bgp.openconfig.routing.policy.impl.BGPRibRoutingPolicyFactoryImpl;
+import org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.registry.StatementRegistry;
 import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
 import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
 import org.opendaylight.protocol.bgp.rib.impl.DefaultRibPoliciesMockTest;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPDispatcher;
-import org.opendaylight.protocol.bgp.rib.impl.spi.InstanceType;
+import org.opendaylight.protocol.bgp.rib.impl.spi.BGPPeerRegistry;
 import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext;
+import org.opendaylight.protocol.bgp.rib.spi.SimpleRIBExtensionProviderContext;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.Bgp;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.Global;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.Neighbors;
@@ -61,9 +67,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.type
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.blueprint.container.BlueprintContainer;
 
 public class BgpDeployerImplTest extends DefaultRibPoliciesMockTest {
     private static final BgpTableType TABLE_TYPE = new BgpTableTypeImpl(Ipv4AddressFamily.class,
@@ -80,10 +83,6 @@ public class BgpDeployerImplTest extends DefaultRibPoliciesMockTest {
     private static final InstanceIdentifier<Neighbors> NEIGHBORS_II = BGP_II.child(Neighbors.class);
     private static final int VERIFY_TIMEOUT_MILIS = 5000;
 
-    @Mock
-    private BlueprintContainer blueprintContainer;
-    @Mock
-    private BundleContext bundleContext;
     @Mock
     private BGPTableTypeRegistryConsumer tableTypeRegistry;
     @Mock
@@ -91,9 +90,17 @@ public class BgpDeployerImplTest extends DefaultRibPoliciesMockTest {
     @Mock
     private ListenerRegistration<?> dataTreeRegistration;
     @Mock
-    private ServiceRegistration<?> registration;
-    @Mock
     private ClusterSingletonServiceProvider singletonServiceProvider;
+    @Mock
+    private BGPDispatcher dispatcher;
+    @Mock
+    private BindingCodecTreeFactory codecFactory;
+    @Mock
+    private DOMSchemaService schemaService;
+    @Mock
+    private RpcProviderRegistry rpcRegistry;
+    @Mock
+    private BGPPeerRegistry peerRegistry;
     private BgpDeployerImpl deployer;
 
     @Override
@@ -104,11 +111,6 @@ public class BgpDeployerImplTest extends DefaultRibPoliciesMockTest {
         doReturn("mapping").when(this.tableTypeRegistry).toString();
         doReturn(Optional.of(TABLE_TYPE)).when(this.tableTypeRegistry).getTableType(any());
         doReturn(Optional.of(TABLES_KEY)).when(this.tableTypeRegistry).getTableKey(any());
-        doNothing().when(this.registration).unregister();
-        doReturn(this.registration).when(this.bundleContext).registerService(eq(InstanceType.RIB.getServices()),
-                any(), any(Dictionary.class));
-        doReturn(this.registration).when(this.bundleContext).registerService(eq(InstanceType.PEER.getServices()),
-                any(), any(Dictionary.class));
 
         doNothing().when(this.dataTreeRegistration).close();
         doReturn("bgpPeer").when(this.modification).toString();
@@ -116,23 +118,32 @@ public class BgpDeployerImplTest extends DefaultRibPoliciesMockTest {
         doReturn(GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy()).when(extension).getClassLoadingStrategy();
 
         final ClusterSingletonServiceRegistration serviceRegistration = mock(ClusterSingletonServiceRegistration.class);
-        doReturn(serviceRegistration).when(this.singletonServiceProvider).registerClusterSingletonService(any());
+        doAnswer(invocationOnMock -> {
+            final ClusterSingletonService service = invocationOnMock.getArgument(0);
+            service.instantiateServiceInstance();
+            return serviceRegistration;
+        }).when(this.singletonServiceProvider).registerClusterSingletonService(any(ClusterSingletonService.class));
         doNothing().when(serviceRegistration).close();
 
-        final DOMSchemaService schemaService = mock(DOMSchemaService.class);
+        schemaService = mock(DOMSchemaService.class);
         doNothing().when(this.dataTreeRegistration).close();
 
         doReturn(this.dataTreeRegistration).when(schemaService).registerSchemaContextListener(any());
 
-        final RibImpl ribImpl = new RibImpl(extension, mock(BGPDispatcher.class), this.policyProvider,
-                mock(BindingCodecTreeFactory.class), getDomBroker(), getDataBroker(), schemaService);
-        doReturn(ribImpl).when(this.blueprintContainer).getComponentInstance(eq("ribImpl"));
-
-        doReturn(new BgpPeer(mock(RpcProviderRegistry.class)))
-                .when(this.blueprintContainer).getComponentInstance(eq("bgpPeer"));
-
-        this.deployer = new BgpDeployerImpl(NETWORK_INSTANCE_NAME, this.singletonServiceProvider,
-                this.blueprintContainer, this.bundleContext, getDataBroker(), this.tableTypeRegistry);
+        final DataBroker dataBroker = getDataBroker();
+        final DOMDataBroker domBroker = getDomBroker();
+        final SimpleRIBExtensionProviderContext ribExtensionContext = new SimpleRIBExtensionProviderContext();
+        final BGPRibRoutingPolicyFactoryImpl policyFactory = new BGPRibRoutingPolicyFactoryImpl(dataBroker,
+            new StatementRegistry());
+        doReturn(this.peerRegistry).when(this.dispatcher).getBGPPeerRegistry();
+        final Future future = Mockito.mock(Future.class);
+        doReturn(true).when(future).cancel(true);
+        doReturn(future).when(this.dispatcher).createReconnectingClient(any(), any(), anyInt(), any());
+        doNothing().when(this.peerRegistry).addPeer(any(), any(), any());
+        doNothing().when(this.peerRegistry).removePeer(any());
+        this.deployer = new BgpDeployerImpl(NETWORK_INSTANCE_NAME, this.singletonServiceProvider, dataBroker,
+                this.tableTypeRegistry, ribExtensionContext, dispatcher, policyFactory, codecFactory, domBroker,
+                schemaService, rpcRegistry);
     }
 
     @Test
@@ -140,33 +151,20 @@ public class BgpDeployerImplTest extends DefaultRibPoliciesMockTest {
         deployer.init();
         checkPresentConfiguration(getDataBroker(), NETWORK_II);
         createRib(createGlobalIpv4());
+        verify(this.schemaService, timeout(VERIFY_TIMEOUT_MILIS)).registerSchemaContextListener(any());
 
-        verify(this.blueprintContainer, timeout(VERIFY_TIMEOUT_MILIS)).getComponentInstance(eq("ribImpl"));
-        verify(this.bundleContext, timeout(VERIFY_TIMEOUT_MILIS)).registerService(eq(InstanceType.RIB.getServices()),
-            any(), any(Dictionary.class));
 
         //change with same rib already existing
         createRib(createGlobalIpv4());
-        verify(this.blueprintContainer).getComponentInstance(eq("ribImpl"));
-        verify(this.bundleContext).registerService(eq(InstanceType.RIB.getServices()), any(), any(Dictionary.class));
+        verify(this.schemaService, timeout(VERIFY_TIMEOUT_MILIS)).registerSchemaContextListener(any());
 
         //Update for existing rib
         createRib(createGlobalIpv6());
-
-        verify(this.blueprintContainer).getComponentInstance(eq("ribImpl"));
-        verify(this.bundleContext, timeout(VERIFY_TIMEOUT_MILIS).times(2)).registerService(
-            eq(InstanceType.RIB.getServices()), any(), any(Dictionary.class));
-        verify(this.dataTreeRegistration).close();
-        verify(this.registration).unregister();
+        verify(this.dataTreeRegistration, timeout(VERIFY_TIMEOUT_MILIS)).close();
 
         //Delete for existing rib
         deleteRib();
-
-        verify(this.blueprintContainer).getComponentInstance(eq("ribImpl"));
-        verify(this.bundleContext, timeout(VERIFY_TIMEOUT_MILIS).times(2))
-                .registerService(eq(InstanceType.RIB.getServices()), any(), any(Dictionary.class));
         verify(this.dataTreeRegistration, timeout(VERIFY_TIMEOUT_MILIS).times(2)).close();
-        verify(this.registration, timeout(VERIFY_TIMEOUT_MILIS).times(2)).unregister();
 
         deployer.close();
     }
@@ -178,29 +176,18 @@ public class BgpDeployerImplTest extends DefaultRibPoliciesMockTest {
 
         createRib(createGlobalIpv4());
         createNeighbor(createNeighbors());
-        verify(this.blueprintContainer, timeout(VERIFY_TIMEOUT_MILIS)).getComponentInstance(eq("bgpPeer"));
-        verify(this.bundleContext, timeout(VERIFY_TIMEOUT_MILIS)).registerService(eq(InstanceType.PEER.getServices()),
-                any(BgpPeer.class), any(Dictionary.class));
+        verify(this.peerRegistry, timeout(VERIFY_TIMEOUT_MILIS).times(1)).addPeer(any(), any(), any());
 
         //change with same peer already existing
         createNeighbor(createNeighbors());
-        verify(this.blueprintContainer).getComponentInstance(eq("bgpPeer"));
-        verify(this.bundleContext).registerService(eq(InstanceType.PEER.getServices()),
-                any(BgpPeer.class), any(Dictionary.class));
-
+        verify(this.peerRegistry, timeout(VERIFY_TIMEOUT_MILIS).times(1)).addPeer(any(), any(), any());
         //Update for peer
         createNeighbor(createNeighborsNoRR());
-
-        verify(this.blueprintContainer).getComponentInstance(eq("bgpPeer"));
-        verify(this.bundleContext, timeout(VERIFY_TIMEOUT_MILIS).times(2))
-                .registerService(eq(InstanceType.PEER.getServices()), any(BgpPeer.class), any(Dictionary.class));
-        verify(this.registration).unregister();
+        verify(this.peerRegistry, timeout(VERIFY_TIMEOUT_MILIS).times(2)).addPeer(any(), any(), any());
+        verify(this.peerRegistry, timeout(VERIFY_TIMEOUT_MILIS).times(1)).removePeer(any());
 
         deleteNeighbors();
-        //Delete existing Peer
-        verify(this.bundleContext, times(2))
-                .registerService(eq(InstanceType.PEER.getServices()), any(BgpPeer.class), any(Dictionary.class));
-        verify(this.registration, timeout(VERIFY_TIMEOUT_MILIS).times(2)).unregister();
+        verify(this.peerRegistry, timeout(VERIFY_TIMEOUT_MILIS).times(2)).removePeer(any());
 
         deployer.close();
     }
index 1802a0079c93d203a91a8a9b1ebb7f9b500ee8b8..0739185af40f50743ebfb2bc4387178e510ab1ee 100644 (file)
@@ -125,7 +125,6 @@ public class BgpPeerTest extends AbstractConfig {
     public void setUp() throws Exception {
         super.setUp();
         this.bgpPeer = new BgpPeer(Mockito.mock(RpcProviderRegistry.class));
-        Mockito.doNothing().when(this.serviceRegistration).unregister();
     }
 
     @Test
@@ -150,7 +149,6 @@ public class BgpPeerTest extends AbstractConfig {
         } catch (final IllegalStateException expected) {
             assertEquals("Previous peer instance was not closed.", expected.getMessage());
         }
-        this.bgpPeer.setServiceRegistration(this.serviceRegistration);
         this.bgpPeer.closeServiceInstance();
         this.bgpPeer.close();
         verify(this.future).cancel(true);
@@ -169,7 +167,6 @@ public class BgpPeerTest extends AbstractConfig {
 
         this.bgpPeer.closeServiceInstance();
         this.bgpPeer.close();
-        verify(this.serviceRegistration).unregister();
         verify(this.future, times(2)).cancel(true);
 
         final Neighbor neighborDiffConfig = new NeighborBuilder().setNeighborAddress(NEIGHBOR_ADDRESS)
index 305b8f8655f83f9543a0745f09ba004ed7f76963..b3cb17301bf939e5e6cba755baa4a74d648b0d52 100644 (file)
@@ -54,7 +54,6 @@ import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.osgi.framework.ServiceRegistration;
 
 public class RibImplTest extends AbstractConfig {
     private static final List<AfiSafi> AFISAFIS = new ArrayList<>();
@@ -81,8 +80,6 @@ public class RibImplTest extends AbstractConfig {
     private ListenerRegistration<?> dataTreeRegistration;
     @Mock
     private RIBSupport<?, ?, ?, ?> ribSupport;
-    @Mock
-    private ServiceRegistration<?> serviceRegistration;
 
     @Override
     @Before
@@ -108,7 +105,6 @@ public class RibImplTest extends AbstractConfig {
         doNothing().when(this.dataTreeRegistration).close();
         doReturn(mock(ListenerRegistration.class)).when(dOMDataTreeChangeService)
                 .registerDataTreeChangeListener(any(), any());
-        doNothing().when(this.serviceRegistration).unregister();
     }
 
     @Test
@@ -121,7 +117,6 @@ public class RibImplTest extends AbstractConfig {
                 this.domDataBroker,
                 getDataBroker(),
                 this.domSchemaService);
-        ribImpl.setServiceRegistration(this.serviceRegistration);
         ribImpl.start(createGlobal(), "rib-test", this.tableTypeRegistry);
         verify(this.extension).getClassLoadingStrategy();
         verify(this.domDataBroker).getSupportedExtensions();
@@ -146,7 +141,6 @@ public class RibImplTest extends AbstractConfig {
         ribImpl.close();
         verify(this.dataTreeRegistration).close();
         verify(this.dataTreeRegistration).close();
-        verify(this.serviceRegistration).unregister();
     }
 
     private static Global createGlobal() {
index 450bff1038f181e26d91386187dce8ddedadc5f6..67224f2392e44c1aa35dea7040e1740d5b1162cb 100644 (file)
             <groupId>io.netty</groupId>
             <artifactId>netty-common</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-singleton-common-api</artifactId>
index 844c6f6f3fbcb5285a9dda9fc04ed4198ad427e7..50519ee4b5ba02499d75fcdfa7b1b9488bb95395 100644 (file)
             <groupId>io.netty</groupId>
             <artifactId>netty-buffer</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-            <scope>provided</scope>
-        </dependency>
 
         <!-- Test dependencies -->
         <dependency>
index 9267ecf388d35b2b1ff2052defe4dde5757b7138..fd3a7b60cd88c1626d0b9ff398d858666f23317c 100644 (file)
@@ -20,7 +20,6 @@ import javax.annotation.concurrent.GuardedBy;
 import org.opendaylight.bgpcep.bgp.topology.provider.spi.BgpTopologyDeployer;
 import org.opendaylight.bgpcep.bgp.topology.provider.spi.BgpTopologyProvider;
 import org.opendaylight.bgpcep.bgp.topology.provider.spi.TopologyReferenceSingletonService;
-import org.opendaylight.bgpcep.topology.TopologyReference;
 import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
@@ -36,8 +35,6 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.
 import org.opendaylight.yangtools.concepts.AbstractRegistration;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceRegistration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -53,15 +50,13 @@ public final class BgpTopologyDeployerImpl implements BgpTopologyDeployer, AutoC
     @GuardedBy("this")
     private final Set<Topology> topologies = new HashSet<>();
     private final DataBroker dataBroker;
-    private final BundleContext context;
     private final ClusterSingletonServiceProvider singletonProvider;
     private ListenerRegistration<BgpTopologyDeployerImpl> registration;
     @GuardedBy("this")
     private boolean closed;
 
-    public BgpTopologyDeployerImpl(final BundleContext context, final DataBroker dataBroker,
+    public BgpTopologyDeployerImpl(final DataBroker dataBroker,
             final ClusterSingletonServiceProvider singletonProvider) {
-        this.context = requireNonNull(context);
         this.dataBroker = requireNonNull(dataBroker);
         this.singletonProvider = requireNonNull(singletonProvider);
     }
@@ -136,9 +131,6 @@ public final class BgpTopologyDeployerImpl implements BgpTopologyDeployer, AutoC
         final Dictionary<String, String> properties = new Hashtable<>();
         properties.put("topology-id", topologyProviderService.getInstanceIdentifier()
                 .firstKeyOf(Topology.class).getTopologyId().getValue());
-        final ServiceRegistration<?> registerService = this.context
-                .registerService(new String[]{TopologyReference.class.getName()},
-                        topologyProviderService, properties);
         final ClusterSingletonServiceRegistration registerClusterSingletonService =
                 registerSingletonService(topologyProviderService);
         return new AbstractRegistration() {
@@ -149,8 +141,6 @@ public final class BgpTopologyDeployerImpl implements BgpTopologyDeployer, AutoC
                 } catch (final Exception e) {
                     LOG.warn("Failed to close ClusterSingletonServiceRegistration {} for TopologyBuilder {}",
                             registerClusterSingletonService, topologyProviderService.getInstanceIdentifier(), e);
-                } finally {
-                    registerService.unregister();
                 }
             }
         };
index 2a3e792e9a6f1802efd26aa497251b5f8a52fd67..83236c4eb4ea88e710820894ad9cdecc9acfa1c3 100644 (file)
@@ -15,7 +15,6 @@
   <bean id="bgpTopologyDeployer" class="org.opendaylight.bgpcep.bgp.topology.provider.config.BgpTopologyDeployerImpl"
         init-method="init"
         destroy-method="close">
-    <argument ref="blueprintBundleContext"/>
     <argument ref="dataBroker"/>
     <argument ref="clusterSingletonServiceProvider"/>
   </bean>