summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/process
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/c2kernel/process')
-rw-r--r--src/main/java/com/c2kernel/process/Bootstrap.java14
-rw-r--r--src/main/java/com/c2kernel/process/module/Module.java13
-rw-r--r--src/main/java/com/c2kernel/process/module/ModuleManager.java6
3 files changed, 17 insertions, 16 deletions
diff --git a/src/main/java/com/c2kernel/process/Bootstrap.java b/src/main/java/com/c2kernel/process/Bootstrap.java
index 065ef1a..6a87d34 100644
--- a/src/main/java/com/c2kernel/process/Bootstrap.java
+++ b/src/main/java/com/c2kernel/process/Bootstrap.java
@@ -73,7 +73,7 @@ public class Bootstrap
Gateway.getModuleManager().registerModules();
Logger.msg("Bootstrap.run() - Bootstrapping complete");
- } catch (Exception e) {
+ } catch (Throwable e) {
Logger.error(e);
Logger.die("Exception performing bootstrap. Check that everything is OK.");
}
@@ -88,11 +88,11 @@ public class Bootstrap
String bootItems;
Logger.msg(1, "Verifying kernel boot items");
bootItems = FileStringUtility.url2String(Resource.getKernelResourceURL("boot/allbootitems.txt"));
- verifyBootDataItems(bootItems, null);
+ verifyBootDataItems(bootItems, null, true);
Logger.msg(1, "Boot data items complete");
}
- private static void verifyBootDataItems(String bootList, String ns) {
+ private static void verifyBootDataItems(String bootList, String ns, boolean reset) {
StringTokenizer str = new StringTokenizer(bootList, "\n\r");
while (str.hasMoreTokens()) {
String thisItem = str.nextToken();
@@ -103,7 +103,7 @@ public class Bootstrap
String data = Resource.getTextResource(ns, "boot/"+thisItem+(itemType.equals("OD")?".xsd":".xml"));
if (data == null)
Logger.die("No data found for "+getDataType(itemType)+" "+itemName);
- verifyResource(ns, itemName, itemType, data);
+ verifyResource(ns, itemName, itemType, data, reset);
} catch (Exception e) {
Logger.error(e);
Logger.die("Error importing bootstrap items. Unsafe to continue.");
@@ -112,7 +112,7 @@ public class Bootstrap
}
- public static void verifyResource(String ns, String itemName, String itemType, String data) throws Exception {
+ public static void verifyResource(String ns, String itemName, String itemType, String data, boolean reset) throws Exception {
Logger.msg(1, "Bootstrap.verifyResource() - Verifying data of "+getDataType(itemType)+" "+itemName);
Enumeration<Path> en = Gateway.getLDAPLookup().search(getTypeRoot(itemType), itemName);
ItemProxy thisProxy;
@@ -137,6 +137,10 @@ public class Bootstrap
}
else {
Logger.msg("Difference found in "+itemName+": "+xmlDiff.toString());
+ if (!reset && !currentData.getEvent().getStepPath().equals("Bootstrap")) {
+ Logger.msg("Last import was not done by Bootstrap, and reset not requested. Not overwriting.");
+ return;
+ }
}
} catch (ObjectNotFoundException ex) {
diff --git a/src/main/java/com/c2kernel/process/module/Module.java b/src/main/java/com/c2kernel/process/module/Module.java
index a7a85bb..c93a695 100644
--- a/src/main/java/com/c2kernel/process/module/Module.java
+++ b/src/main/java/com/c2kernel/process/module/Module.java
@@ -11,7 +11,6 @@ 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;
@@ -74,13 +73,13 @@ public class Module {
imports.list.add(moduleItem);
}
- public void importAll(ItemProxy serverEntity, String moduleXML) throws Exception {
+ public void importAll(ItemProxy serverEntity, String moduleXML, boolean reset) throws Exception {
addModuleItem(moduleXML);
int systemAgentId = Gateway.getLDAPLookup().getRoleManager().getAgentPath("system").getSysKey();
for (ModuleResource thisRes : imports.getResources()) {
try {
- Bootstrap.verifyResource(ns, thisRes.name, thisRes.resourceType, Resource.getTextResource(ns, thisRes.resourceLocation));
+ Bootstrap.verifyResource(ns, thisRes.name, thisRes.resourceType, Resource.getTextResource(ns, thisRes.resourceLocation), reset);
} catch (Exception ex) {
Logger.error(ex);
}
@@ -112,13 +111,7 @@ public class Module {
for (NewItem thisItem : imports.getItems()) {
thisItem.setNamespace(ns);
- try {
- new DomainPath(new DomainPath(thisItem.initialPath), thisItem.name).getEntity();
- Logger.msg(3, "Module.importAll() - Item '"+thisItem.name+"' found.");
- continue;
- } catch (ObjectNotFoundException ex) { }
- Logger.msg("Module.importAll() - Item '"+thisItem.name+"' not found. Creating.");
- thisItem.create(systemAgentId);
+ thisItem.create(systemAgentId, reset);
}
}
diff --git a/src/main/java/com/c2kernel/process/module/ModuleManager.java b/src/main/java/com/c2kernel/process/module/ModuleManager.java
index b4c990f..f072f66 100644
--- a/src/main/java/com/c2kernel/process/module/ModuleManager.java
+++ b/src/main/java/com/c2kernel/process/module/ModuleManager.java
@@ -144,11 +144,15 @@ public class ModuleManager {
}
Logger.debug(3, "Registering modules");
+ boolean reset = Gateway.getProperty("Module.reset", "false").equals("true");
+
for (Module thisMod : modules) {
Logger.msg("Registering module "+thisMod.getName());
try {
- thisMod.importAll(serverEntity, modulesXML.get(thisMod.ns));
+ String nsReset = Gateway.getProperty("Module."+thisMod.ns+".reset");
+ boolean thisReset = nsReset == null?reset:nsReset.equals("true");
+ thisMod.importAll(serverEntity, modulesXML.get(thisMod.ns), thisReset);
} catch (Exception e) {
Logger.error(e);
throw new ModuleException("Error importing items for module "+thisMod.getName());