diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/transformer/MessageTransformingChannelInterceptor.java b/org.springframework.integration/src/main/java/org/springframework/integration/transformer/MessageTransformingChannelInterceptor.java index e7df0b8e8f..e93b78e306 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/transformer/MessageTransformingChannelInterceptor.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/transformer/MessageTransformingChannelInterceptor.java @@ -22,39 +22,43 @@ import org.springframework.integration.channel.interceptor.ChannelInterceptorAda import org.springframework.integration.message.Message; /** - * a {@link ChannelInterceptor} which allows the application of a {@link MessageTransformer} on either send or receive to a channel - * @author Jonas Partner + * A {@link ChannelInterceptor} which invokes a {@link MessageTransformer} + * when either sending-to or receiving-from a channel. * + * @author Jonas Partner */ public class MessageTransformingChannelInterceptor extends ChannelInterceptorAdapter { - private boolean convertOnSend = true; - private final MessageTransformer transfomer; + private volatile boolean transformOnSend = true; + + public MessageTransformingChannelInterceptor(MessageTransformer transformer) { this.transfomer = transformer; } - public boolean getConvertOnSend() { - return convertOnSend; + + public boolean getTransformOnSend() { + return this.transformOnSend; } - public void setConvertOnSend(boolean convertOnSend) { - this.convertOnSend = convertOnSend; + public void setTransformOnSend(boolean transformOnSend) { + this.transformOnSend = transformOnSend; } @Override - public void postSend(Message message, MessageChannel channel, boolean sent) { - if(convertOnSend){ - transfomer.transform(message); + public boolean preSend(Message message, MessageChannel channel) { + if (this.transformOnSend) { + this.transfomer.transform(message); } + return true; } @Override public void postReceive(Message message, MessageChannel channel) { - if(!convertOnSend){ - transfomer.transform(message); + if (!this.transformOnSend) { + this.transfomer.transform(message); } } diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/transformer/MessageTransformingChannelInterceptorTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/transformer/MessageTransformingChannelInterceptorTests.java index e9dcd38f8a..14aa7a63d4 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/transformer/MessageTransformingChannelInterceptorTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/transformer/MessageTransformingChannelInterceptorTests.java @@ -20,26 +20,26 @@ import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; + import org.springframework.integration.channel.AbstractMessageChannel; import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.message.Message; import org.springframework.integration.message.StringMessage; /** - * * @author Jonas Partner - * */ public class MessageTransformingChannelInterceptorTests { - + AbstractMessageChannel channel; - + StringMessage message; - + TestTransformer transfomer; - + MessageTransformingChannelInterceptor channelInterceptor; - + + @Before public void setUp(){ channel = new QueueChannel(); @@ -48,28 +48,28 @@ public class MessageTransformingChannelInterceptorTests { channelInterceptor = new MessageTransformingChannelInterceptor(transfomer); channel.addInterceptor(channelInterceptor); } - + @Test - public void testTransformOnReceive(){ - channelInterceptor.setConvertOnSend(false); + public void testTransformOnReceive() { + channelInterceptor.setTransformOnSend(false); channel.send(message); assertFalse("Transfomrer on incorrectly invoked on send", transfomer.invoked); - Message msg = channel.receive(1); + Message msg = channel.receive(1); assertEquals("Wrong message",message, msg); assertTrue("Transfomer not invoked on receive", transfomer.invoked); } - + @Test - public void testTransformOnSend(){ - channelInterceptor.setConvertOnSend(true); + public void testTransformOnSend() { + channelInterceptor.setTransformOnSend(true); channel.send(message); assertTrue("Transfomrer not invoked on send", transfomer.invoked); - Message msg = channel.receive(1); + Message msg = channel.receive(1); assertEquals("Wrong message",message, msg); assertEquals("Transfomer invoked on receive", 1, transfomer.invokedCount); } - - + + private static class TestTransformer implements MessageTransformer{ boolean invoked = false; @@ -80,7 +80,7 @@ public class MessageTransformingChannelInterceptorTests { invoked = true; invokedCount++; } - + } }