From 779718755c22b6a6ad1c8a4b5d040f8a65cc4058 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 25 Jun 2013 17:03:15 +0200 Subject: More intelligent import of module resources. If resources or outcomes have been modified by a different user, do no overwrite them. Reset the properties and workflow though (should be fairly stateless), but leave the collections. --- src/main/java/com/c2kernel/process/Bootstrap.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/main/java/com/c2kernel/process/Bootstrap.java') 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 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) { -- cgit v1.2.3