X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2FExecutionThread.java;h=9289c7f56f03acd98c8b3921775aa850a474fa88;hb=6de9c4036be9e318f59a0ffa187570f5999c53cb;hp=ec69c68d7f1ab103c87132c74ea147be692759e4;hpb=58e0e18d64a2080680a9f8397b0dfa2894519910;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionThread.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionThread.java index ec69c68d7..9289c7f56 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionThread.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionThread.java @@ -22,6 +22,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.slc.SlcException; import org.argeo.slc.execution.ExecutionFlowDescriptor; +import org.argeo.slc.execution.ExecutionModulesManager; import org.argeo.slc.execution.ExecutionStep; import org.argeo.slc.execution.RealizedFlow; import org.springframework.security.Authentication; @@ -30,20 +31,20 @@ import org.springframework.security.context.SecurityContextHolder; /** Thread of a single execution */ public class ExecutionThread extends Thread { public final static String SYSPROP_EXECUTION_AUTO_UPGRADE = "slc.execution.autoupgrade"; - private final static Log log = LogFactory.getLog(ExecutionThread.class); + private ExecutionModulesManager executionModulesManager; private final RealizedFlow realizedFlow; - private final ProcessThread processThread; private List destructionCallbacks = new ArrayList(); - public ExecutionThread(ProcessThread processThread, + public ExecutionThread(ProcessThreadGroup processThreadGroup, + ExecutionModulesManager executionModulesManager, RealizedFlow realizedFlow) { - super(processThread.getProcessThreadGroup(), "Flow " + super(processThreadGroup, "Flow " + realizedFlow.getFlowDescriptor().getName()); this.realizedFlow = realizedFlow; - this.processThread = processThread; + this.executionModulesManager = executionModulesManager; } public void run() { @@ -59,38 +60,44 @@ public class ExecutionThread extends Thread { .getFlowDescriptor(); String flowName = executionFlowDescriptor.getName(); - dispatchAddStep(new ExecutionStep(realizedFlow.getModuleName(), - ExecutionStep.PHASE_START, "Flow " + flowName)); + getProcessThreadGroup().dispatchAddStep( + new ExecutionStep(realizedFlow.getModuleName(), + ExecutionStep.PHASE_START, "Flow " + flowName)); try { String autoUpgrade = System .getProperty(SYSPROP_EXECUTION_AUTO_UPGRADE); if (autoUpgrade != null && autoUpgrade.equals("true")) - processThread.getExecutionModulesManager().upgrade( - realizedFlow.getModuleNameVersion()); - + executionModulesManager.upgrade(realizedFlow + .getModuleNameVersion()); + executionModulesManager.start(realizedFlow.getModuleNameVersion()); + // // START FLOW - processThread.getExecutionModulesManager().execute(realizedFlow); + // + executionModulesManager.execute(realizedFlow); // END FLOW + } catch (FlowConfigurationException e) { + String msg = "Configuration problem with flow " + flowName + ":\n" + + e.getMessage(); + log.error(msg); + getProcessThreadGroup().dispatchAddStep( + new ExecutionStep(realizedFlow.getModuleName(), + ExecutionStep.ERROR, msg + " " + e.getMessage())); } catch (Exception e) { // TODO: re-throw exception ? String msg = "Execution of flow " + flowName + " failed."; log.error(msg, e); - dispatchAddStep(new ExecutionStep(realizedFlow.getModuleName(), - ExecutionStep.ERROR, msg + " " + e.getMessage())); - processThread.notifyError(); + getProcessThreadGroup().dispatchAddStep( + new ExecutionStep(realizedFlow.getModuleName(), + ExecutionStep.ERROR, msg + " " + e.getMessage())); } finally { - processThread.flowCompleted(); - dispatchAddStep(new ExecutionStep(realizedFlow.getModuleName(), - ExecutionStep.PHASE_END, "Flow " + flowName)); + getProcessThreadGroup().dispatchAddStep( + new ExecutionStep(realizedFlow.getModuleName(), + ExecutionStep.PHASE_END, "Flow " + flowName)); processDestructionCallbacks(); } } - private void dispatchAddStep(ExecutionStep step) { - processThread.getProcessThreadGroup().dispatchAddStep(step); - } - private synchronized void processDestructionCallbacks() { for (int i = destructionCallbacks.size() - 1; i >= 0; i--) { try { @@ -111,11 +118,6 @@ public class ExecutionThread extends Thread { } protected ProcessThreadGroup getProcessThreadGroup() { - return processThread.getProcessThreadGroup(); + return (ProcessThreadGroup) getThreadGroup(); } - - public RealizedFlow getRealizedFlow() { - return realizedFlow; - } - -} +} \ No newline at end of file