fixed bug: configuration dependencies were added twice in the service
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@954301 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/Activator.java b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/Activator.java
index 82dde28..f3236dc 100644
--- a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/Activator.java
+++ b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/Activator.java
@@ -40,8 +40,6 @@
// If the "dm.log=true" parameter is configured in the OSGi config.properties
// then, we'll wait for the LogService, else we'll use an optional dependency over it,
// and we'll eventually use a Null LogService Object.
- // Notice that the Felix log service must also be configured from the OSGi config.properites, using
- // the "org.apache.felix.log.storeDebug=true" property, in order to display DEBUG log levels.
boolean logActive = "true".equals(context.getProperty("dm.log"));
dm.add(createService()
diff --git a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ServiceBuilder.java b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ServiceBuilder.java
index 47aa2b5..bd435c6 100644
--- a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ServiceBuilder.java
+++ b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ServiceBuilder.java
@@ -60,11 +60,11 @@
service.setImplementation(b.loadClass(impl));
service.setComposition(composition);
service.setInterface(provide, serviceProperties);
+ // Adds dependencies (except named dependencies, which are managed by the lifecycle handler).
+ addUnamedDependencies(b, dm, service, srvMeta, depsMeta);
// Creates a ServiceHandler, which will filter all service lifecycle callbacks.
ServiceLifecycleHandler lfcleHandler = new ServiceLifecycleHandler(service, b, dm, srvMeta, depsMeta);
service.setCallbacks(lfcleHandler, "init", "start", "stop", "destroy");
- // Adds dependencies (except named dependencies, which are managed by the lifecycle handler).
- addUnamedDependencies(b, dm, service, srvMeta, depsMeta);
}
else
{
diff --git a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ServiceLifecycleHandler.java b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ServiceLifecycleHandler.java
index d9f0976..89c1a33 100644
--- a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ServiceLifecycleHandler.java
+++ b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ServiceLifecycleHandler.java
@@ -95,7 +95,7 @@
private String m_destroy;
private MetaData m_srvMeta;
private List<MetaData> m_depsMeta;
- private List<Dependency> m_deps = new ArrayList<Dependency>();
+ private List<Dependency> m_namedDeps = new ArrayList<Dependency>();
private Bundle m_bundle;
public ServiceLifecycleHandler(Service srv, Bundle srvBundle, DependencyManager dm,
@@ -108,24 +108,6 @@
m_stop = srvMeta.getString(Params.stop, null);
m_destroy = srvMeta.getString(Params.destroy, null);
m_bundle = srvBundle;
-
- // Plug configuration dependencies now, and remove them from the dependency list.
- // (we want these dependencies to be injected before the init method).
-
- String confDependency = DependencyBuilder.DependencyType.ConfigurationDependency.toString();
- Iterator<MetaData> dependencies = depMeta.iterator();
- while (dependencies.hasNext())
- {
- MetaData dependency = dependencies.next();
- if (dependency.getString(Params.type).equals(confDependency))
- {
- // Register Configuration dependency now.
- Dependency dp = new DependencyBuilder(dependency).build(m_bundle, dm);
- srv.add(dp);
- dependencies.remove();
- }
- }
-
m_depsMeta = depMeta;
}
@@ -173,7 +155,7 @@
"ServiceLifecycleHandler.init: adding dependency %s into service %s",
dependency, m_srvMeta);
Dependency d = depBuilder.build(m_bundle, dm, true);
- m_deps.add(d);
+ m_namedDeps.add(d);
service.add(d);
}
}
@@ -184,7 +166,7 @@
{
// Remove "instance bound" flag from all dependencies, because we want to be deactivated
// once we lose one of the deps ...
- Iterator it = m_deps.iterator();
+ Iterator it = m_namedDeps.iterator();
while (it.hasNext())
{
Dependency d = (Dependency) it.next();