diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2014-06-25 15:16:35 +0200 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2014-06-25 15:16:35 +0200 |
| commit | a891c0a8fcc5b3d06f8de0088139a3ded76744e4 (patch) | |
| tree | 1f26366655057ab582a03f500cf907917cf2e5a3 | |
| parent | 7960b09436ff7eac409a91253dace863750e1120 (diff) | |
Validate module resources to schema. Die if module resource import
error. Fixes #181
| -rw-r--r-- | src/main/java/com/c2kernel/process/Bootstrap.java | 11 | ||||
| -rw-r--r-- | src/main/java/com/c2kernel/process/module/Module.java | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/main/java/com/c2kernel/process/Bootstrap.java b/src/main/java/com/c2kernel/process/Bootstrap.java index 4af01aa..4f29b87 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.TraceableEntity;
import com.c2kernel.entity.proxy.ItemProxy;
@@ -29,6 +30,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;
@@ -184,6 +186,15 @@ public class Bootstrap Logger.msg("Bootstrap.verifyResource() - Item "+itemName+" exists but version "+version+" not found! Attempting to insert new.");
}
// 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 version "+version+" to "+newOutcome.getSchemaType()+" "+itemName);
History hist = new History(thisProxy.getSystemKey(), thisProxy);
Event newEvent = hist.addEvent("system", "Admin", Transitions.DONE, "Bootstrap", "Bootstrap", "Bootstrap", newOutcome.getSchemaType(), 0, String.valueOf(version), States.FINISHED);
diff --git a/src/main/java/com/c2kernel/process/module/Module.java b/src/main/java/com/c2kernel/process/module/Module.java index eb3c614..f148491 100644 --- a/src/main/java/com/c2kernel/process/module/Module.java +++ b/src/main/java/com/c2kernel/process/module/Module.java @@ -82,6 +82,7 @@ public class Module { thisRes.resourceType, thisRes.resourceLocation, reset);
} catch (Exception ex) {
Logger.error(ex);
+ Logger.die("Error importing module resources. Unsafe to continue.");
}
}
|
