Author: angelo.vandersijpt at luminis.eu
Date: Wed Dec 22 21:38:01 2010
New Revision: 539

Log:
AMDATU-200 The ServiceDependentActivator should only call the init method once.

Modified:
   
trunk/amdatu-libraries/utilities/src/main/java/org/amdatu/libraries/utilities/osgi/ServiceDependentActivator.java

Modified: 
trunk/amdatu-libraries/utilities/src/main/java/org/amdatu/libraries/utilities/osgi/ServiceDependentActivator.java
==============================================================================
--- 
trunk/amdatu-libraries/utilities/src/main/java/org/amdatu/libraries/utilities/osgi/ServiceDependentActivator.java
   (original)
+++ 
trunk/amdatu-libraries/utilities/src/main/java/org/amdatu/libraries/utilities/osgi/ServiceDependentActivator.java
   Wed Dec 22 21:38:01 2010
@@ -16,6 +16,8 @@
  */
 package org.amdatu.libraries.utilities.osgi;
 
+import java.util.concurrent.atomic.AtomicBoolean;
+
 import org.apache.felix.dm.Component;
 import org.apache.felix.dm.DependencyActivatorBase;
 import org.apache.felix.dm.DependencyManager;
@@ -48,12 +50,15 @@
 
     public abstract void initWithDependencies(BundleContext context, 
DependencyManager manager) throws Exception;
 
-    private class SpiWatcher {
+   private class SpiWatcher {
         private volatile DependencyManager m_dependencyManager;
         private volatile BundleContext m_bundleContext;
+        private AtomicBoolean m_started = new AtomicBoolean(false);
 
         public void start() throws Exception {
-            initWithDependencies(m_bundleContext, m_dependencyManager);
+            if (m_started.compareAndSet(false, true)) {
+                initWithDependencies(m_bundleContext, m_dependencyManager);
+            }
         }
     }
 }

Reply via email to