polishing MapToObjectTransformer to avoid CC and NPE exceptions

This commit is contained in:
Oleg Zhurakousky
2010-09-22 21:01:38 -04:00
parent 1bb6eafe04
commit d7e1041ed4

View File

@@ -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<Map<?,?>,
? 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;
}