added tests

This commit is contained in:
Mark Fisher
2009-12-10 22:26:02 +00:00
parent 34802e77fd
commit 9e4e9ba7e7
2 changed files with 89 additions and 3 deletions

View File

@@ -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.");
}
}

View File

@@ -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