]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
ParameterRef corrected
authorOlivier Capillon <olivier.capillon@gmail.com>
Mon, 23 Mar 2009 18:59:48 +0000 (18:59 +0000)
committerOlivier Capillon <olivier.capillon@gmail.com>
Mon, 23 Mar 2009 18:59:48 +0000 (18:59 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@2301 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/execution/ExecutionParameterPostProcessor.java
runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/execution/InstantiationManager.java
runtime/org.argeo.slc.support.simple/src/test/java/org/argeo/slc/core/execution/ExecutionFlowTest.java
runtime/org.argeo.slc.support.simple/src/test/resources/org/argeo/slc/core/execution/multipleFlow.xml
runtime/org.argeo.slc.support.simple/src/test/resources/org/argeo/slc/core/execution/specOverriding.xml [new file with mode: 0644]
runtime/org.argeo.slc.support.simple/src/test/resources/org/argeo/slc/core/execution/test.xml

index 175ef778c68ce5cc502dd576616d57567eb82d1d..a62c9260d852f0ef7f93aa284c8f28fee71de1b0 100644 (file)
@@ -78,7 +78,6 @@ public class ExecutionParameterPostProcessor extends
                PropertyValues sourcePvs = pvs;\r
                if(storedPvsMap.containsKey(beanName)) {\r
                        sourcePvs = storedPvsMap.get(beanName);\r
-                       log.info("Use storedPvsMap for bean " + beanName);\r
                }\r
                \r
                MutablePropertyValues newPvs = new MutablePropertyValues();\r
@@ -127,7 +126,6 @@ public class ExecutionParameterPostProcessor extends
                \r
                if(changesOccured) {\r
                        storedPvsMap.put(beanName, pvs);\r
-                       log.info("Add storedPvsMap for Bean " + beanName);\r
                        return newPvs;\r
                }\r
                else {\r
index 39c2edf7af525ea43d319ac11ca262532afdc4fe..6a5ee29c9027f1e0ce869f0bae50cee577642aed 100644 (file)
@@ -14,23 +14,26 @@ public class InstantiationManager {
        private ThreadLocal<Stack<ExecutionFlow> > flowStack = new ThreadLocal<Stack<ExecutionFlow> >();\r
        \r
        public Object createRef(String name) {\r
-               if((flowStack.get() == null) ||  flowStack.get().empty()) {\r
-                       throw new SlcException("No flow is currently initializing."\r
-                                       + " Declare flow refs as inner beans or prototypes.");\r
-               }\r
-\r
-               /*\r
-                * RefSpecAttribute refSpecAttribute = (RefSpecAttribute) attributes\r
-                * .get(name); Class<?> targetClass = refSpecAttribute.getTargetClass();\r
-                * ExecutionTargetSource targetSource = new ExecutionTargetSource(flow,\r
-                * targetClass, name); ProxyFactory proxyFactory = new ProxyFactory();\r
-                * proxyFactory.setTargetClass(targetClass);\r
-                * proxyFactory.setProxyTargetClass(true);\r
-                * proxyFactory.setTargetSource(targetSource);\r
-                * \r
-                * return proxyFactory.getProxy();\r
-                */\r
-               return flowStack.get().peek().getParameter(name);\r
+               \r
+//             if((flowStack.get() == null) ||  flowStack.get().empty()) {\r
+//                     throw new SlcException("No flow is currently initializing."\r
+//                                     + " Declare flow refs as inner beans or prototypes.");\r
+//             }\r
+//\r
+//             /*\r
+//              * RefSpecAttribute refSpecAttribute = (RefSpecAttribute) attributes\r
+//              * .get(name); Class<?> targetClass = refSpecAttribute.getTargetClass();\r
+//              * ExecutionTargetSource targetSource = new ExecutionTargetSource(flow,\r
+//              * targetClass, name); ProxyFactory proxyFactory = new ProxyFactory();\r
+//              * proxyFactory.setTargetClass(targetClass);\r
+//              * proxyFactory.setProxyTargetClass(true);\r
+//              * proxyFactory.setTargetSource(targetSource);\r
+//              * \r
+//              * return proxyFactory.getProxy();\r
+//              */\r
+//             return flowStack.get().peek().getParameter(name);\r
+               \r
+               return getInitializingFlowParameter(name);\r
        }       \r
        \r
        public void flowInitializationStarted(ExecutionFlow flow, String flowName) {\r
index 721162ebb17ffa2fd85cfaf96d4ff7b80c46d429..c93dda6951f0bd17b0bf1bdbea70c93efe995b35 100644 (file)
@@ -32,12 +32,23 @@ public class ExecutionFlowTest extends TestCase {
 //             applicationContext.close();             \r
 //     }\r
 //     \r
+       \r
+       public void testSpecOverriding() throws Exception {\r
+               ConfigurableApplicationContext applicationContext = createApplicationContext("specOverriding.xml");\r
+               ((ExecutionFlow) applicationContext.getBean("flow2")).execute();\r
+               SimpleTestResult res = (SimpleTestResult) applicationContext.getBean("myTestResult");\r
+               validateTestResult(res);\r
+       }\r
+       \r
        public void testMultipleFlows() throws Exception {\r
                ConfigurableApplicationContext applicationContext = createApplicationContext("multipleFlow.xml");\r
-               log.info("Start Execution");\r
                ((ExecutionFlow) applicationContext.getBean("flow1")).execute();\r
+               SimpleTestResult res = (SimpleTestResult) applicationContext.getBean("myTestResult");\r
+               validateTestResult(res);\r
+               res.getParts().clear();\r
                ((ExecutionFlow) applicationContext.getBean("flow2")).execute();\r
-               applicationContext.close();\r
+               validateTestResult(res, TestStatus.FAILED);     \r
+               applicationContext.close();     \r
        }       \r
        \r
        /**\r
@@ -136,16 +147,16 @@ public class ExecutionFlowTest extends TestCase {
                applicationContext.close();             \r
        }               \r
 \r
-//     public void testListSetMapMultipleFlows() throws Exception {\r
-//             ConfigurableApplicationContext applicationContext = createApplicationContext("listSetMapMultipleFlow.xml");\r
-//             ((ExecutionFlow) applicationContext.getBean("flow1")).execute();\r
-//             SimpleTestResult res = (SimpleTestResult) applicationContext.getBean("myTestResult");\r
-//             validateTestResult(res);                \r
-//             res.getParts().clear();\r
-//             ((ExecutionFlow) applicationContext.getBean("flow2")).execute();\r
-//             validateTestResult(res, TestStatus.FAILED);\r
-//             applicationContext.close();             \r
-//     }                       \r
+       public void testListSetMapMultipleFlows() throws Exception {\r
+               ConfigurableApplicationContext applicationContext = createApplicationContext("listSetMapMultipleFlow.xml");\r
+               ((ExecutionFlow) applicationContext.getBean("flow1")).execute();\r
+               SimpleTestResult res = (SimpleTestResult) applicationContext.getBean("myTestResult");\r
+               validateTestResult(res);                \r
+               res.getParts().clear();\r
+               ((ExecutionFlow) applicationContext.getBean("flow2")).execute();\r
+               validateTestResult(res, TestStatus.FAILED);\r
+               applicationContext.close();             \r
+       }                       \r
        \r
        protected void logException(Throwable ex) {\r
                log.info("Got Exception of class " + ex.getClass().toString()\r
index c8b04d238b9e1edac2b22187b6f7c9bae2651e6b..5e1ac35878efaa46712794e01dc3280f2ab66071 100644 (file)
@@ -7,6 +7,15 @@
 \r
        <import resource="imports.xml" /> \r
 \r
+       <bean id="myTestResult" class="org.argeo.slc.core.test.SimpleTestResult" />\r
+\r
+       <bean id="myTestDef" class="org.argeo.slc.core.test.BasicTestDefinition" />\r
+\r
+       <bean id="myTestRunTemplate" class="org.argeo.slc.core.test.SimpleTestRun" abstract="true">\r
+               <property name="testDefinition" ref="myTestDef" />\r
+               <property name="testResult" ref="myTestResult"/>\r
+       </bean>         \r
+\r
        <bean id="fileDiff.spec" parent="slcTemplate.simpleSpec">\r
                <property name="attributes">\r
                        <map>\r
                                <bean parent="task.echo">\r
                                        <property name="message" value="fileName=@{fileName}" />\r
                                </bean>\r
+                               <bean parent="myTestRunTemplate">\r
+                                       <property name="testData">\r
+                                               <bean class="org.argeo.slc.core.test.BasicTestData">\r
+                                                       <property name="expected" value="file1" />\r
+                                                       <property name="reached" value="@{fileName}" />\r
+                                               </bean>\r
+                                       </property>     \r
+                               </bean>\r
                        </list>\r
                </property>\r
        </bean>\r
diff --git a/runtime/org.argeo.slc.support.simple/src/test/resources/org/argeo/slc/core/execution/specOverriding.xml b/runtime/org.argeo.slc.support.simple/src/test/resources/org/argeo/slc/core/execution/specOverriding.xml
new file mode 100644 (file)
index 0000000..3066b62
--- /dev/null
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xmlns:aop="http://www.springframework.org/schema/aop"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-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="imports.xml" /> \r
\r
+       <bean id="myTestResult" class="org.argeo.slc.core.test.SimpleTestResult" />\r
+\r
+       <bean id="myTestDef" class="org.argeo.slc.core.test.BasicTestDefinition" />\r
+\r
+       <bean id="myTestRunTemplate" class="org.argeo.slc.core.test.SimpleTestRun" abstract="true">\r
+               <property name="testDefinition" ref="myTestDef" />\r
+               <property name="testResult" ref="myTestResult"/>\r
+       </bean>         \r
\r
+       <bean id="spec1" parent="slcTemplate.simpleSpec">\r
+               <property name="attributes">\r
+                       <map>\r
+                               <entry key="testedComponentId">\r
+                                       <bean parent="specAttr.primitive" p:isParameter="true"\r
+                                               p:type="integer" />\r
+                               </entry>\r
+                               <entry key="testData1">\r
+                                       <bean parent="specAttr.ref" p:targetClass="org.argeo.slc.core.test.BasicTestData"\r
+                                               p:isParameter="true" p:isFrozen="true" />\r
+                               </entry>\r
+                       </map>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean id="flowTemplate1" parent="slcTemplate.simpleFlow"\r
+               abstract="true">\r
+               <constructor-arg ref="spec1" />\r
+               <property name="executables">\r
+                       <list>\r
+                               <bean parent="task.echo" scope="execution">\r
+                                       <property name="message" value="From basic @{testedComponentId}" />\r
+                                       <aop:scoped-proxy />\r
+                               </bean>\r
+                               <bean parent="myTestRunTemplate">\r
+                                       <property name="testData">\r
+                                               <bean parent="parameterRef">\r
+                                                       <constructor-arg value="testData1" />\r
+                                               </bean>\r
+                                       </property>\r
+                               </bean>\r
+                       </list>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean id="flow1" parent="flowTemplate1" scope="prototype">\r
+               <constructor-arg>\r
+                       <map>\r
+                               <entry key="testedComponentId" value="200" />\r
+                               <entry key="testData1">\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@{testedComponentId}" />\r
+                                       </bean>\r
+                               </entry>\r
+                       </map>                  \r
+               </constructor-arg>\r
+       </bean>\r
+\r
+       <bean id="spec2" parent="slcTemplate.simpleSpec">\r
+               <property name="attributes">\r
+                       <map>\r
+                               <entry key="testData1">\r
+                                       <bean parent="specAttr.ref" p:targetClass="org.argeo.slc.core.test.BasicTestData"\r
+                                               p:isParameter="true" p:isFrozen="true" />\r
+                               </entry>\r
+                       </map>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean id="flowTemplate2" parent="slcTemplate.simpleFlow" abstract="true">\r
+               <constructor-arg ref="spec2" />\r
+               <property name="executables">\r
+                       <list>\r
+                               <ref bean="flow1"/>\r
+                       </list>\r
+               </property>\r
+       </bean>\r
+       \r
+       <bean id="flow2" parent="flowTemplate2">\r
+               <constructor-arg>\r
+                       <map>\r
+                               <entry key="testData1">\r
+                                       <bean class="org.argeo.slc.core.test.BasicTestData">\r
+                                               <property name="expected" value="tata100" />\r
+                                               <property name="reached" value="tata100" />\r
+                                       </bean>\r
+                               </entry>\r
+                       </map>                  \r
+               </constructor-arg>\r
+       </bean> \r
+\r
+</beans>
\ No newline at end of file
index a1dbc7ed972083abd2d78c2918d85e52a6720168..b8ae23852fd8c70e1662596ea1ad07b55136b6bc 100644 (file)
@@ -9,13 +9,17 @@
 \r
        <import resource="imports.xml" /> \r
 \r
-       <bean id="fileDiff.spec" parent="slcTemplate.simpleSpec">\r
+       <bean id="mySpec" parent="slcTemplate.simpleSpec">\r
                <property name="attributes">\r
                        <map>\r
-                               <entry key="fileName">\r
+                               <entry key="key">\r
                                        <bean parent="specAttr.primitive" p:isParameter="true" p:type="string"\r
                                                p:isFrozen="true" />\r
                                </entry>\r
+                               <entry key="testResult">\r
+                                       <bean parent="specAttr.ref" p:targetClass="slcDefault.test.basicTreeTestResult"\r
+                                               p:isParameter="true" p:isFrozen="true" />\r
+                               </entry>                                \r
                        </map>\r
                </property>\r
        </bean>\r
                                                                <value>myValue</value>\r
                                                        </property>\r
                                                        <property name="reached">\r
-                                                               <value>myValue2</value>\r
+                                                               <value>@{key}</value>\r
                                                        </property>\r
                                                </bean>                                                 \r
                                        </property>\r
-                                       <property name="testResult" ref="fileDiff.testResult" />\r
+                                       <property name="testResult">\r
+                                               <bean parent="parameterRef">\r
+                                                       <constructor-arg value="testResult" />\r
+                                               </bean>\r
+                                       </property>\r
                                </bean>\r
 \r
                                <bean class="org.argeo.slc.core.execution.tasks.CloseTestResultTask" scope="execution">\r