From d7e1041ed4ba72766ea4242f5d20d8a99280b952 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Wed, 22 Sep 2010 21:01:38 -0400 Subject: [PATCH] polishing MapToObjectTransformer to avoid CC and NPE exceptions --- .../transformer/MapToObjectTransformer.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/transformer/MapToObjectTransformer.java b/spring-integration-core/src/main/java/org/springframework/integration/transformer/MapToObjectTransformer.java index a95bff668c..01c73c6315 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/transformer/MapToObjectTransformer.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/transformer/MapToObjectTransformer.java @@ -20,8 +20,10 @@ import java.util.Map; import org.springframework.beans.BeanUtils; import org.springframework.beans.MutablePropertyValues; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.core.convert.ConversionService; +import org.springframework.core.convert.support.ConversionServiceFactory; import org.springframework.util.Assert; import org.springframework.util.StringUtils; import org.springframework.validation.DataBinder; @@ -67,7 +69,14 @@ public class MapToObjectTransformer extends AbstractPayloadTransformer, ? BeanUtils.instantiate(this.targetClass) : this.getBeanFactory().getBean(this.targetBeanName); DataBinder binder = new DataBinder(target); - binder.setConversionService(((ConfigurableListableBeanFactory)this.getBeanFactory()).getConversionService()); + ConversionService conversionService = null; + if (this.getBeanFactory() instanceof ConfigurableBeanFactory){ + conversionService = ((ConfigurableBeanFactory)this.getBeanFactory()).getConversionService(); + } + if (conversionService == null){ + conversionService = ConversionServiceFactory.createDefaultConversionService(); + } + binder.setConversionService(conversionService); binder.bind(new MutablePropertyValues(payload)); return target; }