SWF-1234 Integration with Spring 3 type conversion

This commit is contained in:
Rossen Stoyanchev
2010-05-04 11:12:32 +00:00
parent 7372b31184
commit de75aefc63
51 changed files with 630 additions and 743 deletions

View File

@@ -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());

View File

@@ -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() {

View File

@@ -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());
}
}

View File

@@ -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");
}
}
}