added tests
This commit is contained in:
@@ -124,8 +124,8 @@ public abstract class AbstractMessageChannel implements MessageChannel, BeanFact
|
||||
this.conversionService = this.beanFactory.getBean("conversionService", ConversionService.class);
|
||||
}
|
||||
else if (logger.isWarnEnabled()) {
|
||||
logger.warn("Unable to attempt conversion of Message payload types. " +
|
||||
"Datatype channel has no explicit ConversionService reference, " +
|
||||
logger.warn("Unable to attempt conversion of Message payload types. Datatype channel '" +
|
||||
this.getName() + "' has no explicit ConversionService reference, " +
|
||||
"and there is no 'conversionService' bean within the context.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,13 +16,22 @@
|
||||
|
||||
package org.springframework.integration.channel;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||
import org.springframework.context.support.ConversionServiceFactoryBean;
|
||||
import org.springframework.context.support.GenericApplicationContext;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.core.convert.support.ConversionServiceFactory;
|
||||
import org.springframework.core.convert.support.GenericConversionService;
|
||||
import org.springframework.integration.core.MessageChannel;
|
||||
import org.springframework.integration.core.MessagingException;
|
||||
import org.springframework.integration.message.ErrorMessage;
|
||||
@@ -45,7 +54,84 @@ public class DatatypeChannelTests {
|
||||
@Test(expected = MessageDeliveryException.class)
|
||||
public void unsupportedTypeAndNoConversionService() {
|
||||
MessageChannel channel = createChannel(Integer.class);
|
||||
channel.send(new StringMessage("test"));
|
||||
channel.send(new StringMessage("123"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void unsupportedTypeButConversionServiceSupports() {
|
||||
QueueChannel channel = createChannel(Integer.class);
|
||||
ConversionService conversionService = ConversionServiceFactory.createDefaultConversionService();
|
||||
channel.setConversionService(conversionService);
|
||||
assertTrue(channel.send(new StringMessage("123")));
|
||||
}
|
||||
|
||||
@Test(expected = MessageDeliveryException.class)
|
||||
public void unsupportedTypeAndConversionServiceDoesNotSupport() {
|
||||
QueueChannel channel = createChannel(Integer.class);
|
||||
ConversionService conversionService = ConversionServiceFactory.createDefaultConversionService();
|
||||
channel.setConversionService(conversionService);
|
||||
assertTrue(channel.send(new GenericMessage<Boolean>(Boolean.TRUE)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void unsupportedTypeButCustomConversionServiceSupports() {
|
||||
QueueChannel channel = createChannel(Integer.class);
|
||||
GenericConversionService conversionService = ConversionServiceFactory.createDefaultConversionService();
|
||||
conversionService.addConverter(new Converter<Boolean, Integer>() {
|
||||
public Integer convert(Boolean source) {
|
||||
return source ? 1 : 0;
|
||||
}
|
||||
});
|
||||
channel.setConversionService(conversionService);
|
||||
assertTrue(channel.send(new GenericMessage<Boolean>(Boolean.TRUE)));
|
||||
assertEquals(new Integer(1), channel.receive().getPayload());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void conversionServiceBeanUsedByDefault() {
|
||||
GenericApplicationContext context = new GenericApplicationContext();
|
||||
Converter<Boolean, Integer> converter = new Converter<Boolean, Integer>() {
|
||||
public Integer convert(Boolean source) {
|
||||
return source ? 1 : 0;
|
||||
}
|
||||
};
|
||||
BeanDefinitionBuilder conversionServiceBuilder =
|
||||
BeanDefinitionBuilder.genericBeanDefinition(ConversionServiceFactoryBean.class);
|
||||
conversionServiceBuilder.addPropertyValue("converters", Collections.singleton(converter));
|
||||
context.registerBeanDefinition("conversionService", conversionServiceBuilder.getBeanDefinition());
|
||||
BeanDefinitionBuilder channelBuilder = BeanDefinitionBuilder.genericBeanDefinition(QueueChannel.class);
|
||||
channelBuilder.addPropertyValue("datatypes", "java.lang.Integer, java.util.Date");
|
||||
context.registerBeanDefinition("testChannel", channelBuilder.getBeanDefinition());
|
||||
QueueChannel channel = context.getBean("testChannel", QueueChannel.class);
|
||||
assertTrue(channel.send(new GenericMessage<Boolean>(Boolean.TRUE)));
|
||||
assertEquals(new Integer(1), channel.receive().getPayload());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void conversionServiceReferenceOverridesDefault() {
|
||||
GenericApplicationContext context = new GenericApplicationContext();
|
||||
Converter<Boolean, Integer> defaultConverter = new Converter<Boolean, Integer>() {
|
||||
public Integer convert(Boolean source) {
|
||||
return source ? 1 : 0;
|
||||
}
|
||||
};
|
||||
GenericConversionService customConversionService = ConversionServiceFactory.createDefaultConversionService();
|
||||
customConversionService.addConverter(new Converter<Boolean, Integer>() {
|
||||
public Integer convert(Boolean source) {
|
||||
return source ? 99 : -99;
|
||||
}
|
||||
});
|
||||
BeanDefinitionBuilder conversionServiceBuilder =
|
||||
BeanDefinitionBuilder.genericBeanDefinition(ConversionServiceFactoryBean.class);
|
||||
conversionServiceBuilder.addPropertyValue("converters", Collections.singleton(defaultConverter));
|
||||
context.registerBeanDefinition("conversionService", conversionServiceBuilder.getBeanDefinition());
|
||||
BeanDefinitionBuilder channelBuilder = BeanDefinitionBuilder.genericBeanDefinition(QueueChannel.class);
|
||||
channelBuilder.addPropertyValue("datatypes", "java.lang.Integer, java.util.Date");
|
||||
channelBuilder.addPropertyValue("conversionService", customConversionService);
|
||||
context.registerBeanDefinition("testChannel", channelBuilder.getBeanDefinition());
|
||||
QueueChannel channel = context.getBean("testChannel", QueueChannel.class);
|
||||
assertTrue(channel.send(new GenericMessage<Boolean>(Boolean.TRUE)));
|
||||
assertEquals(new Integer(99), channel.receive().getPayload());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user