]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Adds Unit Tests for ExcelGeneratorSource and AutouiRunnableFactory
authorOlivier Capillon <olivier.capillon@gmail.com>
Mon, 2 Nov 2009 16:30:08 +0000 (16:30 +0000)
committerOlivier Capillon <olivier.capillon@gmail.com>
Mon, 2 Nov 2009 16:30:08 +0000 (16:30 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@3059 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/generator/ExecutionFlowGenerator.java
runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/tasks/OverrideContextAware.java

index 5451402ff6255d13bdfee837a22c79cf73082a90..db1d276d7975fe705daeddae28920648bb893ca7 100644 (file)
@@ -26,10 +26,6 @@ import org.springframework.core.PriorityOrdered;
  * Application Context after configuring the <code>ExecutionContext</code>, \r
  * and outputs of a <code>RunnableFactory</code>.\r
  */\r
-/**\r
- * @author Olivier Capillon\r
- *\r
- */\r
 public class ExecutionFlowGenerator implements BeanFactoryPostProcessor,\r
                PriorityOrdered {\r
        \r
@@ -63,6 +59,12 @@ public class ExecutionFlowGenerator implements BeanFactoryPostProcessor,
         * <code>RunnableCallFlow</code> beans.\r
         */\r
        private String contextValuesBeanName = "executionFlowGenerator.contextValues";\r
+       \r
+       /**\r
+        * Prefix added to the bean names defined in each \r
+        * <code>RunnableCallFlowDescriptor</code>\r
+        */\r
+       private String flowBeanNamesPrefix = "";\r
                \r
        public void postProcessBeanFactory(\r
                        ConfigurableListableBeanFactory beanFactory) throws BeansException {\r
@@ -100,11 +102,13 @@ public class ExecutionFlowGenerator implements BeanFactoryPostProcessor,
                GenericBeanDefinition flowBean = new GenericBeanDefinition();\r
                flowBean.setBeanClass(RunnableCallFlow.class);\r
                \r
+               String beanName = flowBeanNamesPrefix + flowDescriptor.getBeanName();\r
+               \r
                MutablePropertyValues mpv = new MutablePropertyValues();                \r
                mpv.addPropertyValue("runnableCalls", flowDescriptor.getRunnableCalls());\r
                mpv.addPropertyValue("sharedContextValuesMap", new RuntimeBeanReference(contextValuesBeanName));\r
                \r
-               mpv.addPropertyValue("name", flowDescriptor.getBeanName());\r
+               mpv.addPropertyValue("name", beanName);\r
                mpv.addPropertyValue("path", flowDescriptor.getPath());\r
 \r
                mpv.addPropertyValue("executionContext", new RuntimeBeanReference(executionContextBeanName));\r
@@ -113,9 +117,9 @@ public class ExecutionFlowGenerator implements BeanFactoryPostProcessor,
                \r
                // register it\r
                if(log.isDebugEnabled()) {\r
-                       log.debug("Registering bean definition for RunnableCallFlow " + flowDescriptor.getBeanName());\r
+                       log.debug("Registering bean definition for RunnableCallFlow " + beanName);\r
                }\r
-               registry.registerBeanDefinition(flowDescriptor.getBeanName(), flowBean);\r
+               registry.registerBeanDefinition(beanName, flowBean);\r
        }\r
        \r
        /**\r
@@ -151,5 +155,7 @@ public class ExecutionFlowGenerator implements BeanFactoryPostProcessor,
                this.contextValuesBeanName = contextValuesBeanName;\r
        }\r
 \r
-\r
+       public void setFlowBeanNamesPrefix(String flowBeanNamesPrefix) {\r
+               this.flowBeanNamesPrefix = flowBeanNamesPrefix;\r
+       }\r
 }\r
index bb095684dff0c854f97bba50c677b3080ed5d89c..55a03ed7bbe75ebc10f349f945b98f964522b496 100644 (file)
@@ -4,28 +4,30 @@ import org.argeo.slc.SlcException;
 import org.argeo.slc.core.test.context.SimpleContextAware;\r
 import org.argeo.slc.test.context.ContextAware;\r
 \r
+/**\r
+ * Overrides Values and Expected values of a target \r
+ * <code>SimpleContextAware</code> with the corresponding\r
+ * values and expected values of a source <code>ContextAware</code>\r
+ *\r
+ */\r
 public class OverrideContextAware implements Runnable {\r
 \r
        private ContextAware source;\r
 \r
        private SimpleContextAware target;\r
        \r
-\r
-       public void setSource(ContextAware source) {\r
-               this.source = source;\r
-       }\r
-\r
-\r
-       public void setTarget(SimpleContextAware target) {\r
-               this.target = target;\r
-       }\r
-\r
-\r
+       /**\r
+        * Whether an exception shall be thrown if a value\r
+        * or expected value of the source is not defined\r
+        * in the target\r
+        */\r
+       private Boolean failIfUndefinedInSource = true;\r
+       \r
        public void run() {\r
                // override values\r
                if(source.getValues() != null)\r
                        for(String key : source.getValues().keySet()) {\r
-                               if(!target.getValues().containsKey(key)) {\r
+                               if(failIfUndefinedInSource && !target.getValues().containsKey(key)) {\r
                                        throw new SlcException("No entry in target values for key '" + key + "'");\r
                                }\r
                                target.getValues().put(key, source.getValues().get(key));\r
@@ -34,10 +36,22 @@ public class OverrideContextAware implements Runnable {
                // override expected values\r
                if(source.getExpectedValues() != null)\r
                        for(String key : source.getExpectedValues().keySet()) {\r
-                               if(!target.getExpectedValues().containsKey(key)) {\r
+                               if(failIfUndefinedInSource && !target.getExpectedValues().containsKey(key)) {\r
                                        throw new SlcException("No entry in target expected values for key '" + key + "'");\r
                                }\r
                                target.getExpectedValues().put(key, source.getExpectedValues().get(key));\r
                        }               \r
        }       \r
+       \r
+       public void setSource(ContextAware source) {\r
+               this.source = source;\r
+       }\r
+\r
+       public void setTarget(SimpleContextAware target) {\r
+               this.target = target;\r
+       }\r
+\r
+       public void setFailIfUndefinedInSource(Boolean failIfUndefinedInSource) {\r
+               this.failIfUndefinedInSource = failIfUndefinedInSource;\r
+       }       \r
 }\r