01: package org.bpmscript.web;
02:
03: import org.mozilla.javascript.Context;
04: import org.mozilla.javascript.EvaluatorException;
05: import org.mozilla.javascript.Script;
06: import org.springframework.validation.Errors;
07: import org.springframework.validation.Validator;
08:
09: public class NewProcessValidator implements Validator {
10:
11: public void compile(String name, String source) {
12: Context cx = Context.enter();
13: cx.setOptimizationLevel(-1);
14: try {
15: cx.compileString(source, name, 0, null);
16: } finally {
17: Context.exit();
18: }
19: }
20:
21: public boolean supports(Class clazz) {
22: return clazz == NewProcess.class;
23: }
24:
25: public void validate(Object command, Errors errors) {
26: NewProcess newProcess = (NewProcess) command;
27: if (newProcess.getProcessName() == null
28: || newProcess.getProcessName().trim().length() == 0) {
29: errors.rejectValue("processName", "error.required",
30: "Process Name is Required");
31: }
32: try {
33: compile(newProcess.getProcessName(), newProcess.getSource());
34: } catch (EvaluatorException ex) {
35: errors.rejectValue("source", "error.compile", ex.details());
36: errors.rejectValue("source", "error.compile", ex
37: .lineSource());
38: errors.rejectValue("source", "error.compile", "line "
39: + ex.lineNumber() + " column " + ex.columnNumber());
40: }
41: }
42:
43: }
|