+/*\r
+ * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
package org.argeo.slc.core.execution.generator;\r
\r
import java.util.HashMap;\r
import org.springframework.beans.factory.support.BeanDefinitionRegistry;\r
import org.springframework.beans.factory.support.GenericBeanDefinition;\r
import org.springframework.core.Ordered;\r
-import org.springframework.core.PriorityOrdered;\r
\r
/**\r
* Generates <code>ExecutionFlows</code> and <code>Runnables</code> as\r
* 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
+ Ordered {\r
\r
private final Log log = LogFactory.getLog(getClass());\r
\r
* <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
+ private int order = Ordered.HIGHEST_PRECEDENCE;\r
\r
public void postProcessBeanFactory(\r
ConfigurableListableBeanFactory beanFactory) throws BeansException {\r
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
\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
}\r
\r
public int getOrder() {\r
- return Ordered.HIGHEST_PRECEDENCE;\r
+ return order;\r
+ }\r
+\r
+ public void setOrder(int order) {\r
+ this.order = order;\r
}\r
\r
public void setSource(ExecutionFlowGeneratorSource source) {\r
this.contextValuesBeanName = contextValuesBeanName;\r
}\r
\r
-\r
+ public void setFlowBeanNamesPrefix(String flowBeanNamesPrefix) {\r
+ this.flowBeanNamesPrefix = flowBeanNamesPrefix;\r
+ }\r
}\r