summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/process/module
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/c2kernel/process/module')
-rw-r--r--src/main/java/com/c2kernel/process/module/Module.java49
-rw-r--r--src/main/java/com/c2kernel/process/module/ModuleImport.java5
-rw-r--r--src/main/java/com/c2kernel/process/module/ModuleImports.java30
-rw-r--r--src/main/java/com/c2kernel/process/module/ModuleInfo.java1
-rw-r--r--src/main/java/com/c2kernel/process/module/ModuleManager.java31
-rw-r--r--src/main/java/com/c2kernel/process/module/ModuleResource.java13
-rw-r--r--src/main/java/com/c2kernel/process/module/ModuleScript.java11
7 files changed, 65 insertions, 75 deletions
diff --git a/src/main/java/com/c2kernel/process/module/Module.java b/src/main/java/com/c2kernel/process/module/Module.java
index fda4b1b..873754f 100644
--- a/src/main/java/com/c2kernel/process/module/Module.java
+++ b/src/main/java/com/c2kernel/process/module/Module.java
@@ -4,13 +4,15 @@ import java.util.ArrayList;
import java.util.Properties;
import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.entity.imports.ImportDependency;
+import com.c2kernel.entity.imports.ImportDependencyMember;
+import com.c2kernel.entity.imports.ImportAgent;
+import com.c2kernel.entity.imports.ImportItem;
+import com.c2kernel.entity.imports.ImportRole;
+import com.c2kernel.entity.imports.ImportOutcome;
+import com.c2kernel.entity.proxy.AgentProxy;
import com.c2kernel.entity.proxy.ItemProxy;
-import com.c2kernel.lifecycle.instance.predefined.entitycreation.Dependency;
-import com.c2kernel.lifecycle.instance.predefined.entitycreation.DependencyMember;
-import com.c2kernel.lifecycle.instance.predefined.entitycreation.NewAgent;
-import com.c2kernel.lifecycle.instance.predefined.entitycreation.NewItem;
-import com.c2kernel.lifecycle.instance.predefined.entitycreation.NewRole;
-import com.c2kernel.lifecycle.instance.predefined.entitycreation.Outcome;
+import com.c2kernel.lookup.DomainPath;
import com.c2kernel.lookup.RolePath;
import com.c2kernel.process.Bootstrap;
import com.c2kernel.process.Gateway;
@@ -26,17 +28,17 @@ public class Module {
public ModuleImports imports = new ModuleImports();
public ArrayList<ModuleConfig> config = new ArrayList<ModuleConfig>();
public ArrayList<ModuleScript> scripts = new ArrayList<ModuleScript>();
- public NewItem moduleItem;
+ public ImportItem moduleItem;
public Module() {
super();
}
- public void runScript(String event, boolean isServer) throws ScriptingEngineException {
+ public void runScript(String event, AgentProxy user, boolean isServer) throws ScriptingEngineException {
for (ModuleScript script : scripts) {
if (script.shouldRun(event, isServer)) {
Logger.msg("Running "+script.event+" "+script.target+" script from "+name);
- Object result = script.getScript(ns).execute();
+ Object result = script.getScript(ns, user).execute();
if (result instanceof ErrorInfo) {
ErrorInfo error = (ErrorInfo) result;
Logger.error(error.toString());
@@ -50,44 +52,45 @@ public class Module {
}
public void addModuleItem(String moduleXML) {
- NewItem moduleItem = new NewItem(name, "/desc/modules/", "ModuleWorkflow");
+ ImportItem moduleItem = new ImportItem(name, "/desc/modules/", "NoWorkflow", 0);
// Module properties
moduleItem.properties.add(new com.c2kernel.property.Property("Namespace", ns, false));
moduleItem.properties.add(new com.c2kernel.property.Property("Name", name, false));
moduleItem.properties.add(new com.c2kernel.property.Property("Type", "Module", false));
+ moduleItem.properties.add(new com.c2kernel.property.Property("Layer", String.valueOf(info.layer), true));
moduleItem.properties.add(new com.c2kernel.property.Property("Version", info.version, true));
// Add dependency for all children
- Dependency children = new Dependency("Contents");
+ ImportDependency children = new ImportDependency("Contents");
for (ModuleImport thisImport : imports.list) {
- String path = thisImport.getPath(ns);
+ DomainPath path = thisImport.path;
if (path != null)
- children.dependencyMemberList.add(
- new DependencyMember(path+"/"+thisImport.name));
+ children.dependencyMemberList.add(new ImportDependencyMember(path.toString()));
}
moduleItem.dependencyList.add(children);
// Add moduleXML
- Outcome moduleOutcome = new Outcome("Module", 0, "last", null);
+ ImportOutcome moduleOutcome = new ImportOutcome("Module", 0, "last", null);
moduleOutcome.data = moduleXML;
moduleItem.outcomes.add(moduleOutcome);
imports.list.add(moduleItem);
}
- public void importAll(ItemProxy serverEntity, String moduleXML, boolean reset) throws Exception {
+ public void importAll(ItemProxy serverEntity, AgentProxy systemAgent, String moduleXML, boolean reset) throws Exception {
+ int systemAgentId = systemAgent.getSystemKey();
addModuleItem(moduleXML);
- int systemAgentId = Gateway.getLDAPLookup().getRoleManager().getAgentPath("system").getSysKey();
for (ModuleResource thisRes : imports.getResources()) {
try {
- Bootstrap.verifyResource(ns, thisRes.name, thisRes.version, thisRes.resourceType, Gateway.getResource().getTextResource(ns, thisRes.resourceLocation), reset);
+ thisRes.path = Bootstrap.verifyResource(ns, thisRes.name, thisRes.version,
+ thisRes.resourceType, thisRes.resourceLocation, info.layer, reset);
} catch (Exception ex) {
Logger.error(ex);
}
}
- for (NewRole thisRole : imports.getRoles()) {
+ for (ImportRole thisRole : imports.getRoles()) {
RolePath rolePath;
try {
- rolePath = Gateway.getLDAPLookup().getRoleManager().getRolePath(thisRole.name);
+ rolePath = Gateway.getLookup().getRolePath(thisRole.name);
if (rolePath.hasJobList() != thisRole.jobList) {
Logger.msg("Module.importAll() - Role '"+thisRole.name+"' has incorrect joblist settings. Correcting.");
rolePath.setHasJobList(thisRole.jobList);
@@ -98,9 +101,9 @@ public class Module {
}
}
- for (NewAgent thisAgent : imports.getAgents()) {
+ for (ImportAgent thisAgent : imports.getAgents()) {
try {
- Gateway.getLDAPLookup().getRoleManager().getAgentPath(thisAgent.name);
+ Gateway.getLookup().getAgentPath(thisAgent.name);
Logger.msg(3, "Module.importAll() - User '"+thisAgent.name+"' found.");
continue;
} catch (ObjectNotFoundException ex) { }
@@ -108,7 +111,7 @@ public class Module {
thisAgent.create(systemAgentId);
}
- for (NewItem thisItem : imports.getItems()) {
+ for (ImportItem thisItem : imports.getItems()) {
thisItem.setNamespace(ns);
thisItem.create(systemAgentId, reset);
}
diff --git a/src/main/java/com/c2kernel/process/module/ModuleImport.java b/src/main/java/com/c2kernel/process/module/ModuleImport.java
index 77bf3f6..1f5b16d 100644
--- a/src/main/java/com/c2kernel/process/module/ModuleImport.java
+++ b/src/main/java/com/c2kernel/process/module/ModuleImport.java
@@ -1,9 +1,10 @@
package com.c2kernel.process.module;
+import com.c2kernel.lookup.DomainPath;
+
public abstract class ModuleImport {
public String name;
+ public DomainPath path;
- public abstract String getPath(String ns);
-
} \ No newline at end of file
diff --git a/src/main/java/com/c2kernel/process/module/ModuleImports.java b/src/main/java/com/c2kernel/process/module/ModuleImports.java
index 5dfde42..e0ddd90 100644
--- a/src/main/java/com/c2kernel/process/module/ModuleImports.java
+++ b/src/main/java/com/c2kernel/process/module/ModuleImports.java
@@ -2,9 +2,9 @@ package com.c2kernel.process.module;
import java.util.ArrayList;
-import com.c2kernel.lifecycle.instance.predefined.entitycreation.NewAgent;
-import com.c2kernel.lifecycle.instance.predefined.entitycreation.NewItem;
-import com.c2kernel.lifecycle.instance.predefined.entitycreation.NewRole;
+import com.c2kernel.entity.imports.ImportAgent;
+import com.c2kernel.entity.imports.ImportItem;
+import com.c2kernel.entity.imports.ImportRole;
import com.c2kernel.utils.CastorArrayList;
public class ModuleImports extends CastorArrayList<ModuleImport> {
@@ -28,29 +28,29 @@ public class ModuleImports extends CastorArrayList<ModuleImport> {
return subset;
}
- public ArrayList<NewItem> getItems() {
- ArrayList<NewItem> subset = new ArrayList<NewItem>();
+ public ArrayList<ImportItem> getItems() {
+ ArrayList<ImportItem> subset = new ArrayList<ImportItem>();
for (ModuleImport imp : list) {
- if (imp instanceof NewItem)
- subset.add((NewItem)imp);
+ if (imp instanceof ImportItem)
+ subset.add((ImportItem)imp);
}
return subset;
}
- public ArrayList<NewAgent> getAgents() {
- ArrayList<NewAgent> subset = new ArrayList<NewAgent>();
+ public ArrayList<ImportAgent> getAgents() {
+ ArrayList<ImportAgent> subset = new ArrayList<ImportAgent>();
for (ModuleImport imp : list) {
- if (imp instanceof NewAgent)
- subset.add((NewAgent)imp);
+ if (imp instanceof ImportAgent)
+ subset.add((ImportAgent)imp);
}
return subset;
}
- public ArrayList<NewRole> getRoles() {
- ArrayList<NewRole> subset = new ArrayList<NewRole>();
+ public ArrayList<ImportRole> getRoles() {
+ ArrayList<ImportRole> subset = new ArrayList<ImportRole>();
for (ModuleImport imp : list) {
- if (imp instanceof NewRole)
- subset.add((NewRole)imp);
+ if (imp instanceof ImportRole)
+ subset.add((ImportRole)imp);
}
return subset;
}
diff --git a/src/main/java/com/c2kernel/process/module/ModuleInfo.java b/src/main/java/com/c2kernel/process/module/ModuleInfo.java
index 55e02c9..646a915 100644
--- a/src/main/java/com/c2kernel/process/module/ModuleInfo.java
+++ b/src/main/java/com/c2kernel/process/module/ModuleInfo.java
@@ -6,6 +6,7 @@ public class ModuleInfo {
public String desc;
public String version;
+ public int layer = 0;
public ArrayList<String> dependency = new ArrayList<String>();
public ModuleInfo() {
diff --git a/src/main/java/com/c2kernel/process/module/ModuleManager.java b/src/main/java/com/c2kernel/process/module/ModuleManager.java
index 3cb4904..6a69ff8 100644
--- a/src/main/java/com/c2kernel/process/module/ModuleManager.java
+++ b/src/main/java/com/c2kernel/process/module/ModuleManager.java
@@ -9,6 +9,7 @@ import java.util.Properties;
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.entity.proxy.AgentProxy;
import com.c2kernel.entity.proxy.ItemProxy;
import com.c2kernel.lookup.DomainPath;
import com.c2kernel.persistency.outcome.OutcomeValidator;
@@ -22,6 +23,7 @@ public class ModuleManager {
ArrayList<Module> modules = new ArrayList<Module>();
HashMap<String, String> modulesXML = new HashMap<String, String>();
Properties props = new Properties();
+ AgentProxy user;
boolean isServer;
OutcomeValidator moduleValidator;
@@ -54,11 +56,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 +66,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 +81,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 +101,19 @@ 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 void setUser(AgentProxy user) {
+ this.user = user;
}
public String getModuleVersions() {
@@ -126,7 +133,7 @@ public class ModuleManager {
public void runScripts(String event) {
for (Module thisMod : modules) {
try {
- thisMod.runScript(event, isServer);
+ thisMod.runScript(event, user, isServer);
} catch (ScriptingEngineException e) {
Logger.error(e);
Logger.die(e.getMessage());
@@ -137,7 +144,7 @@ public class ModuleManager {
public void registerModules() throws ModuleException {
ItemProxy serverEntity;
try {
- serverEntity = (ItemProxy)Gateway.getProxyManager().getProxy(new DomainPath("/servers/"+Gateway.getProperties().getProperty("ItemServer.name")));
+ serverEntity = Gateway.getProxyManager().getProxy(new DomainPath("/servers/"+Gateway.getProperties().getProperty("ItemServer.name")));
} catch (ObjectNotFoundException e) {
throw new ModuleException("Cannot find local server name.");
}
@@ -151,7 +158,7 @@ public class ModuleManager {
try {
String nsReset = Gateway.getProperties().getProperty("Module."+thisMod.ns+".reset");
boolean thisReset = nsReset == null?reset:nsReset.equals("true");
- thisMod.importAll(serverEntity, modulesXML.get(thisMod.ns), thisReset);
+ thisMod.importAll(serverEntity, user, modulesXML.get(thisMod.ns), thisReset);
} catch (Exception e) {
Logger.error(e);
throw new ModuleException("Error importing items for module "+thisMod.getName());
@@ -159,7 +166,7 @@ public class ModuleManager {
Logger.msg("Module "+thisMod.getName()+" registered");
try {
- thisMod.runScript("startup", true);
+ thisMod.runScript("startup", user, true);
} catch (ScriptingEngineException e) {
Logger.error(e);
throw new ModuleException("Error in startup script for module "+thisMod.getName());
diff --git a/src/main/java/com/c2kernel/process/module/ModuleResource.java b/src/main/java/com/c2kernel/process/module/ModuleResource.java
index 2f7b638..b36623f 100644
--- a/src/main/java/com/c2kernel/process/module/ModuleResource.java
+++ b/src/main/java/com/c2kernel/process/module/ModuleResource.java
@@ -8,17 +8,4 @@ public class ModuleResource extends ModuleImport {
public ModuleResource() {
}
-
- @Override
- public String getPath(String ns) {
- StringBuffer path = new StringBuffer();
- if (resourceType.equals("CA") || resourceType.equals("EA"))
- path.append("/desc/ActivityDesc/");
- if (resourceType.equals("SC"))
- path.append("/desc/Script/");
- if (resourceType.equals("OD"))
- path.append("/desc/OutcomeDesc/");
- path.append("system/").append(ns==null?"kernel":ns);
- return path.toString();
- }
} \ No newline at end of file
diff --git a/src/main/java/com/c2kernel/process/module/ModuleScript.java b/src/main/java/com/c2kernel/process/module/ModuleScript.java
index beed6f9..f16f390 100644
--- a/src/main/java/com/c2kernel/process/module/ModuleScript.java
+++ b/src/main/java/com/c2kernel/process/module/ModuleScript.java
@@ -1,7 +1,6 @@
package com.c2kernel.process.module;
import com.c2kernel.entity.proxy.AgentProxy;
-import com.c2kernel.process.Gateway;
import com.c2kernel.scripting.Script;
import com.c2kernel.scripting.ScriptingEngineException;
@@ -23,16 +22,8 @@ public class ModuleScript {
this.script = script;
}
- public Script getScript(String ns) throws ScriptingEngineException {
- AgentProxy user = Gateway.getCurrentUser();
- try {
- if (user == null) user = (AgentProxy)Gateway.getProxyManager().getProxy(
- Gateway.getLDAPLookup().getRoleManager().getAgentPath("system"));
- } catch (Exception ex) {
- throw new ScriptingEngineException("System agent unavailable");
- }
+ public Script getScript(String ns, AgentProxy user) throws ScriptingEngineException {
return new Script(lang, ns+" "+target+" "+event, script, user);
-
}
public boolean shouldRun(String event, boolean isServer) {