diff --git a/spring-webflow/src/main/java/org/springframework/webflow/config/FlowBuilderServicesBeanDefinitionParser.java b/spring-webflow/src/main/java/org/springframework/webflow/config/FlowBuilderServicesBeanDefinitionParser.java index 2a473665..987d47a0 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/config/FlowBuilderServicesBeanDefinitionParser.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/config/FlowBuilderServicesBeanDefinitionParser.java @@ -20,7 +20,6 @@ import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.binding.convert.service.DefaultConversionService; -import org.springframework.binding.format.registry.DefaultFormatterRegistry; import org.springframework.util.StringUtils; import org.springframework.webflow.engine.builder.support.FlowBuilderServices; import org.springframework.webflow.expression.DefaultExpressionParserFactory; @@ -39,21 +38,11 @@ class FlowBuilderServicesBeanDefinitionParser extends AbstractSingleBeanDefiniti } protected void doParse(Element element, ParserContext context, BeanDefinitionBuilder builder) { - parseFormatterRegistry(element, builder, context); parseConversionService(element, builder, context); parseExpressionParser(element, builder, context); parseViewFactoryCreator(element, builder, context); } - private void parseFormatterRegistry(Element element, BeanDefinitionBuilder definitionBuilder, ParserContext context) { - String formatterRegistry = element.getAttribute("formatter-registry"); - if (StringUtils.hasText(formatterRegistry)) { - definitionBuilder.addPropertyReference("formatterRegistry", formatterRegistry); - } else { - definitionBuilder.addPropertyValue("formatterRegistry", DefaultFormatterRegistry.getSharedInstance()); - } - } - private void parseConversionService(Element element, BeanDefinitionBuilder definitionBuilder, ParserContext context) { String conversionService = element.getAttribute("conversion-service"); if (StringUtils.hasText(conversionService)) { diff --git a/spring-webflow/src/main/java/org/springframework/webflow/config/FlowRegistryBeanDefinitionParser.java b/spring-webflow/src/main/java/org/springframework/webflow/config/FlowRegistryBeanDefinitionParser.java index c4d64c15..44fa55d3 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/config/FlowRegistryBeanDefinitionParser.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/config/FlowRegistryBeanDefinitionParser.java @@ -28,7 +28,6 @@ import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.binding.convert.service.DefaultConversionService; -import org.springframework.binding.format.registry.DefaultFormatterRegistry; import org.springframework.util.StringUtils; import org.springframework.util.xml.DomUtils; import org.springframework.webflow.engine.builder.support.FlowBuilderServices; @@ -127,7 +126,6 @@ class FlowRegistryBeanDefinitionParser extends AbstractSingleBeanDefinitionParse private BeanDefinition createDefaultFlowBuilderServices(ParserContext context) { BeanDefinitionBuilder defaultBuilder = BeanDefinitionBuilder.genericBeanDefinition(FlowBuilderServices.class); - defaultBuilder.addPropertyValue("formatterRegistry", DefaultFormatterRegistry.getSharedInstance()); defaultBuilder.addPropertyValue("conversionService", DefaultConversionService.getSharedInstance()); defaultBuilder.addPropertyValue("expressionParser", DefaultExpressionParserFactory.getExpressionParser()); defaultBuilder.addPropertyValue("viewFactoryCreator", BeanDefinitionBuilder.genericBeanDefinition( 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 b554fb56..90fbbfde 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 @@ -5,7 +5,7 @@ xmlns:beans="http://www.springframework.org/schema/beans" targetNamespace="http://www.springframework.org/schema/webflow-config" elementFormDefault="qualified" attributeFormDefault="unqualified" - version="2.0"> + version="2.0.3"> @@ -188,15 +188,6 @@ This tag is only needed when you wish to plugin custom implementations. - - - - - - - diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/FlowBuilderContext.java b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/FlowBuilderContext.java index f56fda0e..dae6da6c 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/FlowBuilderContext.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/FlowBuilderContext.java @@ -17,7 +17,6 @@ package org.springframework.webflow.engine.builder; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.ExpressionParser; -import org.springframework.binding.format.FormatterRegistry; import org.springframework.context.ApplicationContext; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; @@ -71,12 +70,6 @@ public interface FlowBuilderContext { */ public ExpressionParser getExpressionParser(); - /** - * Returns an application-wide registry of formatters for formatting view values. - * @return the formatter registry - */ - public FormatterRegistry getFormatterRegistry(); - /** * Returns the application context hosting the flow system. * @return the application context diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/ViewFactoryCreator.java b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/ViewFactoryCreator.java index 4f46e05e..8860900c 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/ViewFactoryCreator.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/ViewFactoryCreator.java @@ -15,9 +15,9 @@ */ package org.springframework.webflow.engine.builder; +import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; -import org.springframework.binding.format.FormatterRegistry; import org.springframework.webflow.execution.View; import org.springframework.webflow.execution.ViewFactory; @@ -32,11 +32,11 @@ public interface ViewFactoryCreator { * provided identifier. * @param viewId an expression that resolves the id of the view to render * @param expressionParser an optional expression parser to use to resolve view expressions - * @param formatterRegistry an optional formatter registry to use to format text values + * @param conversionService an optional conversion service to use to format text values * @return the view factory */ public ViewFactory createViewFactory(Expression viewId, ExpressionParser expressionParser, - FormatterRegistry formatterRegistry); + ConversionService conversionService); /** * Get the default id of the view to render in the provided view state by convention. diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/model/FlowModelFlowBuilder.java b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/model/FlowModelFlowBuilder.java index d0b94346..fbfbaef0 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/model/FlowModelFlowBuilder.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/model/FlowModelFlowBuilder.java @@ -608,7 +608,7 @@ public class FlowModelFlowBuilder extends AbstractFlowBuilder { private ViewFactory createViewFactory(Expression viewId) { return getLocalContext().getViewFactoryCreator().createViewFactory(viewId, - getLocalContext().getExpressionParser(), getLocalContext().getFormatterRegistry()); + getLocalContext().getExpressionParser(), getLocalContext().getConversionService()); } private ViewVariable[] parseViewVariables(List vars) { diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/model/LocalFlowBuilderContext.java b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/model/LocalFlowBuilderContext.java index 5b1d1930..23da90b3 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/model/LocalFlowBuilderContext.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/model/LocalFlowBuilderContext.java @@ -17,7 +17,6 @@ package org.springframework.webflow.engine.builder.model; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.ExpressionParser; -import org.springframework.binding.format.FormatterRegistry; import org.springframework.context.ApplicationContext; import org.springframework.context.support.GenericApplicationContext; import org.springframework.webflow.core.collection.AttributeMap; @@ -86,14 +85,6 @@ class LocalFlowBuilderContext implements FlowBuilderContext { } } - public FormatterRegistry getFormatterRegistry() { - if (localFlowContext.containsLocalBean("formatterRegistry")) { - return (FormatterRegistry) localFlowContext.getBean("formatterRegistry", FormatterRegistry.class); - } else { - return parent.getFormatterRegistry(); - } - } - public ExpressionParser getExpressionParser() { if (localFlowContext.containsLocalBean("expressionParser")) { return (ExpressionParser) localFlowContext.getBean("expressionParser", ExpressionParser.class); diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/FlowBuilderContextImpl.java b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/FlowBuilderContextImpl.java index a829315f..9d860e13 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/FlowBuilderContextImpl.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/FlowBuilderContextImpl.java @@ -20,7 +20,6 @@ import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.convert.service.GenericConversionService; import org.springframework.binding.expression.ExpressionParser; -import org.springframework.binding.format.FormatterRegistry; import org.springframework.context.ApplicationContext; import org.springframework.util.Assert; import org.springframework.webflow.core.collection.AttributeMap; @@ -94,10 +93,6 @@ public class FlowBuilderContextImpl implements FlowBuilderContext { return flowBuilderServices.getViewFactoryCreator(); } - public FormatterRegistry getFormatterRegistry() { - return flowBuilderServices.getFormatterRegistry(); - } - public ExpressionParser getExpressionParser() { return flowBuilderServices.getExpressionParser(); } diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/FlowBuilderServices.java b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/FlowBuilderServices.java index e429c4cd..6156a3ad 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/FlowBuilderServices.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/FlowBuilderServices.java @@ -19,7 +19,6 @@ import org.springframework.beans.BeansException; import org.springframework.beans.factory.InitializingBean; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.ExpressionParser; -import org.springframework.binding.format.FormatterRegistry; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.util.Assert; @@ -60,11 +59,6 @@ public class FlowBuilderServices implements ApplicationContextAware, Initializin */ private ConversionService conversionService; - /** - * The service for formatting string values for display in a UI. - */ - private FormatterRegistry formatterRegistry; - /** * The parser for parsing expression strings into expression objects. The default is Web Flow's default expression * parser implementation. @@ -100,14 +94,6 @@ public class FlowBuilderServices implements ApplicationContextAware, Initializin this.conversionService = conversionService; } - public FormatterRegistry getFormatterRegistry() { - return formatterRegistry; - } - - public void setFormatterRegistry(FormatterRegistry formatterRegistry) { - this.formatterRegistry = formatterRegistry; - } - public ExpressionParser getExpressionParser() { return expressionParser; } @@ -132,7 +118,6 @@ public class FlowBuilderServices implements ApplicationContextAware, Initializin Assert.notNull(flowArtifactFactory, "The FlowArtifactFactory is required"); Assert.notNull(viewFactoryCreator, "The ViewFactoryCreator is required"); Assert.notNull(conversionService, "The type ConversionService is required"); - Assert.notNull(formatterRegistry, "The FormatterRegistry is required"); Assert.notNull(expressionParser, "The expressionParser is required"); Assert.notNull(applicationContext, "The ApplicationContext is required"); } diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/TextToTargetStateResolver.java b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/TextToTargetStateResolver.java index 4b0a1610..ac17331d 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/TextToTargetStateResolver.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/TextToTargetStateResolver.java @@ -15,7 +15,7 @@ */ package org.springframework.webflow.engine.builder.support; -import org.springframework.binding.convert.Converter; +import org.springframework.binding.convert.converters.Converter; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.support.FluentParserContext; @@ -55,15 +55,15 @@ class TextToTargetStateResolver implements Converter { this.flowBuilderContext = flowBuilderContext; } - public Class[] getSourceClasses() { - return new Class[] { String.class }; + public Class getSourceClass() { + return String.class; } - public Class[] getTargetClasses() { - return new Class[] { TargetStateResolver.class }; + public Class getTargetClass() { + return TargetStateResolver.class; } - public Object convert(Object source, Class targetClass, Object context) throws Exception { + public Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception { String targetStateId = (String) source; if (!StringUtils.hasText(targetStateId)) { return null; diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/TextToTransitionCriteria.java b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/TextToTransitionCriteria.java index 387730d0..5122aa0e 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/TextToTransitionCriteria.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/TextToTransitionCriteria.java @@ -16,7 +16,7 @@ package org.springframework.webflow.engine.builder.support; import org.springframework.binding.convert.ConversionExecutionException; -import org.springframework.binding.convert.Converter; +import org.springframework.binding.convert.converters.Converter; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.support.FluentParserContext; @@ -59,15 +59,15 @@ class TextToTransitionCriteria implements Converter { this.flowBuilderContext = flowBuilderContext; } - public Class[] getSourceClasses() { - return new Class[] { String.class }; + public Class getSourceClass() { + return String.class; } - public Class[] getTargetClasses() { - return new Class[] { TransitionCriteria.class }; + public Class getTargetClass() { + return TransitionCriteria.class; } - public Object convert(Object source, Class targetClass, Object context) throws Exception { + public Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception { String encodedCriteria = (String) source; ExpressionParser parser = flowBuilderContext.getExpressionParser(); if (!StringUtils.hasText(encodedCriteria) diff --git a/spring-webflow/src/main/java/org/springframework/webflow/mvc/builder/MvcViewFactoryCreator.java b/spring-webflow/src/main/java/org/springframework/webflow/mvc/builder/MvcViewFactoryCreator.java index 0fb00df8..48deadd0 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/mvc/builder/MvcViewFactoryCreator.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/mvc/builder/MvcViewFactoryCreator.java @@ -17,9 +17,9 @@ package org.springframework.webflow.mvc.builder; import java.util.List; +import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; -import org.springframework.binding.format.FormatterRegistry; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.web.servlet.View; @@ -115,11 +115,11 @@ public class MvcViewFactoryCreator implements ViewFactoryCreator, ApplicationCon } public ViewFactory createViewFactory(Expression viewId, ExpressionParser expressionParser, - FormatterRegistry formatterRegistry) { + ConversionService conversionService) { if (environment == MvcEnvironment.SERVLET) { - return new ServletMvcViewFactory(viewId, flowViewResolver, expressionParser, formatterRegistry); + return new ServletMvcViewFactory(viewId, flowViewResolver, expressionParser, conversionService); } else if (environment == MvcEnvironment.PORTLET) { - return new PortletMvcViewFactory(viewId, flowViewResolver, expressionParser, formatterRegistry); + return new PortletMvcViewFactory(viewId, flowViewResolver, expressionParser, conversionService); } else { throw new IllegalStateException("Web MVC Environment " + environment + " not supported "); } diff --git a/spring-webflow/src/main/java/org/springframework/webflow/mvc/portlet/PortletMvcViewFactory.java b/spring-webflow/src/main/java/org/springframework/webflow/mvc/portlet/PortletMvcViewFactory.java index f7091cf9..c40af945 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/mvc/portlet/PortletMvcViewFactory.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/mvc/portlet/PortletMvcViewFactory.java @@ -15,9 +15,9 @@ */ package org.springframework.webflow.mvc.portlet; +import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; -import org.springframework.binding.format.FormatterRegistry; import org.springframework.web.servlet.View; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.mvc.view.AbstractMvcView; @@ -31,22 +31,15 @@ import org.springframework.webflow.mvc.view.FlowViewResolver; */ public class PortletMvcViewFactory extends AbstractMvcViewFactory { - /** - * Creates a new portlet mvc view factory. - * @param viewId the view id expression - * @param viewResolver the flow view resolver - * @param expressionParser the expression parser - * @param formatterRegistry the view formatter registry - */ public PortletMvcViewFactory(Expression viewId, FlowViewResolver viewResolver, ExpressionParser expressionParser, - FormatterRegistry formatterRegistry) { - super(viewId, viewResolver, expressionParser, formatterRegistry); + ConversionService conversionService) { + super(viewId, viewResolver, expressionParser, conversionService); } protected AbstractMvcView createMvcView(View view, RequestContext context) { PortletMvcView mvcView = new PortletMvcView(view, context); mvcView.setExpressionParser(getExpressionParser()); - mvcView.setFormatterRegistry(getFormatterRegistry()); + mvcView.setConversionService(getConversionService()); return mvcView; } diff --git a/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/ServletMvcViewFactory.java b/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/ServletMvcViewFactory.java index fe895cd6..3d4cd3ba 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/ServletMvcViewFactory.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/ServletMvcViewFactory.java @@ -15,9 +15,9 @@ */ package org.springframework.webflow.mvc.servlet; +import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; -import org.springframework.binding.format.FormatterRegistry; import org.springframework.web.servlet.View; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.mvc.view.AbstractMvcView; @@ -32,14 +32,14 @@ import org.springframework.webflow.mvc.view.FlowViewResolver; public class ServletMvcViewFactory extends AbstractMvcViewFactory { public ServletMvcViewFactory(Expression viewId, FlowViewResolver viewResolver, ExpressionParser expressionParser, - FormatterRegistry formatterRegistry) { - super(viewId, viewResolver, expressionParser, formatterRegistry); + ConversionService conversionService) { + super(viewId, viewResolver, expressionParser, conversionService); } protected AbstractMvcView createMvcView(View view, RequestContext context) { ServletMvcView mvcView = new ServletMvcView(view, context); mvcView.setExpressionParser(getExpressionParser()); - mvcView.setFormatterRegistry(getFormatterRegistry()); + mvcView.setConversionService(getConversionService()); return mvcView; } diff --git a/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/AbstractMvcView.java b/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/AbstractMvcView.java index 5663c960..3999cb29 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/AbstractMvcView.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/AbstractMvcView.java @@ -27,23 +27,19 @@ import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.BeanFactory; -import org.springframework.binding.convert.ConversionExecutionException; -import org.springframework.binding.convert.ConversionExecutor; +import org.springframework.binding.convert.ConversionService; +import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.ParserContext; import org.springframework.binding.expression.support.FluentParserContext; import org.springframework.binding.expression.support.StaticExpression; -import org.springframework.binding.format.Formatter; -import org.springframework.binding.format.FormatterRegistry; -import org.springframework.binding.format.InvalidFormatException; import org.springframework.binding.mapping.MappingResult; import org.springframework.binding.mapping.MappingResults; import org.springframework.binding.mapping.MappingResultsCriteria; import org.springframework.binding.mapping.impl.DefaultMapper; import org.springframework.binding.mapping.impl.DefaultMapping; -import org.springframework.binding.mapping.impl.DefaultMappingContext; import org.springframework.binding.message.MessageBuilder; import org.springframework.binding.message.MessageContext; import org.springframework.binding.message.MessageContextErrors; @@ -52,7 +48,6 @@ import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; import org.springframework.validation.BindingResult; import org.springframework.validation.Errors; -import org.springframework.web.multipart.MultipartFile; import org.springframework.web.util.WebUtils; import org.springframework.webflow.core.collection.ParameterMap; import org.springframework.webflow.definition.TransitionDefinition; @@ -82,7 +77,7 @@ public abstract class AbstractMvcView implements View { private ExpressionParser expressionParser = DefaultExpressionParserFactory.getExpressionParser(); - private FormatterRegistry formatterRegistry; + private ConversionService conversionService = DefaultConversionService.getSharedInstance(); private MappingResults mappingResults; @@ -94,8 +89,6 @@ public abstract class AbstractMvcView implements View { private String fieldMarkerPrefix = "_"; - private ConversionExecutor bindingTypeConverter; - /** * Creates a new MVC view. * @param view the Spring MVC view to render @@ -118,9 +111,8 @@ public abstract class AbstractMvcView implements View { * Sets the formatter registry to use to expose formatters for field values. * @param formatterRegistry the formatter registry */ - public void setFormatterRegistry(FormatterRegistry formatterRegistry) { - this.formatterRegistry = formatterRegistry; - bindingTypeConverter = new FormatterBackedMappingConversionExecutor(this.formatterRegistry); + public void setConversionService(ConversionService conversionService) { + this.conversionService = conversionService; } /** @@ -248,7 +240,7 @@ public abstract class AbstractMvcView implements View { Object modelObject = getModelObject(); if (modelObject != null) { BindingModel bindingModel = new BindingModel(getModelExpression().getExpressionString(), modelObject, - expressionParser, formatterRegistry, requestContext.getMessageContext()); + expressionParser, conversionService, requestContext.getMessageContext()); bindingModel.setMappingResults(mappingResults); model.put(BindingResult.MODEL_KEY_PREFIX + getModelExpression().getExpressionString(), bindingModel); } @@ -283,6 +275,7 @@ public abstract class AbstractMvcView implements View { logger.debug("Setting up view->model mappings"); } DefaultMapper mapper = new DefaultMapper(); + mapper.setConversionService(conversionService); ParameterMap requestParameters = requestContext.getRequestParameters(); addDefaultMappings(mapper, requestParameters.asMap().keySet(), model); return mapper.map(requestParameters, model); @@ -357,7 +350,6 @@ public abstract class AbstractMvcView implements View { ParserContext parserContext = new FluentParserContext().evaluate(model.getClass()); Expression target = expressionParser.parseExpression(parameter, parserContext); DefaultMapping mapping = new DefaultMapping(source, target); - mapping.setTypeConverter(bindingTypeConverter); if (logger.isDebugEnabled()) { logger.debug("Adding mapping for parameter '" + parameter + "'"); } @@ -460,78 +452,7 @@ public abstract class AbstractMvcView implements View { } public String toString() { - return parameterName; + return "parameter:'" + parameterName + "'"; } - } - - private static class FormatterBackedMappingConversionExecutor implements ConversionExecutor { - - private FormatterRegistry formatterRegistry; - - public FormatterBackedMappingConversionExecutor(FormatterRegistry formatterRegistry) { - this.formatterRegistry = formatterRegistry; - } - - public Object execute(Object source) throws ConversionExecutionException { - throw new UnsupportedOperationException("Should never be called"); - } - - public Object execute(Object source, Object context) throws ConversionExecutionException { - if (source instanceof MultipartFile) { - // for the case of MultipartFile parameters; nothing to do - return source; - } - if (source instanceof String[]) { - return source; - } - String formattedValue = (String) source; - DefaultMappingContext mappingContext = (DefaultMappingContext) context; - Expression target = mappingContext.getCurrentMapping().getTargetExpression(); - Class targetClass = getTargetClass(); - if (targetClass == null) { - try { - targetClass = target.getValueType(mappingContext.getTarget()); - } catch (EvaluationException e) { - // ignore - } - } - if (targetClass == null) { - return formattedValue; - } - Formatter formatter = getFormatter(target, targetClass); - if (formatter != null) { - try { - return formatter.parse(formattedValue); - } catch (InvalidFormatException e) { - throw new ConversionExecutionException(formattedValue, String.class, targetClass, e); - } - } else { - return formattedValue; - } - } - - private Formatter getFormatter(Expression target, Class targetClass) { - if (formatterRegistry != null) { - Formatter formatter = formatterRegistry.getFormatter(targetClass, target.getExpressionString()); - if (formatter != null) { - return formatter; - } else { - return formatterRegistry.getFormatter(targetClass); - } - } else { - return null; - } - } - - public Class getSourceClass() { - return String.class; - } - - public Class getTargetClass() { - return null; - } - - } - } \ No newline at end of file diff --git a/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/AbstractMvcViewFactory.java b/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/AbstractMvcViewFactory.java index b002139e..5da93f11 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/AbstractMvcViewFactory.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/AbstractMvcViewFactory.java @@ -15,9 +15,9 @@ */ package org.springframework.webflow.mvc.view; +import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; -import org.springframework.binding.format.FormatterRegistry; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.View; import org.springframework.webflow.execution.ViewFactory; @@ -35,22 +35,22 @@ public abstract class AbstractMvcViewFactory implements ViewFactory { private ExpressionParser expressionParser; - private FormatterRegistry formatterRegistry; + private ConversionService conversionService; public AbstractMvcViewFactory(Expression viewId, FlowViewResolver viewResolver, ExpressionParser expressionParser, - FormatterRegistry formatterRegistry) { + ConversionService conversionService) { this.viewId = viewId; this.viewResolver = viewResolver; this.expressionParser = expressionParser; - this.formatterRegistry = formatterRegistry; + this.conversionService = conversionService; } protected ExpressionParser getExpressionParser() { return expressionParser; } - protected FormatterRegistry getFormatterRegistry() { - return formatterRegistry; + protected ConversionService getConversionService() { + return conversionService; } public View getView(RequestContext context) { diff --git a/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/BindingModel.java b/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/BindingModel.java index 7ab9da71..957abaac 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/BindingModel.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/BindingModel.java @@ -19,11 +19,11 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.springframework.binding.convert.ConversionExecutor; +import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.support.FluentParserContext; -import org.springframework.binding.format.Formatter; -import org.springframework.binding.format.FormatterRegistry; import org.springframework.binding.mapping.MappingResult; import org.springframework.binding.mapping.MappingResults; import org.springframework.binding.mapping.MappingResultsCriteria; @@ -55,7 +55,7 @@ public class BindingModel extends AbstractErrors { private ExpressionParser expressionParser; - private FormatterRegistry formatterRegistry; + private ConversionService conversionService; private MappingResults mappingResults; @@ -70,13 +70,13 @@ public class BindingModel extends AbstractErrors { * @param messageContext the message context containing flow messages to display */ public BindingModel(String objectName, Object boundObject, ExpressionParser expressionParser, - FormatterRegistry formatterRegistry, MessageContext messageContext) { + ConversionService conversionService, MessageContext messageContext) { Assert.hasText(objectName, "The object name is required"); Assert.notNull(boundObject, "The bound object instance is required"); this.objectName = objectName; this.boundObject = boundObject; this.expressionParser = expressionParser; - this.formatterRegistry = formatterRegistry; + this.conversionService = conversionService; this.messageContext = messageContext; } @@ -131,18 +131,18 @@ public class BindingModel extends AbstractErrors { } private Object getFormattedValue(Expression fieldExpression) { - Formatter formatter = getFormatter(fieldExpression); - if (formatter != null) { - return formatter.format(fieldExpression.getValue(boundObject)); + ConversionExecutor converter = getConverter(fieldExpression); + if (converter != null) { + return converter.execute(fieldExpression.getValue(boundObject)); } else { return fieldExpression.getValue(boundObject); } } - private Formatter getFormatter(Expression fieldExpression) { - if (formatterRegistry != null) { + private ConversionExecutor getConverter(Expression fieldExpression) { + if (conversionService != null) { Class valueType = fieldExpression.getValueType(boundObject); - return formatterRegistry.getFormatter(valueType); + return conversionService.getConversionExecutor(valueType, String.class); } else { return null; } diff --git a/spring-webflow/src/main/java/org/springframework/webflow/test/MockViewFactoryCreator.java b/spring-webflow/src/main/java/org/springframework/webflow/test/MockViewFactoryCreator.java index f5a176e8..a17e3c1b 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/test/MockViewFactoryCreator.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/test/MockViewFactoryCreator.java @@ -17,9 +17,9 @@ package org.springframework.webflow.test; import java.io.IOException; +import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; -import org.springframework.binding.format.FormatterRegistry; import org.springframework.webflow.engine.builder.ViewFactoryCreator; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; @@ -35,7 +35,7 @@ import org.springframework.webflow.execution.ViewFactory; class MockViewFactoryCreator implements ViewFactoryCreator { public ViewFactory createViewFactory(Expression viewId, ExpressionParser expressionParser, - FormatterRegistry formatterRegistry) { + ConversionService conversionService) { return new MockViewFactory(viewId); } 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 index 85cfcf28..98bc9256 100644 --- a/spring-webflow/src/test/java/org/springframework/webflow/config/FlowBuilderServicesBeanDefinitionParserTests.java +++ b/spring-webflow/src/test/java/org/springframework/webflow/config/FlowBuilderServicesBeanDefinitionParserTests.java @@ -8,8 +8,6 @@ import org.springframework.binding.convert.ConversionService; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; -import org.springframework.binding.format.Formatter; -import org.springframework.binding.format.FormatterRegistry; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.webflow.engine.builder.ViewFactoryCreator; import org.springframework.webflow.engine.builder.support.FlowBuilderServices; @@ -39,13 +37,12 @@ public class FlowBuilderServicesBeanDefinitionParserTests extends TestCase { assertNotNull(builderServices.getExpressionParser()); assertTrue(builderServices.getViewFactoryCreator() instanceof TestViewFactoryCreator); assertTrue(builderServices.getConversionService() instanceof TestConversionService); - assertTrue(builderServices.getFormatterRegistry() instanceof TestFormatterRegistry); } public static class TestViewFactoryCreator implements ViewFactoryCreator { public ViewFactory createViewFactory(Expression viewIdExpression, ExpressionParser expressionParser, - FormatterRegistry formatterRegistry) { + ConversionService conversionService) { throw new UnsupportedOperationException("Auto-generated method stub"); } @@ -78,16 +75,4 @@ public class FlowBuilderServicesBeanDefinitionParserTests extends TestCase { } - public static class TestFormatterRegistry implements FormatterRegistry { - - public Formatter getFormatter(Class clazz) { - throw new UnsupportedOperationException("Auto-generated method stub"); - } - - public Formatter getFormatter(Class clazz, String id) { - throw new UnsupportedOperationException("Auto-generated method stub"); - } - - } - -} +} \ No newline at end of file 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 index 04f969d6..9e56d9de 100644 --- 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 @@ -13,15 +13,12 @@ + conversion-service="customConversionService" /> - - \ No newline at end of file diff --git a/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/support/TextToTargetStateResolverTests.java b/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/support/TextToTargetStateResolverTests.java index af2fcf98..30452002 100644 --- a/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/support/TextToTargetStateResolverTests.java +++ b/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/support/TextToTargetStateResolverTests.java @@ -32,8 +32,8 @@ public class TextToTargetStateResolverTests extends TestCase { public void testStatic() throws Exception { String expression = "mockState"; - TargetStateResolver resolver = (TargetStateResolver) converter.convert(expression, TargetStateResolver.class, - null); + TargetStateResolver resolver = (TargetStateResolver) converter.convertSourceToTargetClass(expression, + TargetStateResolver.class); MockRequestContext context = new MockRequestContext(); Transition transition = new Transition(); assertEquals("mockState", resolver.resolveTargetState(transition, null, context).getId()); @@ -41,8 +41,8 @@ public class TextToTargetStateResolverTests extends TestCase { public void testDynamic() throws Exception { String expression = "${flowScope.lastState}"; - TargetStateResolver resolver = (TargetStateResolver) converter.convert(expression, TargetStateResolver.class, - null); + TargetStateResolver resolver = (TargetStateResolver) converter.convertSourceToTargetClass(expression, + TargetStateResolver.class); MockRequestContext context = new MockRequestContext(); context.getFlowScope().put("lastState", "mockState"); Transition transition = new Transition(); @@ -51,15 +51,15 @@ public class TextToTargetStateResolverTests extends TestCase { public void testNull() throws Exception { String expression = null; - TargetStateResolver resolver = (TargetStateResolver) converter.convert(expression, TargetStateResolver.class, - null); + TargetStateResolver resolver = (TargetStateResolver) converter.convertSourceToTargetClass(expression, + TargetStateResolver.class); assertNull(resolver); } public void testEmpty() throws Exception { String expression = ""; - TargetStateResolver resolver = (TargetStateResolver) converter.convert(expression, TargetStateResolver.class, - null); + TargetStateResolver resolver = (TargetStateResolver) converter.convertSourceToTargetClass(expression, + TargetStateResolver.class); assertNull(resolver); } } \ No newline at end of file diff --git a/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/support/TextToTransitionCriteriaTests.java b/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/support/TextToTransitionCriteriaTests.java index 97d158e1..854bb3c3 100644 --- a/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/support/TextToTransitionCriteriaTests.java +++ b/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/support/TextToTransitionCriteriaTests.java @@ -41,43 +41,46 @@ public class TextToTransitionCriteriaTests extends TestCase { public void testAny() throws Exception { String expression = "*"; - TransitionCriteria criterion = (TransitionCriteria) converter.convert(expression, TransitionCriteria.class, - null); + TransitionCriteria criterion = (TransitionCriteria) converter.convertSourceToTargetClass(expression, + TransitionCriteria.class); RequestContext ctx = getRequestContext(); assertTrue("Criterion should evaluate to true", criterion.test(ctx)); - assertSame(WildcardTransitionCriteria.INSTANCE, converter.convert("*", TransitionCriteria.class, null)); - assertSame(WildcardTransitionCriteria.INSTANCE, converter.convert("", TransitionCriteria.class, null)); - assertSame(WildcardTransitionCriteria.INSTANCE, converter.convert(null, TransitionCriteria.class, null)); + assertSame(WildcardTransitionCriteria.INSTANCE, converter.convertSourceToTargetClass("*", + TransitionCriteria.class)); + assertSame(WildcardTransitionCriteria.INSTANCE, converter.convertSourceToTargetClass("", + TransitionCriteria.class)); + assertSame(WildcardTransitionCriteria.INSTANCE, converter.convertSourceToTargetClass(null, + TransitionCriteria.class)); } public void testStaticEventId() throws Exception { String expression = "sample"; - TransitionCriteria criterion = (TransitionCriteria) converter.convert(expression, TransitionCriteria.class, - null); + TransitionCriteria criterion = (TransitionCriteria) converter.convertSourceToTargetClass(expression, + TransitionCriteria.class); RequestContext ctx = getRequestContext(); assertTrue("Criterion should evaluate to true", criterion.test(ctx)); } public void testTrueEvaluation() throws Exception { String expression = "${flowScope.foo == 'bar'}"; - TransitionCriteria criterion = (TransitionCriteria) converter.convert(expression, TransitionCriteria.class, - null); + TransitionCriteria criterion = (TransitionCriteria) converter.convertSourceToTargetClass(expression, + TransitionCriteria.class); RequestContext ctx = getRequestContext(); assertTrue("Criterion should evaluate to true", criterion.test(ctx)); } public void testFalseEvaluation() throws Exception { String expression = "${flowScope.foo != 'bar'}"; - TransitionCriteria criterion = (TransitionCriteria) converter.convert(expression, TransitionCriteria.class, - null); + TransitionCriteria criterion = (TransitionCriteria) converter.convertSourceToTargetClass(expression, + TransitionCriteria.class); RequestContext ctx = getRequestContext(); assertFalse("Criterion should evaluate to false", criterion.test(ctx)); } public void testNonStringEvaluation() throws Exception { String expression = "${3 + 4}"; - TransitionCriteria criterion = (TransitionCriteria) converter.convert(expression, TransitionCriteria.class, - null); + TransitionCriteria criterion = (TransitionCriteria) converter.convertSourceToTargetClass(expression, + TransitionCriteria.class); MockRequestContext ctx = getRequestContext(); ctx.setCurrentEvent(new Event(this, "7")); assertTrue("Criterion should evaluate to true", criterion.test(ctx)); @@ -85,8 +88,8 @@ public class TextToTransitionCriteriaTests extends TestCase { public void testCurrenEventEval() throws Exception { String expression = "${currentEvent == 'submit'}"; - TransitionCriteria criterion = (TransitionCriteria) converter.convert(expression, TransitionCriteria.class, - null); + TransitionCriteria criterion = (TransitionCriteria) converter.convertSourceToTargetClass(expression, + TransitionCriteria.class); MockRequestContext ctx = getRequestContext(); ctx.setCurrentEvent(new Event(this, "submit")); assertTrue("Criterion should evaluate to true", criterion.test(ctx)); @@ -98,8 +101,8 @@ public class TextToTransitionCriteriaTests extends TestCase { return new StaticExpression(null); } }); - TransitionCriteria criterion = (TransitionCriteria) converter.convert("doesnt matter", - TransitionCriteria.class, null); + TransitionCriteria criterion = (TransitionCriteria) converter.convertSourceToTargetClass("doesnt matter", + TransitionCriteria.class); RequestContext ctx = getRequestContext(); assertFalse("Criterion should evaluate to false", criterion.test(ctx)); } diff --git a/spring-webflow/src/test/java/org/springframework/webflow/mvc/portlet/PortletMvcViewTests.java b/spring-webflow/src/test/java/org/springframework/webflow/mvc/portlet/PortletMvcViewTests.java index 45262edd..107e1fc1 100644 --- a/spring-webflow/src/test/java/org/springframework/webflow/mvc/portlet/PortletMvcViewTests.java +++ b/spring-webflow/src/test/java/org/springframework/webflow/mvc/portlet/PortletMvcViewTests.java @@ -1,15 +1,11 @@ package org.springframework.webflow.mvc.portlet; -import java.util.Locale; - import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import junit.framework.TestCase; import org.easymock.EasyMock; -import org.springframework.binding.format.formatters.DateFormatter; -import org.springframework.binding.format.registry.DefaultFormatterRegistry; import org.springframework.mock.web.portlet.MockPortletContext; import org.springframework.mock.web.portlet.MockRenderRequest; import org.springframework.mock.web.portlet.MockRenderResponse; @@ -20,14 +16,6 @@ import org.springframework.webflow.test.MockRequestContext; public class PortletMvcViewTests extends TestCase { - private DefaultFormatterRegistry formatterRegistry = new DefaultFormatterRegistry(); - - protected void setUp() { - DateFormatter dateFormatter = new DateFormatter(); - dateFormatter.setLocale(Locale.ENGLISH); - formatterRegistry.registerFormatter(dateFormatter); - } - public void testRender() throws Exception { RenderRequest request = new MockRenderRequest(); RenderResponse response = new MockRenderResponse(); @@ -39,7 +27,6 @@ public class PortletMvcViewTests extends TestCase { org.springframework.web.servlet.View mvcView = (org.springframework.web.servlet.View) EasyMock .createMock(org.springframework.web.servlet.View.class); AbstractMvcView view = new PortletMvcView(mvcView, context); - view.setFormatterRegistry(formatterRegistry); view.render(); assertNotNull(request.getAttribute(ViewRendererServlet.VIEW_ATTRIBUTE)); assertNotNull(request.getAttribute(ViewRendererServlet.MODEL_ATTRIBUTE)); diff --git a/spring-webflow/src/test/java/org/springframework/webflow/mvc/servlet/ServletMvcViewTests.java b/spring-webflow/src/test/java/org/springframework/webflow/mvc/servlet/ServletMvcViewTests.java index 953f8434..711f4f18 100644 --- a/spring-webflow/src/test/java/org/springframework/webflow/mvc/servlet/ServletMvcViewTests.java +++ b/spring-webflow/src/test/java/org/springframework/webflow/mvc/servlet/ServletMvcViewTests.java @@ -3,7 +3,6 @@ package org.springframework.webflow.mvc.servlet; import java.security.Principal; import java.util.Calendar; import java.util.Date; -import java.util.Locale; import java.util.Map; import javax.servlet.http.HttpServletRequest; @@ -11,8 +10,6 @@ import javax.servlet.http.HttpServletResponse; import junit.framework.TestCase; -import org.springframework.binding.format.formatters.DateFormatter; -import org.springframework.binding.format.registry.DefaultFormatterRegistry; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; @@ -28,14 +25,6 @@ public class ServletMvcViewTests extends TestCase { private Map model; - private DefaultFormatterRegistry formatterRegistry = new DefaultFormatterRegistry(); - - protected void setUp() { - DateFormatter dateFormatter = new DateFormatter(); - dateFormatter.setLocale(Locale.ENGLISH); - formatterRegistry.registerFormatter(dateFormatter); - } - public void testRender() throws Exception { MockRequestContext context = new MockRequestContext(); context.getRequestScope().put("foo", "bar"); @@ -50,7 +39,6 @@ public class ServletMvcViewTests extends TestCase { context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new ServletMvcView(mvcView, context); - view.setFormatterRegistry(formatterRegistry); view.render(); assertTrue(renderCalled); assertEquals("bar", model.get("foo")); diff --git a/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/MvcViewTests.java b/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/MvcViewTests.java index 6179c893..dfbfd948 100644 --- a/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/MvcViewTests.java +++ b/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/MvcViewTests.java @@ -5,7 +5,6 @@ import java.util.Calendar; import java.util.Date; import java.util.HashSet; import java.util.List; -import java.util.Locale; import java.util.Map; import javax.servlet.http.HttpServletRequest; @@ -14,8 +13,6 @@ import javax.servlet.http.HttpServletResponse; import junit.framework.TestCase; import org.springframework.binding.expression.support.StaticExpression; -import org.springframework.binding.format.formatters.DateFormatter; -import org.springframework.binding.format.registry.DefaultFormatterRegistry; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockMultipartFile; @@ -38,14 +35,6 @@ public class MvcViewTests extends TestCase { private Map model; - private DefaultFormatterRegistry formatterRegistry = new DefaultFormatterRegistry(); - - protected void setUp() { - DateFormatter dateFormatter = new DateFormatter(); - dateFormatter.setLocale(Locale.ENGLISH); - formatterRegistry.registerFormatter(dateFormatter); - } - public void testRender() throws Exception { MockRequestControlContext context = new MockRequestControlContext(); context.setCurrentState(new ViewState(context.getRootFlow(), "test", new StubViewFactory())); @@ -61,7 +50,6 @@ public class MvcViewTests extends TestCase { context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); - view.setFormatterRegistry(formatterRegistry); view.render(); assertTrue(renderCalled); assertEquals("bar", model.get("foo")); @@ -91,7 +79,6 @@ public class MvcViewTests extends TestCase { context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); - view.setFormatterRegistry(formatterRegistry); view.render(); assertTrue(renderCalled); assertEquals("bar", model.get("foo")); @@ -119,7 +106,6 @@ public class MvcViewTests extends TestCase { context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); - view.setFormatterRegistry(formatterRegistry); view.render(); assertEquals(context.getFlowScope().get("bindBean"), model.get("bindBean")); BindingModel bm = (BindingModel) model.get(BindingResult.MODEL_KEY_PREFIX + "bindBean"); @@ -151,7 +137,6 @@ public class MvcViewTests extends TestCase { context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); - view.setFormatterRegistry(formatterRegistry); view.processUserEvent(); assertTrue(view.hasFlowEvent()); assertEquals("submit", view.getFlowEvent().getId()); @@ -165,10 +150,10 @@ public class MvcViewTests extends TestCase { context.putRequestParameter("dateProperty", "2007-01-01"); context.putRequestParameter("beanProperty.name", "foo"); context.putRequestParameter("multipartFile", new MockMultipartFile("foo", new byte[0])); - // context.putRequestParameter("stringArrayProperty", new String[] { "foo", "bar", "baz" }); - // context.putRequestParameter("integerArrayProperty", new String[] { "1", "2", "3" }); - // context.putRequestParameter("primitiveArrayProperty", new String[] { "1", "2", "3" }); - // context.putRequestParameter("listProperty", new String[] { "1", "2", "3" }); + context.putRequestParameter("stringArrayProperty", new String[] { "foo", "bar", "baz" }); + context.putRequestParameter("integerArrayProperty", new String[] { "1", "2", "3" }); + context.putRequestParameter("primitiveArrayProperty", new String[] { "1", "2", "3" }); + context.putRequestParameter("listProperty", new String[] { "1", "2", "3" }); BindBean bindBean = new BindBean(); StaticExpression modelObject = new StaticExpression(bindBean); modelObject.setExpressionString("bindBean"); @@ -180,7 +165,6 @@ public class MvcViewTests extends TestCase { context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); - view.setFormatterRegistry(formatterRegistry); view.processUserEvent(); assertTrue(view.hasFlowEvent()); assertEquals("submit", view.getFlowEvent().getId()); @@ -192,22 +176,22 @@ public class MvcViewTests extends TestCase { assertEquals(cal.getTime(), bindBean.getDateProperty()); assertEquals("foo", bindBean.getBeanProperty().getName()); assertEquals("foo", bindBean.getMultipartFile().getName()); - // assertEquals(3, bindBean.getStringArrayProperty().length); - // assertEquals("foo", bindBean.getStringArrayProperty()[0]); - // assertEquals("bar", bindBean.getStringArrayProperty()[1]); - // assertEquals("baz", bindBean.getStringArrayProperty()[2]); - // assertEquals(3, bindBean.getIntegerArrayProperty().length); - // assertEquals(new Integer(1), bindBean.getIntegerArrayProperty()[0]); - // assertEquals(new Integer(2), bindBean.getIntegerArrayProperty()[1]); - // assertEquals(new Integer(3), bindBean.getIntegerArrayProperty()[2]); - // assertEquals(3, bindBean.getPrimitiveArrayProperty().length); - // assertEquals(1, bindBean.getPrimitiveArrayProperty()[0]); - // assertEquals(2, bindBean.getPrimitiveArrayProperty()[1]); - // assertEquals(3, bindBean.getPrimitiveArrayProperty()[2]); - // assertEquals(3, bindBean.getListProperty().size()); - // assertEquals(new Integer(1), bindBean.getListProperty().get(0)); - // assertEquals(new Integer(2), bindBean.getListProperty().get(1)); - // assertEquals(new Integer(3), bindBean.getListProperty().get(2)); + assertEquals(3, bindBean.getStringArrayProperty().length); + assertEquals("foo", bindBean.getStringArrayProperty()[0]); + assertEquals("bar", bindBean.getStringArrayProperty()[1]); + assertEquals("baz", bindBean.getStringArrayProperty()[2]); + assertEquals(3, bindBean.getIntegerArrayProperty().length); + assertEquals(new Integer(1), bindBean.getIntegerArrayProperty()[0]); + assertEquals(new Integer(2), bindBean.getIntegerArrayProperty()[1]); + assertEquals(new Integer(3), bindBean.getIntegerArrayProperty()[2]); + assertEquals(3, bindBean.getPrimitiveArrayProperty().length); + assertEquals(1, bindBean.getPrimitiveArrayProperty()[0]); + assertEquals(2, bindBean.getPrimitiveArrayProperty()[1]); + assertEquals(3, bindBean.getPrimitiveArrayProperty()[2]); + assertEquals(3, bindBean.getListProperty().size()); + assertEquals("1", bindBean.getListProperty().get(0)); + assertEquals("2", bindBean.getListProperty().get(1)); + assertEquals("3", bindBean.getListProperty().get(2)); } public void testResumeEventModelBindingAllowedFields() throws Exception { @@ -228,7 +212,6 @@ public class MvcViewTests extends TestCase { context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); - view.setFormatterRegistry(formatterRegistry); HashSet allowedBindFields = new HashSet(); allowedBindFields.add("stringProperty"); view.setAllowedBindFields(allowedBindFields); @@ -259,7 +242,6 @@ public class MvcViewTests extends TestCase { context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); - view.setFormatterRegistry(formatterRegistry); HashSet allowedBindFields = new HashSet(); allowedBindFields.add("booleanProperty"); view.setAllowedBindFields(allowedBindFields); @@ -283,7 +265,6 @@ public class MvcViewTests extends TestCase { context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); - view.setFormatterRegistry(formatterRegistry); view.processUserEvent(); assertEquals(true, bindBean.getBooleanProperty()); }