]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/execution/Executor.java
@update:81; Ability to copy the content of resources locally, thus enabling launchyin...
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.simple / src / main / java / org / argeo / slc / core / execution / Executor.java
1 package org.argeo.slc.core.execution;
2
3 import org.apache.commons.logging.Log;
4 import org.apache.commons.logging.LogFactory;
5 import org.argeo.slc.execution.ExecutionContext;
6 import org.argeo.slc.execution.ExecutionFlow;
7 import org.argeo.slc.process.SlcExecution;
8 import org.springframework.beans.BeansException;
9 import org.springframework.context.ApplicationContext;
10 import org.springframework.context.ApplicationContextAware;
11 import org.springframework.context.ApplicationEvent;
12 import org.springframework.context.ApplicationListener;
13
14 public class Executor implements ApplicationListener, ApplicationContextAware {
15 private final static Log log = LogFactory.getLog(Executor.class);
16
17 private ApplicationContext applicationContext;
18
19 public void onApplicationEvent(ApplicationEvent event) {
20 if (event instanceof NewExecutionEvent) {
21 SlcExecution slcExecution = ((NewExecutionEvent) event)
22 .getSlcExecution();
23 MapExecutionContext executionContext = new MapExecutionContext();
24 ExecutionThread thread = new ExecutionThread(executionContext,
25 slcExecution);
26 thread.start();
27 }
28
29 }
30
31 public void setApplicationContext(ApplicationContext applicationContext)
32 throws BeansException {
33 this.applicationContext = applicationContext;
34 }
35
36 private class ExecutionThread extends Thread {
37 private final SlcExecution slcExecution;
38 private final ExecutionContext executionContext;
39
40 public ExecutionThread(MapExecutionContext executionContext,
41 SlcExecution slcExecution) {
42 super("SLC Execution #" + executionContext.getUuid());
43 this.slcExecution = slcExecution;
44 this.executionContext = executionContext;
45 }
46
47 public void run() {/*
48 // Initialize from SlcExecution
49 MapExecutionContext.registerExecutionContext(executionContext);
50 MapExecutionContext.getVariables()
51 .putAll(slcExecution.getAttributes());
52
53 try {
54 log.info("Start execution #"
55 + MapExecutionContext.getExecutionUuid());
56 String executionBean = slcExecution.getAttributes().get(
57 "slc.flows");
58 ExecutionFlow main = (ExecutionFlow) applicationContext
59 .getBean(executionBean);
60 main.execute();
61 } catch (Exception e) {
62 log.error("Execution " + executionContext.getUuid()
63 + " failed.", e);
64 } finally {
65 applicationContext.publishEvent(new ExecutionFinishedEvent(
66 this, executionContext));
67 }
68 */
69 }
70 }
71
72 }