import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
+@Deprecated
public abstract class AbstractBrokerAwareActivator implements BundleActivator {
- private static final ExecutorService mdActivationPool = Executors.newCachedThreadPool();
+ private static final ExecutorService MD_ACTIVATION_POOL = Executors.newCachedThreadPool();
private BundleContext context;
private ServiceTracker<BindingAwareBroker, BindingAwareBroker> tracker;
private BindingAwareBroker broker;
- private ServiceTrackerCustomizer<BindingAwareBroker, BindingAwareBroker> customizer = new ServiceTrackerCustomizer<BindingAwareBroker, BindingAwareBroker>() {
+ private final ServiceTrackerCustomizer<BindingAwareBroker, BindingAwareBroker> customizer =
+ new ServiceTrackerCustomizer<BindingAwareBroker, BindingAwareBroker>() {
@Override
public BindingAwareBroker addingService(ServiceReference<BindingAwareBroker> reference) {
broker = context.getService(reference);
- mdActivationPool.execute(new Runnable() {
-
- @Override
- public void run() {
- onBrokerAvailable(broker, context);;
- }
- });
+ MD_ACTIVATION_POOL.execute(() -> onBrokerAvailable(broker, context));
return broker;
}
@Override
public void modifiedService(ServiceReference<BindingAwareBroker> reference, BindingAwareBroker service) {
- // TODO Auto-generated method stub
-
+ removedService(reference, service);
+ addingService(reference);
}
@Override
public void removedService(ServiceReference<BindingAwareBroker> reference, BindingAwareBroker service) {
- // TODO Auto-generated method stub
-
+ broker = context.getService(reference);
+ MD_ACTIVATION_POOL.execute(() -> onBrokerRemoved(broker, context));
}
};
@Override
- public final void start(BundleContext context) throws Exception {
- this.context = context;
- startImpl(context);
- tracker = new ServiceTracker<>(context, BindingAwareBroker.class, customizer);
+ public final void start(BundleContext bundleContext) {
+ this.context = bundleContext;
+ startImpl(bundleContext);
+ tracker = new ServiceTracker<>(bundleContext, BindingAwareBroker.class, customizer);
tracker.open();
}
@Override
- public final void stop(BundleContext context) throws Exception {
- tracker.close();
- stopImpl(context);
+ public final void stop(BundleContext bundleContext) {
+ if (tracker != null) {
+ tracker.close();
+ }
+ stopImpl(bundleContext);
}
-
/**
* Called when this bundle is started (before
- * {@link #onSessionInitiated(ProviderContext)} so the Framework can perform
+ * {@link BindingAwareProvider#onSessionInitiated(ProviderContext)} so the Framework can perform
* the bundle-specific activities necessary to start this bundle. This
* method can be used to register services or to allocate any resources that
* this bundle needs.
* <p>
* This method must complete and return to its caller in a timely manner.
*
- * @param context
+ * @param bundleContext
* The execution context of the bundle being started.
- * @throws Exception
+ * @throws RuntimeException
* If this method throws an exception, this bundle is marked as
* stopped and the Framework will remove this bundle's
* listeners, unregister all services registered by this bundle,
* and release all services used by this bundle.
*/
- protected void startImpl(BundleContext context) {
+ protected void startImpl(BundleContext bundleContext) {
// NOOP
}
* <p>
* This method must complete and return to its caller in a timely manner.
*
- * @param context The execution context of the bundle being stopped.
- * @throws Exception If this method throws an exception, the bundle is still
+ * @param bundleContext The execution context of the bundle being stopped.
+ * @throws RuntimeException If this method throws an exception, the bundle is still
* marked as stopped, and the Framework will remove the bundle's
* listeners, unregister all services registered by the bundle, and
* release all services used by the bundle.
*/
- protected void stopImpl(BundleContext context) {
+ protected void stopImpl(BundleContext bundleContext) {
// NOOP
}
+ protected abstract void onBrokerAvailable(BindingAwareBroker bindingBroker, BundleContext bundleContext);
- protected abstract void onBrokerAvailable(BindingAwareBroker broker, BundleContext context);
-
- protected void onBrokerRemoved(BindingAwareBroker broker, BundleContext context) {
-
+ protected void onBrokerRemoved(BindingAwareBroker bindingBroker, BundleContext bundleContext) {
+ stopImpl(bundleContext);
}
}