X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fcore%2Fapi%2FAbstractProvider.java;h=b621e5f9896f2f3f9a6b004ba8af50ec73334291;hp=22b0bf25cf9b65958131ace905b0176d351f4147;hb=refs%2Fchanges%2F26%2F69326%2F3;hpb=c31af714994cbaed40299758460916b2c7101158 diff --git a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/AbstractProvider.java b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/AbstractProvider.java index 22b0bf25cf..b621e5f989 100644 --- a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/AbstractProvider.java +++ b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/AbstractProvider.java @@ -9,7 +9,6 @@ package org.opendaylight.controller.sal.core.api; import java.util.Collection; import java.util.Collections; - import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; @@ -21,37 +20,43 @@ public abstract class AbstractProvider implements BundleActivator, Provider,Serv private Broker broker; private BundleContext context; private ServiceTracker tracker; + @Override public Collection getProviderFunctionality() { return Collections.emptySet(); } @Override - public final void start(BundleContext context) throws Exception { - this.context = context; - this.startImpl(context); - tracker = new ServiceTracker<>(context, Broker.class, this); + public final void start(final BundleContext bundleContext) throws Exception { + this.context = bundleContext; + this.startImpl(bundleContext); + tracker = new ServiceTracker<>(bundleContext, Broker.class, this); tracker.open(); } - protected void startImpl(BundleContext context) { + protected void startImpl(final BundleContext bundleContext) { // NOOP } - protected void stopImpl(BundleContext context) { + + protected void stopImpl(final BundleContext bundleContext) { // NOOP } @Override - public final void stop(BundleContext context) throws Exception { + public final void stop(final BundleContext bundleContext) throws Exception { broker = null; - tracker.close(); + + if (tracker != null) { + tracker.close(); + } + tracker = null; - stopImpl(context); + stopImpl(bundleContext); } @Override - public Broker addingService(ServiceReference reference) { - if(broker == null) { + public Broker addingService(final ServiceReference reference) { + if (broker == null && context != null) { broker = context.getService(reference); broker.registerProvider(this, context); return broker; @@ -61,13 +66,12 @@ public abstract class AbstractProvider implements BundleActivator, Provider,Serv } @Override - public void modifiedService(ServiceReference reference, Broker service) { + public void modifiedService(final ServiceReference reference, final Broker service) { // NOOP } @Override - public void removedService(ServiceReference reference, Broker service) { + public void removedService(final ServiceReference reference, final Broker service) { stopImpl(context); } - }