diff --git a/spring-faces/src/main/java/org/springframework/faces/expression/LegacyJSFELExpressionParser.java b/spring-faces/src/main/java/org/springframework/faces/expression/LegacyJSFELExpressionParser.java index 2d97ed5b..02e988a1 100644 --- a/spring-faces/src/main/java/org/springframework/faces/expression/LegacyJSFELExpressionParser.java +++ b/spring-faces/src/main/java/org/springframework/faces/expression/LegacyJSFELExpressionParser.java @@ -32,7 +32,14 @@ public class LegacyJSFELExpressionParser extends ELExpressionParser { } public LegacyJSFELExpressionParser() { - this(ExpressionFactory.newInstance()); + this(getDefaultExpressionFactory()); + } + + private static ExpressionFactory getDefaultExpressionFactory() { + if (!System.getProperties().containsKey("javax.el.ExpressionFactory")) { + System.setProperty("javax.el.ExpressionFactory", "org.jboss.el.ExpressionFactoryImpl"); + } + return ExpressionFactory.newInstance(); } private static class RequestContextELContextFactory implements ELContextFactory { diff --git a/spring-webflow/src/main/java/org/springframework/webflow/core/expression/el/WebFlowELExpressionParser.java b/spring-webflow/src/main/java/org/springframework/webflow/core/expression/el/WebFlowELExpressionParser.java index e556444f..feb56d17 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/core/expression/el/WebFlowELExpressionParser.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/core/expression/el/WebFlowELExpressionParser.java @@ -30,7 +30,14 @@ public class WebFlowELExpressionParser extends ELExpressionParser { } public WebFlowELExpressionParser() { - this(ExpressionFactory.newInstance()); + this(getDefaultExpressionFactory()); + } + + private static ExpressionFactory getDefaultExpressionFactory() { + if (!System.getProperties().containsKey("javax.el.ExpressionFactory")) { + System.setProperty("javax.el.ExpressionFactory", "org.jboss.el.ExpressionFactoryImpl"); + } + return ExpressionFactory.newInstance(); } private static class RequestContextELContextFactory implements ELContextFactory { diff --git a/spring-webflow/src/test/java/org/springframework/webflow/config/FlowBuilderServicesBeanDefinitionParserTests.java b/spring-webflow/src/test/java/org/springframework/webflow/config/FlowBuilderServicesBeanDefinitionParserTests.java new file mode 100644 index 00000000..5da9255b --- /dev/null +++ b/spring-webflow/src/test/java/org/springframework/webflow/config/FlowBuilderServicesBeanDefinitionParserTests.java @@ -0,0 +1,77 @@ +package org.springframework.webflow.config; + +import junit.framework.TestCase; + +import org.springframework.binding.convert.ConversionException; +import org.springframework.binding.convert.ConversionExecutor; +import org.springframework.binding.convert.ConversionService; +import org.springframework.binding.convert.support.DefaultConversionService; +import org.springframework.binding.expression.Expression; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.core.io.ResourceLoader; +import org.springframework.webflow.core.expression.el.WebFlowELExpressionParser; +import org.springframework.webflow.engine.builder.ViewFactoryCreator; +import org.springframework.webflow.engine.builder.support.FlowBuilderServices; +import org.springframework.webflow.execution.Action; +import org.springframework.webflow.execution.ViewFactory; +import org.springframework.webflow.mvc.MvcViewFactoryCreator; + +public class FlowBuilderServicesBeanDefinitionParserTests extends TestCase { + + private ClassPathXmlApplicationContext context; + private FlowBuilderServices builderServices; + + public void setUp() { + context = new ClassPathXmlApplicationContext("org/springframework/webflow/config/flow-builder-services.xml"); + } + + public void testFlowBuilderServicesDefaultConfig() { + builderServices = (FlowBuilderServices) context.getBean("flowBuilderServicesDefault"); + assertNotNull(builderServices); + assertNotNull(builderServices.getExpressionParser()); + assertTrue(builderServices.getViewFactoryCreator() instanceof MvcViewFactoryCreator); + assertTrue(builderServices.getConversionService() instanceof DefaultConversionService); + } + + public void testFlowBuilderServicesCustomized() { + builderServices = (FlowBuilderServices) context.getBean("flowBuilderServicesCustom"); + assertNotNull(builderServices); + assertTrue(builderServices.getExpressionParser() instanceof WebFlowELExpressionParser); + assertTrue(builderServices.getViewFactoryCreator() instanceof TestViewFactoryCreator); + assertTrue(builderServices.getConversionService() instanceof TestConversionService); + } + + public static class TestViewFactoryCreator implements ViewFactoryCreator { + + public Action createFinalResponseAction(Expression viewId, ResourceLoader viewResourceLoader) { + throw new UnsupportedOperationException("Auto-generated method stub"); + } + + public ViewFactory createViewFactory(Expression viewId, ResourceLoader viewResourceLoader) { + throw new UnsupportedOperationException("Auto-generated method stub"); + } + } + + public static class TestConversionService implements ConversionService { + + public Class getClassByAlias(String alias) throws ConversionException { + throw new UnsupportedOperationException("Auto-generated method stub"); + } + + public ConversionExecutor getConversionExecutor(Class sourceClass, Class targetClass) + throws ConversionException { + throw new UnsupportedOperationException("Auto-generated method stub"); + } + + public ConversionExecutor getConversionExecutorByTargetAlias(Class sourceClass, String targetAlias) + throws ConversionException { + throw new UnsupportedOperationException("Auto-generated method stub"); + } + + public ConversionExecutor[] getConversionExecutorsForSource(Class sourceClass) throws ConversionException { + throw new UnsupportedOperationException("Auto-generated method stub"); + } + + } + +} diff --git a/spring-webflow/src/test/java/org/springframework/webflow/config/flow-builder-services.xml b/spring-webflow/src/test/java/org/springframework/webflow/config/flow-builder-services.xml new file mode 100644 index 00000000..baaaa9fc --- /dev/null +++ b/spring-webflow/src/test/java/org/springframework/webflow/config/flow-builder-services.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + \ No newline at end of file