X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2FDefaultExecutionFlow.java;h=0d88c96fde2fddd28c2c1d1e04829765b7c64bb4;hb=d2affd4fedaef80edc403ce9c9bcaef70397d052;hp=a25034e347a3e4dee381b9a2f0819102e91212f7;hpb=8861e83b49d18125979d916418b1e378c6450378;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlow.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlow.java index a25034e34..0d88c96fd 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlow.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlow.java @@ -5,6 +5,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.argeo.slc.SlcException; import org.argeo.slc.core.structure.tree.TreeSPath; import org.argeo.slc.core.structure.tree.TreeSRegistry; @@ -19,6 +21,8 @@ import org.springframework.validation.MapBindingResult; public class DefaultExecutionFlow implements ExecutionFlow, InitializingBean, BeanNameAware { + private final static Log log = LogFactory + .getLog(DefaultExecutionFlow.class); private final ExecutionSpec executionSpec; private String name = null; @@ -28,6 +32,8 @@ public class DefaultExecutionFlow implements ExecutionFlow, InitializingBean, private String path; private StructureRegistry registry = new TreeSRegistry(); + private Boolean failOnError = true; + public DefaultExecutionFlow() { this.executionSpec = new DefaultExecutionSpec(); } @@ -83,8 +89,21 @@ public class DefaultExecutionFlow implements ExecutionFlow, InitializingBean, } public void run() { - for (Runnable executable : executables) { - executable.run(); + try { + for (Runnable executable : executables) { + executable.run(); + } + } catch (RuntimeException e) { + if (failOnError) + throw e; + else { + log.error("Execution flow failed," + + " but process did not fail" + + " because failOnError property" + + " is set to false: " + e); + if (log.isTraceEnabled()) + e.printStackTrace(); + } } } @@ -173,4 +192,12 @@ public class DefaultExecutionFlow implements ExecutionFlow, InitializingBean, this.registry = registry; } + public Boolean getFailOnError() { + return failOnError; + } + + public void setFailOnError(Boolean failOnError) { + this.failOnError = failOnError; + } + }