diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2014-04-09 11:51:20 +0200 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2014-04-09 11:51:20 +0200 |
| commit | 2da70c5647f883994d58f7be0d68b0b5e334c72c (patch) | |
| tree | 29517b5565dd73513895d85b8d41c90c61322ee3 | |
| parent | c7f54d570ab6a8a3c3ba1db6045d003f988f191d (diff) | |
Merge module properties as the loading order is established, so that
they override each other in the correct order.
| -rw-r--r-- | src/main/java/com/c2kernel/process/module/ModuleManager.java | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/main/java/com/c2kernel/process/module/ModuleManager.java b/src/main/java/com/c2kernel/process/module/ModuleManager.java index 3cb4904..9ff42e5 100644 --- a/src/main/java/com/c2kernel/process/module/ModuleManager.java +++ b/src/main/java/com/c2kernel/process/module/ModuleManager.java @@ -54,11 +54,6 @@ public class ModuleManager { if (moduleNs.contains(newModule.getNs())) throw new ModuleException("Module namespace clash: "+newModule.getNs());
Logger.debug(4, "Module found: "+newModule.getNs()+" - "+newModule.getName());
loadedModules.add(newModule.getName()); moduleNs.add(newModule.getNs());
- Properties modProp = newModule.getProperties(isServer);
- for (Enumeration<?> e = modProp.propertyNames(); e.hasMoreElements();) {
- String propName = (String)e.nextElement();
- props.put(propName, modProp.get(propName));
- }
} catch (ModuleException e) {
Logger.error("Could not load module description from "+newModuleURL);
throw e;
@@ -69,7 +64,7 @@ public class ModuleManager { }
Logger.debug(5, "Checking dependencies");
- boolean allDepsPresent = false;
+ boolean allDepsPresent = true;
ArrayList<String> prevModules = new ArrayList<String>();
for (int i=0; i<modules.size();i++) {
@@ -84,7 +79,7 @@ public class ModuleManager { Logger.msg(6, thisMod.getName()+" depends on "+dep);
if (!loadedModules.contains(dep)) {
Logger.error("UNMET MODULE DEPENDENCY: "+thisMod.getName()+" requires "+dep);
- allDepsPresent = true;
+ allDepsPresent = false;
}
else if (!prevModules.contains(dep)) {
Logger.msg(1, "ModuleManager: Shuffling "+thisMod.getName()+" to the end to fulfil dependency on "+dep);
@@ -104,9 +99,15 @@ public class ModuleManager { Logger.die("Circular module dependencies involving: "+badMod);
}
}
+ // Current module is 'next', this is the correct order to load the properties
+ Properties modProp = thisMod.getProperties(isServer);
+ for (Enumeration<?> e = modProp.propertyNames(); e.hasMoreElements();) {
+ String propName = (String)e.nextElement();
+ props.put(propName, modProp.get(propName));
+ }
prevModules.add(thisMod.getName());
}
- if (allDepsPresent) Logger.die("Unmet module dependencies. Cannot continue");
+ if (!allDepsPresent) Logger.die("Unmet module dependencies. Cannot continue");
}
public String getModuleVersions() {
|
