fixed bug when handling dependencymanager service factory parameters
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@899460 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java
index 924ef80..42e4d20 100644
--- a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java
+++ b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java
@@ -173,8 +173,8 @@
}
catch (Throwable t)
{
- m_logService.log(LogService.LOG_ERROR, "Error while parsing descriptor " + descriptorURL
- + " from bundle " + b.getSymbolicName(), t);
+ m_logService.log(LogService.LOG_ERROR, "Error while parsing descriptor "
+ + descriptorURL + " from bundle " + b.getSymbolicName(), t);
}
finally
{
@@ -235,9 +235,22 @@
throws ClassNotFoundException
{
Service service = dm.createService();
- // Set service impl
- String impl = parser.getString(DescriptorParam.impl);
- service.setImplementation(b.loadClass(impl));
+ // Get factory parameters.
+ String factory = parser.getString(DescriptorParam.factory, null);
+ String factoryMethod = parser.getString(DescriptorParam.factoryMethod, "create");
+
+ if (factory == null)
+ {
+ // Set service impl
+ String impl = parser.getString(DescriptorParam.impl);
+ service.setImplementation(b.loadClass(impl));
+ }
+ else
+ {
+ // Set service factory
+ Class<?> factoryClass = b.loadClass(factory);
+ service.setFactory(factoryClass, factoryMethod);
+ }
// Set service callbacks
String init = parser.getString(DescriptorParam.init, null);
@@ -262,23 +275,6 @@
service.setComposition(composition);
}
- // Set service factory
- String factory = parser.getString(DescriptorParam.factory, null);
- String factoryMethod = parser.getString(DescriptorParam.factoryMethod, null);
-
- if (factory != null)
- {
- if (factoryMethod == null)
- {
- factoryMethod = "create";
- }
- Class<?> factoryClass = b.loadClass(factory);
- service.setFactory(factoryClass, factoryMethod);
- }
- else if (factoryMethod != null)
- {
- service.setFactory(factoryMethod);
- }
return service;
}