[FELIX-4352] Detect missing configuration dependency before checking dependency cycles.


git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1556575 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dependencymanager/shell/src/main/java/org/apache/felix/dm/shell/DMCommand.java b/dependencymanager/shell/src/main/java/org/apache/felix/dm/shell/DMCommand.java
index 02437e5..95b008f 100644
--- a/dependencymanager/shell/src/main/java/org/apache/felix/dm/shell/DMCommand.java
+++ b/dependencymanager/shell/src/main/java/org/apache/felix/dm/shell/DMCommand.java
@@ -628,13 +628,16 @@
         for (ComponentDependencyDeclaration cdd : componentDependencies) {
             if (cdd.getState() == ComponentDependencyDeclaration.STATE_UNAVAILABLE_REQUIRED) {
                 downDeps++;
+                // Detect missing configuration dependency
+                if (CONFIGURATION.equals(cdd.getType())) {
+                    String bsn = c.getBundleContext().getBundle().getSymbolicName();
+                    return new ComponentId(cdd.getName(), cdd.getType(), bsn);
+                }
+
+                // Detect if the missing dependency is a root cause failure
                 ComponentDeclaration component = getComponentDeclaration(cdd.getName(), downComponents);
                 if (component == null) {
-                    String contextName = null;
-                    if (CONFIGURATION.equals(cdd.getType())) {
-                        contextName = c.getBundleContext().getBundle().getSymbolicName();
-                    }
-                    return new ComponentId(cdd.getName(), cdd.getType(), contextName);
+                    return new ComponentId(cdd.getName(), cdd.getType(), null);
                 }
                 // Detect circular dependency
                 ComponentId componentId = new ComponentId(cdd.getName(), cdd.getType(), null);