--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>argeo.slc.executionflow</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.maven.ide.eclipse.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.springframework.ide.eclipse.core.springbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.springframework.ide.eclipse.core.springnature</nature>
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<beansProjectDescription>
+ <version>1</version>
+ <pluginVersion><![CDATA[2.2.1.v200811281800]]></pluginVersion>
+ <configSuffixes>
+ <configSuffix><![CDATA[xml]]></configSuffix>
+ </configSuffixes>
+ <enableImports><![CDATA[true]]></enableImports>
+ <configs>
+ <config>src/slc/conf/main.xml</config>
+ <config>src/slc/conf/testCases/basic-001.xml</config>
+ <config>src/slc/conf/testCases/basic-002.xml</config>
+ <config>src/slc/conf/basic.xml</config>
+ <config>src/slc/conf/common.xml</config>
+ <config>src/slc/conf/test.xml</config>
+ </configs>
+ <configSets>
+ </configSets>
+</beansProjectDescription>
--- /dev/null
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.argeo.slc</groupId>
+ <artifactId>argeo-slc</artifactId>
+ <version>0.11.3-SNAPSHOT</version>
+ <relativePath>../../org.argeo.slc</relativePath>
+ </parent>
+ <groupId>org.argeo.slc.sandbox</groupId>
+ <artifactId>org.argeo.slc.sandbox.executionflow</artifactId>
+ <name>SLC Sandbox Execution Flow</name>
+ <packaging>jar</packaging>
+ <properties></properties>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+
+
+ <dependency>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.support.simple</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>com.springsource.org.aspectj.runtime</artifactId>
+ <version>1.6.2.RELEASE</version>
+ </dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>com.springsource.org.aspectj.weaver</artifactId>
+ <version>1.6.2.RELEASE</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>com.springsource.org.codehaus.groovy</artifactId>
+ <version>1.5.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.beanshell</groupId>
+ <artifactId>com.springsource.bsh</artifactId>
+ <version>2.0.0.b4</version>
+ </dependency>
+ <dependency>
+ <groupId>net.sourceforge.cglib</groupId>
+ <artifactId>com.springsource.net.sf.cglib</artifactId>
+ <version>2.1.3</version>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
--- /dev/null
+import org.argeo.slc.test.*;
+
+public class BasicExecutionFlow implements org.argeo.slc.executionflow.ExecutionFlow {
+
+ ExecutableTestRun firstSubTest = null;
+ ExecutableTestRun secondSubTest = null;
+
+ void execute(){
+ firstSubTest?.execute();
+ secondSubTest?.execute();
+ }
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"\r
+ xmlns:aop="http://www.springframework.org/schema/aop"\r
+ xsi:schemaLocation="\r
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
+ http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd\r
+ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">\r
+\r
+ <import resource="common.xml" />\r
+\r
+ <bean id="basic.executionSpec" class="org.argeo.slc.execution.SimpleExecutionSpec">\r
+ <property name="attributes">\r
+ <map>\r
+ <entry key="testedComponentId">\r
+ <bean parent="specAttribute" p:value="100" />\r
+ </entry>\r
+ <entry key="testData1">\r
+ <bean parent="refAttribute" p:targetClass="org.argeo.slc.core.test.BasicTestData" />\r
+ </entry>\r
+ <entry key="testData2">\r
+ <bean parent="refAttribute" p:targetClass="org.argeo.slc.core.test.BasicTestData" />\r
+ </entry>\r
+ </map>\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="basic.ref" factory-bean="basic.executionSpec"\r
+ factory-method="createRef" abstract="true" />\r
+\r
+ <bean id="basic.executionFlowTemplate" class="org.argeo.slc.execution.SimpleExecutionFlow"\r
+ abstract="true">\r
+ <property name="executionSpec" ref="basic.executionSpec" />\r
+ <property name="executables">\r
+ <list>\r
+ <ref bean="echo1" />\r
+ <bean parent="testRun">\r
+ <property name="testDefinition" ref="testDef" />\r
+ <property name="testData">\r
+ <bean parent="basic.ref">\r
+ <constructor-arg value="testData1" />\r
+ </bean>\r
+ </property>\r
+ </bean>\r
+ <bean parent="testRun">\r
+ <property name="testDefinition" ref="testDef" />\r
+ <property name="testData" ref="ref1" />\r
+ </bean>\r
+ </list>\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="ref1" parent="basic.ref" scope="prototype">\r
+ <constructor-arg value="testData2" />\r
+ </bean>\r
+\r
+ <bean id="testDef" class="org.argeo.slc.core.test.BasicTestDefinition"\r
+ scope="prototype" />\r
+\r
+ <bean id="testResult" parent="slcDefault.test.basicSimpleTestResult" />\r
+\r
+ <bean id="testRun" class="org.argeo.slc.core.test.SimpleTestRun"\r
+ abstract="true">\r
+ <property name="testResult" ref="testResult" />\r
+ </bean>\r
+\r
+ <!--\r
+ <bean class="org.springframework.aop.framework.ProxyFactoryBean">\r
+ <property name="targetClass"\r
+ value="org.argeo.slc.core.test.BasicTestData" /> <property\r
+ name="targetSource"> <bean\r
+ class="org.argeo.slc.executionflow.ExecutionTargetSource"> <property\r
+ name="name" value="testData" /> <property name="targetClass"\r
+ value="org.argeo.slc.core.test.BasicTestData" /> </bean> </property>\r
+ <property name="proxyTargetClass" value="true" /> </bean>\r
+ -->\r
+\r
+</beans>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"\r
+ xmlns:aop="http://www.springframework.org/schema/aop"\r
+ xsi:schemaLocation="\r
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
+ http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd\r
+ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">\r
+\r
+ <import\r
+ resource="classpath:/org/argeo/slc/core/test/spring/applicationContext.xml" />\r
+\r
+ <bean id="specAttribute" class="org.argeo.slc.execution.SimpleSpecAttribute"\r
+ abstract="true" />\r
+\r
+ <bean id="refAttribute" class="org.argeo.slc.execution.RefSpecAttribute"\r
+ abstract="true" />\r
+\r
+</beans>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"\r
+ xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"\r
+ xsi:schemaLocation="\r
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
+ http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd\r
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd\r
+ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">\r
+\r
+ <import resource="testCases/basic-001.xml" />\r
+ <import resource="testCases/basic-002.xml" />\r
+\r
+ <bean id="main" class="org.argeo.slc.execution.SimpleExecutionFlow">\r
+ <property name="executionSpec">\r
+ <bean class="org.argeo.slc.execution.SimpleExecutionSpec">\r
+ <property name="attributes">\r
+ <map>\r
+ <entry key="testKey">\r
+ <bean parent="specAttribute" p:value="660" />\r
+ </entry>\r
+ </map>\r
+ </property>\r
+ </bean>\r
+ </property>\r
+ <property name="executables">\r
+ <list>\r
+ <ref local="echo1" />\r
+ <ref bean="basic.001" />\r
+ <ref bean="basic.001" />\r
+ <ref bean="basic.002" />\r
+ </list>\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="echo1" parent="echoTemplate" scope="execution">\r
+ <property name="message" value="From main! @{testKey}, slc.flows=@{slc.flows}" />\r
+ <aop:scoped-proxy />\r
+ </bean>\r
+\r
+ <bean id="echoTemplate" class="org.argeo.slc.execution.tasks.Echo"\r
+ abstract="true">\r
+ </bean>\r
+\r
+ <context:annotation-config />\r
+ <bean class="org.argeo.slc.execution.ExecutionRegister" />\r
+\r
+\r
+ <bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">\r
+ <property name="scopes">\r
+ <map>\r
+ <entry key="execution">\r
+ <bean class="org.argeo.slc.execution.ExecutionScope" />\r
+ </entry>\r
+ </map>\r
+ </property>\r
+ </bean>\r
+\r
+ <bean\r
+ class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />\r
+ <bean class="org.argeo.slc.execution.ExecutionParameterPostProcessor" />\r
+ <bean class="org.argeo.slc.execution.InstantiationPostProcessor" />\r
+ <bean class="org.argeo.slc.execution.Executor" />\r
+\r
+ <bean class="org.argeo.slc.execution.ExecutionAspect"></bean>\r
+ <aop:aspectj-autoproxy />\r
+\r
+</beans>
\ No newline at end of file
--- /dev/null
+log4j.rootLogger=WARN, console
+
+## Levels
+log4j.logger.org.argeo=DEBUG
+log4j.logger.org.argeo.slc.executionflow.ExecutionParameterPostProcessor=TRACE
+log4j.logger.org.argeo.slc.executionflow.ExecutionContext=TRACE
+
+## Appenders
+# console is set to be a ConsoleAppender.
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+
+# console uses PatternLayout.
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n
+
+testCase=002
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"\r
+ xmlns:lang="http://www.springframework.org/schema/lang"\r
+ xsi:schemaLocation="\r
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
+ http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd\r
+ ">\r
+\r
+ <import\r
+ resource="classpath:/org/argeo/slc/core/test/spring/applicationContext.xml" />\r
+\r
+ <import resource="testCases/basic-001.xml" />\r
+ <import resource="testCases/basic-002.xml" />\r
+\r
+ <bean id="executionFlow.basic1" class="org.argeo.slc.executionflow.SimpleExecutionFlow">\r
+ <meta key="meta1" value="mata1Value" />\r
+ <qualifier>\r
+ <attribute key="qual1" value="qual1value" />\r
+ </qualifier>\r
+ <property name="executables">\r
+ <list>\r
+ <ref local="testGroovyImpl" />\r
+ <ref local="testBshImpl" />\r
+ <bean parent="testRun" p:testDefinition-ref="testDef"\r
+ p:testData-ref="testData-${testCase}" />\r
+ <bean parent="testRun" p:testDefinition-ref="testDef"\r
+ p:testData-ref="testData-${testCase}" />\r
+ </list>\r
+ </property>\r
+ </bean>\r
+\r
+ <lang:groovy id="executionFlow.groovy1" script-source="src/slc/conf/BasicExecutionFlow.groovy">\r
+ <lang:property name="firstSubTest">\r
+ <bean parent="testRun" p:testDefinition-ref="testDef"\r
+ p:testData-ref="testData-${testCase}" />\r
+ </lang:property>\r
+ </lang:groovy>\r
+\r
+ <bean id="testGroovyImpl" parent="testGroovy">\r
+ <property name="message" value="Hello World! Groovy" />\r
+ </bean>\r
+ <bean id="testBshImpl" parent="testBsh">\r
+ <property name="message" value="Hello World! Beanshell" />\r
+ </bean>\r
+\r
+ <bean id="testDef" class="org.argeo.slc.core.test.BasicTestDefinition"\r
+ scope="prototype" />\r
+\r
+ <bean\r
+ class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />\r
+\r
+ <bean id="testResult" parent="slcDefault.test.basicSimpleTestResult">\r
+ </bean>\r
+\r
+ <bean id="testRun" class="org.argeo.slc.core.test.SimpleTestRun"\r
+ abstract="true">\r
+ <property name="testResult" ref="testResult" />\r
+ </bean>\r
+\r
+ <lang:groovy id="testGroovyBean">\r
+ <lang:inline-script><![CDATA[\r
+ class Message {\r
+ String message = 'test'\r
+ \r
+ public String getMessage(){\r
+ return message;\r
+ }\r
+ }\r
+ ]]></lang:inline-script>\r
+ </lang:groovy>\r
+\r
+ <lang:groovy id="testGroovy">\r
+ <lang:inline-script><![CDATA[\r
+ class GroovyMessenger extends org.argeo.slc.core.test.SimpleTestRun {\r
+ \r
+ String message = 'test'\r
+ \r
+ void execute(){\r
+ println(message);\r
+ }\r
+ }\r
+ ]]></lang:inline-script>\r
+ </lang:groovy>\r
+\r
+ <lang:bsh id="testBsh" script-interfaces="org.argeo.slc.test.ExecutableTestRun">\r
+ <lang:inline-script><![CDATA[\r
+ setStrictJava(true);\r
+\r
+ class BshMessenger extends org.argeo.slc.core.test.SimpleTestRun {\r
+\r
+ String message = "test";\r
+\r
+ public void execute(){\r
+ System.out.println(message);\r
+ }\r
+ \r
+ public void setMessage(String message){\r
+ this.message = message;\r
+ }\r
+ }\r
+ ]]></lang:inline-script>\r
+ </lang:bsh>\r
+\r
+</beans>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"\r
+ xmlns:aop="http://www.springframework.org/schema/aop"\r
+ xsi:schemaLocation="\r
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
+ http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd\r
+ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">\r
+\r
+ <import resource="../basic.xml" />\r
+\r
+ <bean id="basic.001" parent="basic.executionFlowTemplate">\r
+ <property name="parameters">\r
+ <map>\r
+ <entry key="testData1" value-ref="basic.001.testData" />\r
+ <entry key="testData2">\r
+ <bean class="org.argeo.slc.core.test.BasicTestData" scope="execution">\r
+ <aop:scoped-proxy />\r
+ <property name="expected" value="tata101" />\r
+ <property name="reached" value="tata@{testKey}" />\r
+ </bean>\r
+ </entry>\r
+ </map>\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="basic.001.testData" class="org.argeo.slc.core.test.BasicTestData"\r
+ scope="execution">\r
+ <aop:scoped-proxy />\r
+ <property name="expected" value="tata100" />\r
+ <property name="reached" value="tata@{testedComponentId}" />\r
+ </bean>\r
+\r
+ <bean id="basic.001.testData2" class="org.argeo.slc.core.test.context.DefaultContextTestData">\r
+ </bean>\r
+\r
+</beans>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"\r
+\r
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+ <import resource="../basic.xml" />\r
+\r
+ <bean id="basic.002" parent="basic.executionFlowTemplate">\r
+ <property name="parameters">\r
+ <map>\r
+ <entry key="testData1">\r
+ <bean class="org.argeo.slc.core.test.BasicTestData">\r
+ <property name="expected" value="toto" />\r
+ <property name="reached" value="toto" />\r
+ </bean>\r
+ </entry>\r
+ <entry key="testData2">\r
+ <bean class="org.argeo.slc.core.test.BasicTestData">\r
+ <property name="expected" value="tata" />\r
+ <property name="reached" value="toto" />\r
+ </bean>\r
+ </entry>\r
+ </map>\r
+ </property>\r
+ </bean>\r
+</beans>
\ No newline at end of file