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