Merge "Revert "Revert "BUG-1425: Integrated new Binding to Normalized Node codec...
[controller.git] / opendaylight / md-sal / sal-binding-api / src / main / java / org / opendaylight / controller / sal / binding / api / AbstractBrokerAwareActivator.java
index d1a3f85f946e1165e1b1c6f4bed46699e6a5dac4..bd78c584ee95ec9a6f9fff0f3dce728c154f0222 100644 (file)
@@ -1,3 +1,10 @@
+/*
+ * Copyright (c) 2014 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.controller.sal.binding.api;
 
 import java.util.concurrent.ExecutorService;
@@ -16,63 +23,69 @@ public abstract class AbstractBrokerAwareActivator implements BundleActivator {
     private ServiceTracker<BindingAwareBroker, BindingAwareBroker> tracker;
     private BindingAwareBroker broker;
     private 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);;
+                    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);
+            mdActivationPool.execute(new Runnable() {
+
+                @Override
+                public void run() {
+                    onBrokerRemoved(broker, context);
+                }
+            });
         }
 
     };
-    
-    
+
+
     @Override
     public final void start(BundleContext context) throws Exception {
         this.context = context;
         startImpl(context);
         tracker = new ServiceTracker<>(context, BindingAwareBroker.class, customizer);
         tracker.open();
-        
+
     }
 
 
-    
+
     @Override
     public final  void stop(BundleContext context) throws Exception {
         tracker.close();
         stopImpl(context);
     }
-    
-    
+
+
     /**
      * Called when this bundle is started (before
      * {@link #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
      *            The execution context of the bundle being started.
      * @throws Exception
@@ -92,10 +105,10 @@ public abstract class AbstractBrokerAwareActivator implements BundleActivator {
      * started. There should be no active threads that were started by this
      * bundle when this bundle returns. A stopped bundle must not call any
      * Framework objects.
-     * 
+     *
      * <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
      *         marked as stopped, and the Framework will remove the bundle's
@@ -105,11 +118,11 @@ public abstract class AbstractBrokerAwareActivator implements BundleActivator {
     protected void stopImpl(BundleContext context) {
         // NOOP
     }
-    
+
 
     protected abstract void onBrokerAvailable(BindingAwareBroker broker, BundleContext context);
-    
+
     protected void onBrokerRemoved(BindingAwareBroker broker, BundleContext context) {
-        
+        stopImpl(context);
     }
 }