From 6ad05f135c507226976255daf8a4246e7bda42c4 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Tue, 22 Nov 2011 15:28:37 -0500 Subject: [PATCH] added wrapper for ConversionServiceFactoryBean --- .../context/ConversionServiceCreator.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/context/ConversionServiceCreator.java b/spring-integration-core/src/main/java/org/springframework/integration/context/ConversionServiceCreator.java index c6665a36bd..0abd0fce41 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/context/ConversionServiceCreator.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/context/ConversionServiceCreator.java @@ -26,6 +26,8 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.context.support.ConversionServiceFactoryBean; +import org.springframework.core.convert.ConversionService; +import org.springframework.core.convert.support.GenericConversionService; /** * @author Oleg Zhurakousky @@ -39,7 +41,7 @@ class ConversionServiceCreator implements BeanFactoryPostProcessor { public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) { if (!beanFactory.containsBean(IntegrationContextUtils.INTEGRATION_CONVERSION_SERVICE_BEAN_NAME)) { if (beanFactory instanceof BeanDefinitionRegistry) { - BeanDefinitionBuilder conversionServiceBuilder = BeanDefinitionBuilder.rootBeanDefinition(ConversionServiceFactoryBean.class); + BeanDefinitionBuilder conversionServiceBuilder = BeanDefinitionBuilder.rootBeanDefinition(CustomConversionServiceFactoryBean.class); BeanDefinitionHolder beanDefinitionHolder = new BeanDefinitionHolder( conversionServiceBuilder.getBeanDefinition(), IntegrationContextUtils.INTEGRATION_CONVERSION_SERVICE_BEAN_NAME); BeanDefinitionReaderUtils.registerBeanDefinition(beanDefinitionHolder, (BeanDefinitionRegistry) beanFactory); @@ -50,4 +52,21 @@ class ConversionServiceCreator implements BeanFactoryPostProcessor { } } + + /** + * This is a workaround until we depend on Spring 3.1 and specifically when SPR-8818 is resolved. + * See INT-2259 and INT-1893 for more detail. + */ + static class CustomConversionServiceFactoryBean extends ConversionServiceFactoryBean { + + @Override + public ConversionService getObject() { + ConversionService service = super.getObject(); + if (service instanceof GenericConversionService) { + ((GenericConversionService) service).removeConvertible(Object.class, Object.class); + } + return service; + } + } + }