INT-4177: Use Shared DefaultConversionService

JIRA: https://jira.spring.io/browse/INT-4177

Use DefaultConversionService.getSharedInstance()

    $ find . | grep '\.java$' | xargs sed -i '' -e 's/new DefaultConversionService/DefaultConversionService.getSharedInstance/

Polishing - BFTC, Revert Tests, Fix JPA Deps

spring-data-jpa pulls in SF 5.0.0.M3.
This commit is contained in:
Gary Russell
2016-12-02 16:23:45 -05:00
committed by Artem Bilan
parent b25c95508e
commit 00796702c0
10 changed files with 30 additions and 18 deletions

View File

@@ -447,7 +447,15 @@ project('spring-integration-jpa') {
compile ("org.eclipse.persistence:javax.persistence:$jpaApiVersion", optional)
testCompile "org.springframework.data:spring-data-jpa:$springDataJpaVersion"
testCompile ("org.springframework.data:spring-data-jpa:$springDataJpaVersion") {
exclude group: 'org.springframework', module: 'spring-beans'
exclude group: 'org.springframework', module: 'spring-context'
exclude group: 'org.springframework', module: 'spring-core'
exclude group: 'org.springframework', module: 'spring-expression'
exclude group: 'org.springframework', module: 'spring-aop'
exclude group: 'org.springframework', module: 'spring-orm'
exclude group: 'org.springframework', module: 'spring-tx'
}
testCompile "com.h2database:h2:$h2Version"
testCompile "org.hsqldb:hsqldb:$hsqldbVersion"

View File

@@ -121,7 +121,7 @@ public abstract class AbstractMethodAnnotationPostProcessor<T extends Annotation
this.conversionService = conversionService;
}
else {
this.conversionService = new DefaultConversionService();
this.conversionService = DefaultConversionService.getSharedInstance();
}
this.channelResolver = new BeanFactoryChannelResolver(beanFactory);
this.annotationType = (Class<T>) GenericTypeResolver.resolveTypeArgument(this.getClass(),

View File

@@ -73,7 +73,7 @@ public abstract class IntegrationObjectSupport implements BeanNameAware, NamedCo
*/
protected final Log logger = LogFactory.getLog(getClass());
private final ConversionService defaultConversionService = new DefaultConversionService();
private final ConversionService defaultConversionService = DefaultConversionService.getSharedInstance();
private volatile DestinationResolver<MessageChannel> channelResolver;

View File

@@ -172,7 +172,7 @@ public final class RouterSpec<K, R extends AbstractMappingMessageRouter>
protected void onInit() throws Exception {
ConversionService conversionService = getConversionService();
if (conversionService == null) {
conversionService = new DefaultConversionService();
conversionService = DefaultConversionService.getSharedInstance();
}
for (Map.Entry<Object, NamedComponent> entry : this.mapping.entrySet()) {
Object key = entry.getKey();

View File

@@ -86,7 +86,7 @@ public class LambdaMessageProcessor implements MessageProcessor<Object>, BeanFac
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
ConversionService conversionService = IntegrationUtils.getConversionService(beanFactory);
if (conversionService == null) {
conversionService = new DefaultConversionService();
conversionService = DefaultConversionService.getSharedInstance();
}
this.conversionService = conversionService;
}

View File

@@ -140,7 +140,7 @@ public abstract class AbstractMessageRouter extends AbstractMessageHandler imple
if (this.getConversionService() == null) {
synchronized (this) {
if (this.getConversionService() == null) {
this.setConversionService(new DefaultConversionService());
this.setConversionService(DefaultConversionService.getSharedInstance());
}
}
}

View File

@@ -39,7 +39,7 @@ import org.springframework.util.Assert;
public class DefaultDatatypeChannelMessageConverter implements MessageConverter,
BeanFactoryAware {
private volatile ConversionService conversionService = new DefaultConversionService();
private volatile ConversionService conversionService = DefaultConversionService.getSharedInstance();
private volatile boolean conversionServiceSet;

View File

@@ -84,7 +84,7 @@ public class MapToObjectTransformer extends AbstractPayloadTransformer<Map<?, ?>
DataBinder binder = new DataBinder(target);
ConversionService conversionService = this.getConversionService();
if (conversionService == null) {
conversionService = new DefaultConversionService();
conversionService = DefaultConversionService.getSharedInstance();
}
binder.setConversionService(conversionService);
binder.bind(new MutablePropertyValues(payload));

View File

@@ -27,8 +27,8 @@ import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.TypeDescriptor;
import org.springframework.core.convert.support.DefaultConversionService;
import org.springframework.expression.TypeConverter;
import org.springframework.messaging.MessageHeaders;
import org.springframework.integration.history.MessageHistory;
import org.springframework.messaging.MessageHeaders;
import org.springframework.util.ClassUtils;
/**
@@ -39,9 +39,6 @@ import org.springframework.util.ClassUtils;
*/
public class BeanFactoryTypeConverter implements TypeConverter, BeanFactoryAware {
private static ConversionService defaultConversionService;
private volatile SimpleTypeConverter delegate = new SimpleTypeConverter();
private volatile boolean haveCalledDelegateGetDefaultEditor;
@@ -50,12 +47,7 @@ public class BeanFactoryTypeConverter implements TypeConverter, BeanFactoryAware
public BeanFactoryTypeConverter() {
synchronized (BeanFactoryTypeConverter.class) {
if (defaultConversionService == null) {
defaultConversionService = new DefaultConversionService();
}
}
this.conversionService = defaultConversionService;
this.conversionService = DefaultConversionService.getSharedInstance();
}
public BeanFactoryTypeConverter(ConversionService conversionService) {
@@ -67,6 +59,7 @@ public class BeanFactoryTypeConverter implements TypeConverter, BeanFactoryAware
this.conversionService = conversionService;
}
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
if (beanFactory instanceof ConfigurableBeanFactory) {
Object typeConverter = ((ConfigurableBeanFactory) beanFactory).getTypeConverter();
@@ -90,6 +83,7 @@ public class BeanFactoryTypeConverter implements TypeConverter, BeanFactoryAware
return this.delegate.findCustomEditor(targetType, null) != null || this.getDefaultEditor(targetType) != null;
}
@Override
public boolean canConvert(TypeDescriptor sourceTypeDescriptor, TypeDescriptor targetTypeDescriptor) {
if (this.conversionService.canConvert(sourceTypeDescriptor, targetTypeDescriptor)) {
return true;
@@ -100,6 +94,7 @@ public class BeanFactoryTypeConverter implements TypeConverter, BeanFactoryAware
return canConvert(sourceType, targetType);
}
@Override
public Object convertValue(Object value, TypeDescriptor sourceType, TypeDescriptor targetType) {
// Echoes org.springframework.expression.common.ExpressionUtils.convertTypedValue()
if ((targetType.getType() == Void.class || targetType.getType() == Void.TYPE) && value == null) {

View File

@@ -17,13 +17,16 @@
package org.springframework.integration.expression;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import org.junit.Test;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.support.ConversionServiceFactoryBean;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.core.convert.support.DefaultConversionService;
import org.springframework.expression.TypeConverter;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import org.springframework.integration.config.IntegrationEvaluationContextFactoryBean;
@@ -66,6 +69,8 @@ public class ExpressionUtilsTests {
assertNotNull(evalContext.getBeanResolver());
TypeConverter typeConverter = evalContext.getTypeConverter();
assertNotNull(typeConverter);
assertSame(DefaultConversionService.getSharedInstance(),
TestUtils.getPropertyValue(typeConverter, "conversionService"));
}
@Test
@@ -78,6 +83,8 @@ public class ExpressionUtilsTests {
assertNotNull(evalContext.getBeanResolver());
TypeConverter typeConverter = evalContext.getTypeConverter();
assertNotNull(typeConverter);
assertNotSame(DefaultConversionService.getSharedInstance(),
TestUtils.getPropertyValue(typeConverter, "conversionService"));
assertSame(context.getBean(IntegrationUtils.INTEGRATION_CONVERSION_SERVICE_BEAN_NAME),
TestUtils.getPropertyValue(typeConverter, "conversionService"));
}
@@ -88,5 +95,7 @@ public class ExpressionUtilsTests {
assertNull(evalContext.getBeanResolver());
TypeConverter typeConverter = evalContext.getTypeConverter();
assertNotNull(typeConverter);
assertSame(DefaultConversionService.getSharedInstance(),
TestUtils.getPropertyValue(typeConverter, "conversionService"));
}
}