summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2014-06-25 15:21:14 +0200
committerAndrew Branson <andrew.branson@cern.ch>2014-06-25 15:21:14 +0200
commitdc2bbfdda8ee4f32937c3e91f77e52dc4501f0f1 (patch)
treeb9391c813e6593cae60efa450b00e565487f1253 /src/main/java/com/c2kernel
parentd0fc327008394ef34c7796976ed6e20c01a64775 (diff)
Validate module resources to schema. Die if module resource import
error. Fixes #181 Conflicts: src/main/java/com/c2kernel/process/Bootstrap.java
Diffstat (limited to 'src/main/java/com/c2kernel')
-rw-r--r--src/main/java/com/c2kernel/process/Bootstrap.java11
-rw-r--r--src/main/java/com/c2kernel/process/module/Module.java3
2 files changed, 13 insertions, 1 deletions
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
+}