<flow-builder-services> tag.
+ *
+ * @author Jeremy Grelle
+ */
+public class FlowBuilderServicesBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {
+
+ private static final String EXPRESSION_PARSER_ATTRIBUTE = "expression-parser";
+
+ private static final String EXPRESSION_PARSER_PROPERTY = "expressionParser";
+
+ private static final String VIEW_FACTORY_CREATOR_ATTRIBUTE = "view-factory-creator";
+
+ private static final String VIEW_FACTORY_CREATOR_PROPERTY = "viewFactoryCreator";
+
+ private static final String CONVERSION_SERVICE_ATTRIBUTE = "conversion-service";
+
+ private static final String CONVERSION_SERVICE_PROPERTY = "conversionService";
+
+ protected Class getBeanClass(Element element) {
+ return FlowBuilderServices.class;
+ }
+
+ protected void doParse(Element element, BeanDefinitionBuilder definitionBuilder) {
+ parseExpressionParser(element, definitionBuilder);
+ parseViewFactoryCreator(element, definitionBuilder);
+ parseConversionService(element, definitionBuilder);
+ }
+
+ private void parseConversionService(Element element, BeanDefinitionBuilder definitionBuilder) {
+ String conversionService = element.getAttribute(CONVERSION_SERVICE_ATTRIBUTE);
+ if (StringUtils.hasText(conversionService)) {
+ definitionBuilder.addPropertyReference(CONVERSION_SERVICE_PROPERTY, conversionService);
+ }
+ }
+
+ private void parseViewFactoryCreator(Element element, BeanDefinitionBuilder definitionBuilder) {
+ String viewFactoryCreator = element.getAttribute(VIEW_FACTORY_CREATOR_ATTRIBUTE);
+ if (StringUtils.hasText(viewFactoryCreator)) {
+ definitionBuilder.addPropertyReference(VIEW_FACTORY_CREATOR_PROPERTY, viewFactoryCreator);
+ } else {
+ definitionBuilder.addPropertyValue(VIEW_FACTORY_CREATOR_PROPERTY, new MvcViewFactoryCreator());
+ }
+ }
+
+ private void parseExpressionParser(Element element, BeanDefinitionBuilder definitionBuilder) {
+ String expressionParser = element.getAttribute(EXPRESSION_PARSER_ATTRIBUTE);
+ if (StringUtils.hasText(expressionParser)) {
+ definitionBuilder.addPropertyReference(EXPRESSION_PARSER_PROPERTY, expressionParser);
+ }
+ }
+
+}
diff --git a/spring-webflow/src/main/java/org/springframework/webflow/config/FlowRegistryFactoryBean.java b/spring-webflow/src/main/java/org/springframework/webflow/config/FlowRegistryFactoryBean.java
index 50895b73..4c46c278 100644
--- a/spring-webflow/src/main/java/org/springframework/webflow/config/FlowRegistryFactoryBean.java
+++ b/spring-webflow/src/main/java/org/springframework/webflow/config/FlowRegistryFactoryBean.java
@@ -28,6 +28,7 @@ import org.springframework.webflow.engine.builder.RefreshableFlowDefinitionHolde
import org.springframework.webflow.engine.builder.support.FlowBuilderContextImpl;
import org.springframework.webflow.engine.builder.support.FlowBuilderServices;
import org.springframework.webflow.engine.builder.xml.XmlFlowBuilder;
+import org.springframework.webflow.mvc.MvcViewFactoryCreator;
/**
* A factory for a flow definition registry. Is a Spring FactoryBean, for provision by the flow definition registry bean
@@ -35,6 +36,7 @@ import org.springframework.webflow.engine.builder.xml.XmlFlowBuilder;
* higher-level webflow-config Spring 2.x configuration namespace.
*
* @author Keith Donald
+ * @author Jeremy Grelle
*/
class FlowRegistryFactoryBean implements FactoryBean, ResourceLoaderAware, BeanFactoryAware, InitializingBean {
@@ -206,5 +208,6 @@ class FlowRegistryFactoryBean implements FactoryBean, ResourceLoaderAware, BeanF
flowBuilderServices = new FlowBuilderServices();
flowBuilderServices.setResourceLoader(resourceLoader);
flowBuilderServices.setBeanFactory(beanFactory);
+ flowBuilderServices.setViewFactoryCreator(new MvcViewFactoryCreator());
}
}
\ No newline at end of file
diff --git a/spring-webflow/src/main/java/org/springframework/webflow/config/WebFlowConfigNamespaceHandler.java b/spring-webflow/src/main/java/org/springframework/webflow/config/WebFlowConfigNamespaceHandler.java
index 232118c8..612d1039 100644
--- a/spring-webflow/src/main/java/org/springframework/webflow/config/WebFlowConfigNamespaceHandler.java
+++ b/spring-webflow/src/main/java/org/springframework/webflow/config/WebFlowConfigNamespaceHandler.java
@@ -22,12 +22,14 @@ import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
*
* @author Keith Donald
* @author Ben Hale
+ * @author Jeremy Grelle
*/
public class WebFlowConfigNamespaceHandler extends NamespaceHandlerSupport {
public void init() {
registerBeanDefinitionParser("flow-executor", new FlowExecutorBeanDefinitionParser());
registerBeanDefinitionParser("flow-execution-listeners", new FlowExecutionListenerLoaderBeanDefinitionParser());
registerBeanDefinitionParser("flow-registry", new FlowRegistryBeanDefinitionParser());
+ registerBeanDefinitionParser("flow-builder-services", new FlowBuilderServicesBeanDefinitionParser());
registerBeanDefinitionParser("enable-flow-scopes", new EnableFlowScopesBeanDefinitionParser());
}
}
\ No newline at end of file
diff --git a/spring-webflow/src/main/java/org/springframework/webflow/config/spring-webflow-config-2.0.xsd b/spring-webflow/src/main/java/org/springframework/webflow/config/spring-webflow-config-2.0.xsd
index 7f4b09e9..afd58abc 100644
--- a/spring-webflow/src/main/java/org/springframework/webflow/config/spring-webflow-config-2.0.xsd
+++ b/spring-webflow/src/main/java/org/springframework/webflow/config/spring-webflow-config-2.0.xsd
@@ -1,63 +1,63 @@
-
-- /WEB-INF/booking.xml --... are supported as well as wildcard paths such as: -
- /WEB-INF/flows/**/*-flow.xml --]]> -
+ /WEB-INF/booking.xml ++... are supported as well as wildcard paths such as: +
+ /WEB-INF/flows/**/*-flow.xml ++]]> +