[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);