Message payload can no longer be set. MessageTransformer's transform() method now returns a Message (instead of void). ChannelInterceptor preSend() and postReceive() methods now return a Message instead of boolean.
This commit is contained in:
@@ -33,14 +33,13 @@ import org.springframework.integration.bus.DefaultChannelFactoryBean;
|
||||
import org.springframework.integration.bus.DefaultMessageBus;
|
||||
import org.springframework.integration.channel.AbstractMessageChannel;
|
||||
import org.springframework.integration.channel.ChannelInterceptor;
|
||||
import org.springframework.integration.channel.MessageChannel;
|
||||
import org.springframework.integration.channel.PriorityChannel;
|
||||
import org.springframework.integration.channel.QueueChannel;
|
||||
import org.springframework.integration.channel.RendezvousChannel;
|
||||
import org.springframework.integration.channel.ThreadLocalChannel;
|
||||
import org.springframework.integration.channel.interceptor.ChannelInterceptorAdapter;
|
||||
import org.springframework.integration.dispatcher.DirectChannel;
|
||||
import org.springframework.integration.dispatcher.DirectChannelFactory;
|
||||
import org.springframework.integration.message.Message;
|
||||
|
||||
/**
|
||||
* @author Marius Bogoevici
|
||||
@@ -137,23 +136,7 @@ public class ChannelFactoryTests {
|
||||
}
|
||||
|
||||
|
||||
static class TestChannelInterceptor implements ChannelInterceptor {
|
||||
|
||||
public void postReceive(Message<?> message, MessageChannel channel) {
|
||||
}
|
||||
|
||||
public void postSend(Message<?> message, MessageChannel channel, boolean sent) {
|
||||
}
|
||||
|
||||
public boolean preReceive(MessageChannel channel) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean preSend(Message<?> message, MessageChannel channel) {
|
||||
return false;
|
||||
}
|
||||
|
||||
private static class TestChannelInterceptor extends ChannelInterceptorAdapter {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -41,22 +41,22 @@ public class ChannelInterceptorTests {
|
||||
|
||||
|
||||
@Test
|
||||
public void testPreSendInterceptorReturnsTrue() {
|
||||
channel.addInterceptor(new PreSendReturnsTrueInterceptor());
|
||||
public void testPreSendInterceptorReturnsMessage() {
|
||||
channel.addInterceptor(new PreSendReturnsMessageInterceptor());
|
||||
channel.send(new StringMessage("test"));
|
||||
Message result = channel.receive(0);
|
||||
Message<?> result = channel.receive(0);
|
||||
assertNotNull(result);
|
||||
assertEquals("test", result.getPayload());
|
||||
assertEquals(1, result.getHeader().getAttribute(PreSendReturnsTrueInterceptor.class.getName()));
|
||||
assertEquals(1, result.getHeader().getAttribute(PreSendReturnsMessageInterceptor.class.getName()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreSendInterceptorReturnsFalse() {
|
||||
channel.addInterceptor(new PreSendReturnsFalseInterceptor());
|
||||
Message message = new StringMessage("test");
|
||||
public void testPreSendInterceptorReturnsNull() {
|
||||
channel.addInterceptor(new PreSendReturnsNullInterceptor());
|
||||
Message<?> message = new StringMessage("test");
|
||||
channel.send(message);
|
||||
assertEquals(1, message.getHeader().getAttribute(PreSendReturnsFalseInterceptor.class.getName()));
|
||||
Message result = channel.receive(0);
|
||||
assertEquals(1, message.getHeader().getAttribute(PreSendReturnsNullInterceptor.class.getName()));
|
||||
Message<?> result = channel.receive(0);
|
||||
assertNull(result);
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ public class ChannelInterceptorTests {
|
||||
final AtomicBoolean invoked = new AtomicBoolean(false);
|
||||
channel.addInterceptor(new ChannelInterceptorAdapter() {
|
||||
@Override
|
||||
public void postSend(Message message, MessageChannel channel, boolean sent) {
|
||||
public void postSend(Message<?> message, MessageChannel channel, boolean sent) {
|
||||
assertNotNull(message);
|
||||
assertNotNull(channel);
|
||||
assertSame(ChannelInterceptorTests.this.channel, channel);
|
||||
@@ -84,7 +84,7 @@ public class ChannelInterceptorTests {
|
||||
final QueueChannel singleItemChannel = new QueueChannel(1);
|
||||
singleItemChannel.addInterceptor(new ChannelInterceptorAdapter() {
|
||||
@Override
|
||||
public void postSend(Message message, MessageChannel channel, boolean sent) {
|
||||
public void postSend(Message<?> message, MessageChannel channel, boolean sent) {
|
||||
assertNotNull(message);
|
||||
assertNotNull(channel);
|
||||
assertSame(singleItemChannel, channel);
|
||||
@@ -107,9 +107,9 @@ public class ChannelInterceptorTests {
|
||||
@Test
|
||||
public void testPreReceiveInterceptorReturnsTrue() {
|
||||
channel.addInterceptor(new PreReceiveReturnsTrueInterceptor());
|
||||
Message message = new StringMessage("test");
|
||||
Message<?> message = new StringMessage("test");
|
||||
channel.send(message);
|
||||
Message result = channel.receive(0);
|
||||
Message<?> result = channel.receive(0);
|
||||
assertEquals(1, PreReceiveReturnsTrueInterceptor.counter.get());
|
||||
assertNotNull(result);
|
||||
}
|
||||
@@ -117,9 +117,9 @@ public class ChannelInterceptorTests {
|
||||
@Test
|
||||
public void testPreReceiveInterceptorReturnsFalse() {
|
||||
channel.addInterceptor(new PreReceiveReturnsFalseInterceptor());
|
||||
Message message = new StringMessage("test");
|
||||
Message<?> message = new StringMessage("test");
|
||||
channel.send(message);
|
||||
Message result = channel.receive(0);
|
||||
Message<?> result = channel.receive(0);
|
||||
assertEquals(1, PreReceiveReturnsFalseInterceptor.counter.get());
|
||||
assertNull(result);
|
||||
}
|
||||
@@ -130,48 +130,49 @@ public class ChannelInterceptorTests {
|
||||
final AtomicInteger messageCount = new AtomicInteger();
|
||||
channel.addInterceptor(new ChannelInterceptorAdapter() {
|
||||
@Override
|
||||
public void postReceive(Message message, MessageChannel channel) {
|
||||
public Message<?> postReceive(Message<?> message, MessageChannel channel) {
|
||||
assertNotNull(channel);
|
||||
assertSame(ChannelInterceptorTests.this.channel, channel);
|
||||
if (message != null) {
|
||||
messageCount.incrementAndGet();
|
||||
}
|
||||
invokedCount.incrementAndGet();
|
||||
return message;
|
||||
}
|
||||
});
|
||||
channel.receive(0);
|
||||
assertEquals(1, invokedCount.get());
|
||||
assertEquals(0, messageCount.get());
|
||||
channel.send(new StringMessage("test"));
|
||||
Message result = channel.receive(0);
|
||||
Message<?> result = channel.receive(0);
|
||||
assertNotNull(result);
|
||||
assertEquals(2, invokedCount.get());
|
||||
assertEquals(1, messageCount.get());
|
||||
}
|
||||
|
||||
|
||||
private static class PreSendReturnsTrueInterceptor extends ChannelInterceptorAdapter {
|
||||
private static class PreSendReturnsMessageInterceptor extends ChannelInterceptorAdapter {
|
||||
|
||||
private static AtomicInteger counter = new AtomicInteger();
|
||||
|
||||
@Override
|
||||
public boolean preSend(Message message, MessageChannel channel) {
|
||||
public Message<?> preSend(Message<?> message, MessageChannel channel) {
|
||||
assertNotNull(message);
|
||||
message.getHeader().setAttribute(this.getClass().getName(), counter.incrementAndGet());
|
||||
return true;
|
||||
return message;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static class PreSendReturnsFalseInterceptor extends ChannelInterceptorAdapter {
|
||||
private static class PreSendReturnsNullInterceptor extends ChannelInterceptorAdapter {
|
||||
|
||||
private static AtomicInteger counter = new AtomicInteger();
|
||||
|
||||
@Override
|
||||
public boolean preSend(Message message, MessageChannel channel) {
|
||||
public Message<?> preSend(Message<?> message, MessageChannel channel) {
|
||||
assertNotNull(message);
|
||||
message.getHeader().setAttribute(this.getClass().getName(), counter.incrementAndGet());
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,14 +33,15 @@ public class TestChannelInterceptor extends ChannelInterceptorAdapter {
|
||||
|
||||
|
||||
@Override
|
||||
public boolean preSend(Message<?> message, MessageChannel channel) {
|
||||
public Message<?> preSend(Message<?> message, MessageChannel channel) {
|
||||
sendCount.incrementAndGet();
|
||||
return true;
|
||||
return message;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postReceive(Message<?> message, MessageChannel channel) {
|
||||
public Message<?> postReceive(Message<?> message, MessageChannel channel) {
|
||||
receiveCount.incrementAndGet();
|
||||
return message;
|
||||
}
|
||||
|
||||
public int getSendCount() {
|
||||
|
||||
@@ -48,10 +48,11 @@ public class TestChannelInterceptor extends ChannelInterceptorAdapter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postReceive(Message<?> message, MessageChannel channel) {
|
||||
public Message<?> postReceive(Message<?> message, MessageChannel channel) {
|
||||
if (message != null) {
|
||||
this.receivedCount.incrementAndGet();
|
||||
}
|
||||
return message;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -45,8 +45,8 @@ public class AnnotationMethodTransformerAdapterTests {
|
||||
adapter.setObject(testBean);
|
||||
adapter.setMethod(testBean.getClass().getMethod("exclaim", String.class));
|
||||
Message<?> message = new StringMessage("foo");
|
||||
adapter.transform(message);
|
||||
assertEquals("FOO!", message.getPayload());
|
||||
Message<?> result = adapter.handle(message);
|
||||
assertEquals("FOO!", result.getPayload());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -56,8 +56,8 @@ public class AnnotationMethodTransformerAdapterTests {
|
||||
adapter.setObject(testBean);
|
||||
adapter.setMethod(testBean.getClass().getMethod("exclaim", String.class));
|
||||
Message<?> message = new GenericMessage<Integer>(123);
|
||||
adapter.transform(message);
|
||||
assertEquals("123!", message.getPayload());
|
||||
Message<?> result = adapter.handle(message);
|
||||
assertEquals("123!", result.getPayload());
|
||||
}
|
||||
|
||||
@Test(expected=MessagingException.class)
|
||||
@@ -67,7 +67,7 @@ public class AnnotationMethodTransformerAdapterTests {
|
||||
adapter.setObject(testBean);
|
||||
adapter.setMethod(testBean.getClass().getMethod("exclaim", String.class));
|
||||
Message<?> message = new GenericMessage<Date>(new Date());
|
||||
adapter.transform(message);
|
||||
adapter.handle(message);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -78,8 +78,8 @@ public class AnnotationMethodTransformerAdapterTests {
|
||||
adapter.setMethod(testBean.getClass().getMethod("attributeTest", String.class, Integer.class));
|
||||
Message<?> message = new StringMessage("foo");
|
||||
message.getHeader().setAttribute("number", 123);
|
||||
adapter.transform(message);
|
||||
assertEquals("foo123", message.getPayload());
|
||||
Message<?> result = adapter.handle(message);
|
||||
assertEquals("foo123", result.getPayload());
|
||||
}
|
||||
|
||||
@Test(expected=MessageHandlingException.class)
|
||||
@@ -90,7 +90,7 @@ public class AnnotationMethodTransformerAdapterTests {
|
||||
adapter.setMethod(testBean.getClass().getMethod("attributeTest", String.class, Integer.class));
|
||||
Message<?> message = new StringMessage("foo");
|
||||
message.getHeader().setAttribute("wrong", 123);
|
||||
adapter.transform(message);
|
||||
adapter.handle(message);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -101,8 +101,8 @@ public class AnnotationMethodTransformerAdapterTests {
|
||||
adapter.setMethod(testBean.getClass().getMethod("propertyTest", String.class, String.class));
|
||||
Message<?> message = new StringMessage("foo");
|
||||
message.getHeader().setProperty("suffix", "bar");
|
||||
adapter.transform(message);
|
||||
assertEquals("foobar", message.getPayload());
|
||||
Message<?> result = adapter.handle(message);
|
||||
assertEquals("foobar", result.getPayload());
|
||||
}
|
||||
|
||||
@Test(expected=MessageHandlingException.class)
|
||||
@@ -113,7 +113,7 @@ public class AnnotationMethodTransformerAdapterTests {
|
||||
adapter.setMethod(testBean.getClass().getMethod("propertyTest", String.class, String.class));
|
||||
Message<?> message = new StringMessage("foo");
|
||||
message.getHeader().setProperty("wrong", "bar");
|
||||
adapter.transform(message);
|
||||
adapter.handle(message);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -125,14 +125,15 @@ public class AnnotationMethodTransformerAdapterTests {
|
||||
Message<?> message = new StringMessage("test");
|
||||
message.getHeader().setProperty("prop1", "bad");
|
||||
message.getHeader().setProperty("prop3", "baz");
|
||||
adapter.transform(message);
|
||||
assertEquals("test", message.getPayload());
|
||||
assertEquals("foo", message.getHeader().getProperty("prop1"));
|
||||
assertEquals("bar", message.getHeader().getProperty("prop2"));
|
||||
assertEquals("baz", message.getHeader().getProperty("prop3"));
|
||||
Message<?> result = adapter.handle(message);
|
||||
assertEquals("test", result.getPayload());
|
||||
assertEquals("foo", result.getHeader().getProperty("prop1"));
|
||||
assertEquals("bar", result.getHeader().getProperty("prop2"));
|
||||
assertEquals("baz", result.getHeader().getProperty("prop3"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void testPropertyPayload() throws Exception {
|
||||
TestBean testBean = new TestBean();
|
||||
AnnotationMethodTransformerAdapter adapter = new AnnotationMethodTransformerAdapter();
|
||||
@@ -142,15 +143,15 @@ public class AnnotationMethodTransformerAdapterTests {
|
||||
props.setProperty("prop1", "bad");
|
||||
props.setProperty("prop3", "baz");
|
||||
Message<Properties> message = new GenericMessage<Properties>(props);
|
||||
adapter.transform(message);
|
||||
assertEquals(Properties.class, message.getPayload().getClass());
|
||||
Properties payload = message.getPayload();
|
||||
Message<Properties> result = (Message<Properties>) adapter.handle(message);
|
||||
assertEquals(Properties.class, result.getPayload().getClass());
|
||||
Properties payload = result.getPayload();
|
||||
assertEquals("foo", payload.getProperty("prop1"));
|
||||
assertEquals("bar", payload.getProperty("prop2"));
|
||||
assertEquals("baz", payload.getProperty("prop3"));
|
||||
assertNull(message.getHeader().getProperty("prop1"));
|
||||
assertNull(message.getHeader().getProperty("prop2"));
|
||||
assertNull(message.getHeader().getProperty("prop3"));
|
||||
assertNull(result.getHeader().getProperty("prop1"));
|
||||
assertNull(result.getHeader().getProperty("prop2"));
|
||||
assertNull(result.getHeader().getProperty("prop3"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -70,15 +70,16 @@ public class MessageTransformingChannelInterceptorTests {
|
||||
}
|
||||
|
||||
|
||||
private static class TestTransformer implements MessageTransformer{
|
||||
private static class TestTransformer implements MessageTransformer {
|
||||
|
||||
boolean invoked = false;
|
||||
|
||||
int invokedCount = 0;
|
||||
|
||||
public void transform(Message<?> message) {
|
||||
public Message<?> transform(Message<?> message) {
|
||||
invoked = true;
|
||||
invokedCount++;
|
||||
return message;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -38,8 +38,8 @@ public class PayloadTransformerAdapterTests {
|
||||
adapter.setObject(new TestBean());
|
||||
adapter.setMethodName("exclaim");
|
||||
Message<?> message = new StringMessage("foo");
|
||||
adapter.transform(message);
|
||||
assertEquals("FOO!", message.getPayload());
|
||||
Message<?> result = adapter.transform(message);
|
||||
assertEquals("FOO!", result.getPayload());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -48,8 +48,8 @@ public class PayloadTransformerAdapterTests {
|
||||
adapter.setObject(new TestBean());
|
||||
adapter.setMethodName("exclaim");
|
||||
Message<?> message = new GenericMessage<Integer>(123);
|
||||
adapter.transform(message);
|
||||
assertEquals("123!", message.getPayload());
|
||||
Message<?> result = adapter.transform(message);
|
||||
assertEquals("123!", result.getPayload());
|
||||
}
|
||||
|
||||
@Test(expected=MessagingException.class)
|
||||
|
||||
Reference in New Issue
Block a user