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);
+ }
}
}
}