From dc2bbfdda8ee4f32937c3e91f77e52dc4501f0f1 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Wed, 25 Jun 2014 15:21:14 +0200 Subject: Validate module resources to schema. Die if module resource import error. Fixes #181 Conflicts: src/main/java/com/c2kernel/process/Bootstrap.java --- src/main/java/com/c2kernel/process/Bootstrap.java | 11 +++++++++++ src/main/java/com/c2kernel/process/module/Module.java | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'src/main/java/com') diff --git a/src/main/java/com/c2kernel/process/Bootstrap.java b/src/main/java/com/c2kernel/process/Bootstrap.java index 0678729..f32764c 100644 --- a/src/main/java/com/c2kernel/process/Bootstrap.java +++ b/src/main/java/com/c2kernel/process/Bootstrap.java @@ -9,6 +9,7 @@ import java.util.StringTokenizer; import org.custommonkey.xmlunit.Diff; import org.custommonkey.xmlunit.XMLUnit; +import com.c2kernel.common.InvalidDataException; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.entity.proxy.AgentProxy; import com.c2kernel.entity.proxy.ItemProxy; @@ -27,6 +28,7 @@ import com.c2kernel.lookup.Path; import com.c2kernel.lookup.RolePath; import com.c2kernel.persistency.ClusterStorage; import com.c2kernel.persistency.outcome.Outcome; +import com.c2kernel.persistency.outcome.OutcomeValidator; import com.c2kernel.persistency.outcome.Viewpoint; import com.c2kernel.process.resource.DefaultResourceImportHandler; import com.c2kernel.process.resource.ResourceImportHandler; @@ -192,6 +194,15 @@ public class Bootstrap } // data was missing or doesn't match + // validate it + OutcomeValidator validator = OutcomeValidator.getValidator(LocalObjectLoader.getSchema(newOutcome.getSchemaType(), newOutcome.getSchemaVersion())); + String error = validator.validate(newOutcome.getData()); + if (error.length() > 0) { + Logger.error("Outcome not valid: \n " + error); + throw new InvalidDataException(error, ""); + } + + // store Logger.msg("Bootstrap.verifyResource() - Writing new "+newOutcome.getSchemaType()+" v"+version+" to "+typeImpHandler.getName()+" "+itemName); History hist = new History(thisProxy.getSystemKey(), thisProxy); Transition predefDone = new Transition(0, "Done", 0, 0); diff --git a/src/main/java/com/c2kernel/process/module/Module.java b/src/main/java/com/c2kernel/process/module/Module.java index 873754f..195c883 100644 --- a/src/main/java/com/c2kernel/process/module/Module.java +++ b/src/main/java/com/c2kernel/process/module/Module.java @@ -84,6 +84,7 @@ public class Module { thisRes.resourceType, thisRes.resourceLocation, info.layer, reset); } catch (Exception ex) { Logger.error(ex); + Logger.die("Error importing module resources. Unsafe to continue."); } } @@ -148,4 +149,4 @@ public class Module { public boolean hasDependency(String dep) { return info.dependency.contains(dep); } -} \ No newline at end of file +} -- cgit v1.2.3