SWF-1234 Integration with Spring 3 type conversion
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
package org.springframework.faces.config;
|
||||
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.beans.factory.config.RuntimeBeanReference;
|
||||
import org.springframework.beans.factory.parsing.BeanComponentDefinition;
|
||||
import org.springframework.beans.factory.parsing.CompositeComponentDefinition;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||
@@ -123,6 +124,7 @@ public class FacesFlowBuilderServicesBeanDefinitionParser extends AbstractSingle
|
||||
}
|
||||
|
||||
expressionParserBuilder.addConstructorArgValue(spelExpressionParser.getBeanDefinition());
|
||||
expressionParserBuilder.addConstructorArgReference(getConversionService(definitionBuilder));
|
||||
expressionParser = registerInfrastructureComponent(element, context, expressionParserBuilder);
|
||||
|
||||
} else if (enableManagedBeans) {
|
||||
@@ -141,6 +143,12 @@ public class FacesFlowBuilderServicesBeanDefinitionParser extends AbstractSingle
|
||||
}
|
||||
}
|
||||
|
||||
private String getConversionService(BeanDefinitionBuilder definitionBuilder) {
|
||||
RuntimeBeanReference conversionServiceReference = (RuntimeBeanReference) definitionBuilder.getBeanDefinition()
|
||||
.getPropertyValues().getPropertyValue(CONVERSION_SERVICE_PROPERTY).getValue();
|
||||
return conversionServiceReference.getBeanName();
|
||||
}
|
||||
|
||||
private String registerInfrastructureComponent(Element element, ParserContext context,
|
||||
BeanDefinitionBuilder componentBuilder) {
|
||||
String beanName = context.getReaderContext().generateBeanName(componentBuilder.getRawBeanDefinition());
|
||||
|
||||
@@ -33,7 +33,7 @@ import org.springframework.util.ClassUtils;
|
||||
public class DataModelConverter implements Converter {
|
||||
|
||||
public Class getSourceClass() {
|
||||
return Object.class;
|
||||
return List.class;
|
||||
}
|
||||
|
||||
public Class getTargetClass() {
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package org.springframework.faces.webflow;
|
||||
|
||||
import org.springframework.binding.convert.ConversionService;
|
||||
import org.springframework.binding.expression.ExpressionParser;
|
||||
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
||||
import org.springframework.webflow.expression.spel.WebFlowSpringELExpressionParser;
|
||||
@@ -34,4 +35,9 @@ public class FacesSpringELExpressionParser extends WebFlowSpringELExpressionPars
|
||||
addPropertyAccessor(new JsfManagedBeanPropertyAccessor());
|
||||
}
|
||||
|
||||
public FacesSpringELExpressionParser(SpelExpressionParser expressionParser, ConversionService conversionService) {
|
||||
super(expressionParser, conversionService);
|
||||
addPropertyAccessor(new JsfManagedBeanPropertyAccessor());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ public class FacesFlowBuilderServicesBeanDefinitionParserTests extends TestCase
|
||||
assertNotNull(builderServices);
|
||||
assertTrue(builderServices.getConversionService() instanceof TestConversionService);
|
||||
assertTrue(builderServices.getExpressionParser() instanceof WebFlowSpringELExpressionParser);
|
||||
assertNotNull(((SpringELExpressionParser) builderServices.getExpressionParser()).getConversionService());
|
||||
assertTrue(((SpringELExpressionParser) builderServices.getExpressionParser()).getConversionService() instanceof TestConversionService);
|
||||
assertTrue(builderServices.getViewFactoryCreator() instanceof JsfViewFactoryCreator);
|
||||
assertFalse(builderServices.getDevelopment());
|
||||
}
|
||||
@@ -115,5 +115,9 @@ public class FacesFlowBuilderServicesBeanDefinitionParserTests extends TestCase
|
||||
public Class getClassForAlias(String name) throws ConversionExecutionException {
|
||||
throw new UnsupportedOperationException("Auto-generated method stub");
|
||||
}
|
||||
|
||||
public org.springframework.core.convert.ConversionService getDelegateConversionService() {
|
||||
throw new UnsupportedOperationException("Auto-generated method stub");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user