import org.springframework.security.Authentication;
import org.springframework.security.context.SecurityContextHolder;
+/**
+ * Main thread coordinating an {@link ExecutionProcess}, launching parallel or
+ * sequential {@link ExecutionThread}s.
+ */
public class ProcessThread extends Thread {
private final static Log log = LogFactory.getLog(ProcessThread.class);
private Set<ExecutionThread> executionThreads = Collections
.synchronizedSet(new HashSet<ExecutionThread>());
- private Boolean hadAnError = false;
+ // private Boolean hadAnError = false;
private Boolean killed = false;
public ProcessThread(ThreadGroup processesThreadGroup,
super(processesThreadGroup, "SLC Process #" + process.getUuid());
this.executionModulesManager = executionModulesManager;
this.process = process;
- processThreadGroup = new ProcessThreadGroup(executionModulesManager,
- this);
+ processThreadGroup = new ProcessThreadGroup(process);
}
public final void run() {
// Start logging
new LoggingThread().start();
- String oldStatus = process.getStatus();
+ // String oldStatus = process.getStatus();
process.setStatus(ExecutionProcess.RUNNING);
- executionModulesManager.dispatchUpdateStatus(process, oldStatus,
- ExecutionProcess.RUNNING);
+ // executionModulesManager.dispatchUpdateStatus(process, oldStatus,
+ // ExecutionProcess.RUNNING);
try {
process();
/** Make sure this is called BEFORE all the threads are interrupted. */
private void computeFinalStatus() {
- String oldStatus = process.getStatus();
+ // String oldStatus = process.getStatus();
// TODO: error management at flow level?
if (killed)
process.setStatus(ExecutionProcess.KILLED);
- else if (hadAnError)
+ else if (processThreadGroup.hadAnError())
process.setStatus(ExecutionProcess.ERROR);
else
process.setStatus(ExecutionProcess.COMPLETED);
- executionModulesManager.dispatchUpdateStatus(process, oldStatus,
- process.getStatus());
+ // executionModulesManager.dispatchUpdateStatus(process, oldStatus,
+ // process.getStatus());
log.info("\n## SLC Process #" + process.getUuid() + " "
+ process.getStatus() + "\n");
}
if (killed)
return;
- ExecutionThread thread = new ExecutionThread(this, realizedFlow);
+ ExecutionThread thread = new ExecutionThread(processThreadGroup,
+ executionModulesManager, realizedFlow);
executionThreads.add(thread);
thread.start();
return;
}
- public void notifyError() {
- hadAnError = true;
- }
-
- public synchronized void flowCompleted() {
- // notifyAll();
- }
+// public void notifyError() {
+// hadAnError = true;
+// }
+//
+// public synchronized void flowCompleted() {
+// // notifyAll();
+// }
public ExecutionProcess getProcess() {
return process;