diff --git a/org.springframework.integration.security/src/main/java/org/springframework/integration/security/channel/SecurityContextPropagatingChannelInterceptor.java b/org.springframework.integration.security/src/main/java/org/springframework/integration/security/channel/SecurityContextPropagatingChannelInterceptor.java index 7a28af9c7e..bdcd33f4d9 100644 --- a/org.springframework.integration.security/src/main/java/org/springframework/integration/security/channel/SecurityContextPropagatingChannelInterceptor.java +++ b/org.springframework.integration.security/src/main/java/org/springframework/integration/security/channel/SecurityContextPropagatingChannelInterceptor.java @@ -27,7 +27,7 @@ import org.springframework.security.context.SecurityContext; import org.springframework.security.context.SecurityContextHolder; /** - * Propagates the {@ link SecurityContext} associated with the current thread + * Propagates the {@link SecurityContext} associated with the current thread * (if any) by adding it to the header of sent messages. * * @author Jonas Partner @@ -36,10 +36,11 @@ public class SecurityContextPropagatingChannelInterceptor extends ChannelInterce private final Log logger = LogFactory.getLog(this.getClass()); + @Override - public boolean preSend(Message message, MessageChannel channel) { + public Message preSend(Message message, MessageChannel channel) { this.setSecurityContextAttribute(message); - return true; + return message; } protected void setSecurityContextAttribute(Message message) { diff --git a/org.springframework.integration.security/src/main/java/org/springframework/integration/security/channel/SecurityEnforcingChannelInterceptor.java b/org.springframework.integration.security/src/main/java/org/springframework/integration/security/channel/SecurityEnforcingChannelInterceptor.java index 6bfa622c7f..e006916805 100644 --- a/org.springframework.integration.security/src/main/java/org/springframework/integration/security/channel/SecurityEnforcingChannelInterceptor.java +++ b/org.springframework.integration.security/src/main/java/org/springframework/integration/security/channel/SecurityEnforcingChannelInterceptor.java @@ -26,7 +26,7 @@ import org.springframework.util.Assert; /** * Delegates to the provided instance of {@link AccessDecisionManager} to - * enforce the security on the send and receive calls on the {@ MessageChannel}. + * enforce the security on the send and receive calls of the {@link MessageChannel}. * * @author Jonas Partner */ @@ -38,11 +38,13 @@ public class SecurityEnforcingChannelInterceptor extends ChannelInterceptorAdapt private volatile ConfigAttributeDefinition receiveSecurityAttributes; + public SecurityEnforcingChannelInterceptor(AccessDecisionManager accessDecisionManager) { Assert.notNull(accessDecisionManager, "AccessDecisionManager must not be null"); this.accessDecisionManger = accessDecisionManager; } + public ConfigAttributeDefinition getSendSecurityAttributes() { return this.sendSecurityAttributes; } @@ -60,9 +62,9 @@ public class SecurityEnforcingChannelInterceptor extends ChannelInterceptorAdapt } @Override - public boolean preSend(Message message, MessageChannel channel) { + public Message preSend(Message message, MessageChannel channel) { this.checkSend(channel); - return true; + return message; } @Override diff --git a/org.springframework.integration.security/src/test/java/org/springframework/integration/security/ChannelInterceptorRegisteringBeanPostProcessorTests.java b/org.springframework.integration.security/src/test/java/org/springframework/integration/security/ChannelInterceptorRegisteringBeanPostProcessorTests.java index c8da634dea..e093ca7205 100644 --- a/org.springframework.integration.security/src/test/java/org/springframework/integration/security/ChannelInterceptorRegisteringBeanPostProcessorTests.java +++ b/org.springframework.integration.security/src/test/java/org/springframework/integration/security/ChannelInterceptorRegisteringBeanPostProcessorTests.java @@ -28,6 +28,7 @@ import org.junit.Test; import org.springframework.integration.channel.AbstractMessageChannel; import org.springframework.integration.channel.ChannelInterceptor; import org.springframework.integration.channel.MessageChannel; +import org.springframework.integration.channel.interceptor.ChannelInterceptorAdapter; import org.springframework.integration.message.Message; import org.springframework.integration.message.selector.MessageSelector; @@ -38,6 +39,7 @@ public class ChannelInterceptorRegisteringBeanPostProcessorTests { public ArrayList matchAll; + @Before public void setUp() { matchAll = new ArrayList(); @@ -45,6 +47,7 @@ public class ChannelInterceptorRegisteringBeanPostProcessorTests { } + @Test public void testWithAbstractMessageChannel() { ChannelInterceptorRegisteringBeanPostProcessor postprocessor = new ChannelInterceptorRegisteringBeanPostProcessor( @@ -74,25 +77,11 @@ public class ChannelInterceptorRegisteringBeanPostProcessorTests { } - static class TestInterceptor 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 TestInterceptor extends ChannelInterceptorAdapter { } - static class TestChannel extends AbstractMessageChannel { + private static class TestChannel extends AbstractMessageChannel { ChannelInterceptor channelInterceptor; diff --git a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/XmlUnmarshallingTransformerParser.java b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/XmlUnmarshallingTransformerParser.java index a6ed7f073f..2889fa040f 100644 --- a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/XmlUnmarshallingTransformerParser.java +++ b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/config/XmlUnmarshallingTransformerParser.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2007 the original author or authors. + * Copyright 2002-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,18 +16,17 @@ package org.springframework.integration.xml.config; +import org.w3c.dom.Element; + import org.springframework.beans.factory.config.RuntimeBeanReference; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; -import org.springframework.integration.xml.transformer.XmlPayloadUnmarshallingTransfomer; +import org.springframework.integration.xml.transformer.XmlPayloadUnmarshallingTransformer; import org.springframework.util.Assert; -import org.w3c.dom.Element; /** - * * @author Jonas Partner - * */ public class XmlUnmarshallingTransformerParser extends AbstractSingleBeanDefinitionParser { @@ -45,7 +44,7 @@ public class XmlUnmarshallingTransformerParser extends AbstractSingleBeanDefinit protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { String unmarshaller = element.getAttribute("unmarshaller"); Assert.hasText(unmarshaller, "A unmarshaller attribute is required"); - builder.getBeanDefinition().setBeanClass(XmlPayloadUnmarshallingTransfomer.class); + builder.getBeanDefinition().setBeanClass(XmlPayloadUnmarshallingTransformer.class); builder.getBeanDefinition().getConstructorArgumentValues().addGenericArgumentValue( new RuntimeBeanReference(unmarshaller)); } diff --git a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/ResultToDocumentTransformer.java b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/ResultToDocumentTransformer.java index cc7651ad79..d5362a9c76 100644 --- a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/ResultToDocumentTransformer.java +++ b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/ResultToDocumentTransformer.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2007 the original author or authors. + * Copyright 2002-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,23 +24,26 @@ import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Result; import javax.xml.transform.dom.DOMResult; +import org.w3c.dom.Document; +import org.xml.sax.InputSource; + +import org.springframework.integration.message.GenericMessage; import org.springframework.integration.message.Message; import org.springframework.integration.message.MessagingException; import org.springframework.integration.transformer.MessageTransformer; import org.springframework.xml.transform.StringResult; -import org.w3c.dom.Document; -import org.xml.sax.InputSource; /** - * Creates a {@link Document} from a {@link Result} payload - * @author Jonas Partner + * Creates a {@link Document} from a {@link Result} payload. * + * @author Jonas Partner */ public class ResultToDocumentTransformer implements MessageTransformer { // Not guaranteed to be thread safe private final DocumentBuilderFactory documentBuilderFactory; + public ResultToDocumentTransformer(DocumentBuilderFactory documentBuilderFactory) { this.documentBuilderFactory = documentBuilderFactory; } @@ -49,23 +52,21 @@ public class ResultToDocumentTransformer implements MessageTransformer { this(DocumentBuilderFactory.newInstance()); } + @SuppressWarnings("unchecked") - public void transform(Message message) { - Document doc; + public Message transform(Message message) { + Document doc = null; if (DOMResult.class.isAssignableFrom(message.getPayload().getClass())) { doc = createDocumentFromDomResult(message, (DOMResult) message.getPayload()); - } else if (StringResult.class.isAssignableFrom(message.getPayload().getClass())) { doc = createDocumentFromStringResult(message, (StringResult) message.getPayload()); } else { - throw new MessagingException(message, "Could not create document from payload type " - + message.getPayload().getClass().getName()); + throw new MessagingException(message, "Failed to create document from payload type [" + + message.getPayload().getClass().getName() + "]"); } - - message.setPayload(doc); - + return new GenericMessage(doc, message.getHeader()); } @SuppressWarnings("unchecked") @@ -87,8 +88,8 @@ public class ResultToDocumentTransformer implements MessageTransformer { try { return documentBuilderFactory.newDocumentBuilder(); } - catch (ParserConfigurationException parseE) { - throw new MessagingException("Failed to create a new DocumentBuilder", parseE); + catch (ParserConfigurationException e) { + throw new MessagingException("Failed to create a new DocumentBuilder", e); } } diff --git a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/SourceCreatingTransformer.java b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/SourceCreatingTransformer.java index 5d032e390c..1ab2ebefee 100644 --- a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/SourceCreatingTransformer.java +++ b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/SourceCreatingTransformer.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2007 the original author or authors. + * Copyright 2002-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,33 +18,34 @@ package org.springframework.integration.xml.transformer; import javax.xml.transform.Source; +import org.springframework.integration.message.GenericMessage; import org.springframework.integration.message.Message; import org.springframework.integration.transformer.MessageTransformer; import org.springframework.integration.xml.source.DomSourceFactory; import org.springframework.integration.xml.source.SourceFactory; /** - * Transforms the payload to a {@link Source} using a {@link SourceFactory} - * Default to using a {@link DomSourceFactory} if alternative is not provided + * Transforms the payload to a {@link Source} using a {@link SourceFactory}. + * Defaults to using a {@link DomSourceFactory} if alternative is not provided. * * @author Jonas Partner - * */ public class SourceCreatingTransformer implements MessageTransformer { private final SourceFactory sourceFactory; + public SourceCreatingTransformer() { - sourceFactory = new DomSourceFactory(); + this.sourceFactory = new DomSourceFactory(); } public SourceCreatingTransformer(SourceFactory sourceFactory) { this.sourceFactory = sourceFactory; } - @SuppressWarnings("unchecked") - public void transform(Message message) { - message.setPayload(sourceFactory.getSourceForMessage(message)); + public Message transform(Message message) { + Source source = this.sourceFactory.getSourceForMessage(message); + return new GenericMessage(source, message.getHeader()); } } diff --git a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/XmlPayloadMarshallingTransformer.java b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/XmlPayloadMarshallingTransformer.java index b4835d1ec5..99941cfd21 100644 --- a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/XmlPayloadMarshallingTransformer.java +++ b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/XmlPayloadMarshallingTransformer.java @@ -20,17 +20,19 @@ import java.io.IOException; import javax.xml.transform.Result; +import org.springframework.oxm.Marshaller; +import org.springframework.util.Assert; + +import org.springframework.integration.message.GenericMessage; import org.springframework.integration.message.Message; import org.springframework.integration.message.MessageHandlingException; import org.springframework.integration.transformer.MessageTransformer; import org.springframework.integration.xml.result.DomResultFactory; import org.springframework.integration.xml.result.ResultFactory; -import org.springframework.oxm.Marshaller; -import org.springframework.util.Assert; /** * An implementation of {@link MessageTransformer} that delegates to an OXM - * {@link Marshaller} + * {@link Marshaller}. * * @author Mark Fisher * @author Jonas Partner @@ -41,18 +43,20 @@ public class XmlPayloadMarshallingTransformer implements MessageTransformer { private ResultFactory resultFactory = new DomResultFactory(); + public XmlPayloadMarshallingTransformer(Marshaller marshaller) { - Assert.notNull(marshaller, " a marshaller is required"); + Assert.notNull(marshaller, "a marshaller is required"); this.marshaller = marshaller; } + public void setResultFactory(ResultFactory resultFactory) { - Assert.notNull(resultFactory, " the ResultFactory can not be null"); + Assert.notNull(resultFactory, "ResultFactory must not be null"); this.resultFactory = resultFactory; } @SuppressWarnings("unchecked") - public void transform(Message message) { + public Message transform(Message message) { Object transformedPayload = null; Object originalPayload = message.getPayload(); Result result = this.resultFactory.getNewResult(message); @@ -70,7 +74,7 @@ public class XmlPayloadMarshallingTransformer implements MessageTransformer { if (transformedPayload == null) { throw new MessageHandlingException(message, "failed to transform payload"); } - message.setPayload(transformedPayload); + return new GenericMessage(transformedPayload, message.getHeader()); } } diff --git a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/XmlPayloadUnmarshallingTransfomer.java b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/XmlPayloadUnmarshallingTransformer.java similarity index 73% rename from org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/XmlPayloadUnmarshallingTransfomer.java rename to org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/XmlPayloadUnmarshallingTransformer.java index 2a6813976f..6293a8255f 100644 --- a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/XmlPayloadUnmarshallingTransfomer.java +++ b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/XmlPayloadUnmarshallingTransformer.java @@ -20,6 +20,7 @@ import java.io.IOException; import javax.xml.transform.Source; +import org.springframework.integration.message.GenericMessage; import org.springframework.integration.message.Message; import org.springframework.integration.message.MessagingException; import org.springframework.integration.transformer.MessageTransformer; @@ -29,34 +30,36 @@ import org.springframework.oxm.Unmarshaller; /** * An implementation of {@link MessageTransformer} that delegates to an OXM - * {@link Unmarshaller} Expects the payload to be of type {@link Source} or to + * {@link Unmarshaller}. Expects the payload to be of type {@link Source} or to * have an instance of {@link SourceFactory} that can convert to a - * {@link Source} + * {@link Source}. * * @author Jonas Partner */ -public class XmlPayloadUnmarshallingTransfomer implements MessageTransformer { +public class XmlPayloadUnmarshallingTransformer implements MessageTransformer { private final Unmarshaller unmarshaller; private SourceFactory sourceFactory = new DomSourceFactory(); - public XmlPayloadUnmarshallingTransfomer(Unmarshaller unmarshaller) { + + public XmlPayloadUnmarshallingTransformer(Unmarshaller unmarshaller) { this.unmarshaller = unmarshaller; } + public void setSourceFactory(SourceFactory sourceFactory) { this.sourceFactory = sourceFactory; } @SuppressWarnings("unchecked") - public void transform(Message message) { + public Message transform(Message message) { Source source = null; if (Source.class.isAssignableFrom(message.getPayload().getClass())) { source = (Source) message.getPayload(); } - else if (sourceFactory != null) { - source = sourceFactory.getSourceForMessage(message); + else if (this.sourceFactory != null) { + source = this.sourceFactory.getSourceForMessage(message); } if (source == null) { @@ -64,14 +67,13 @@ public class XmlPayloadUnmarshallingTransfomer implements MessageTransformer { "Could not transform message, payload not assignable from javax.xml.transform.Source and no conversion possible"); } - Object unmarshalled; try { - unmarshalled = unmarshaller.unmarshal(source); + Object unmarshalled = this.unmarshaller.unmarshal(source); + return new GenericMessage(unmarshalled, message.getHeader()); } - catch (IOException ioE) { - throw new MessagingException(message, "Exception unamrshalling payload", ioE); + catch (IOException e) { + throw new MessagingException(message, "Failed to unamrshal payload", e); } - message.setPayload(unmarshalled); } } diff --git a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/XsltPayloadTransformer.java b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/XsltPayloadTransformer.java index cc374b1f9b..2271c4bb4c 100644 --- a/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/XsltPayloadTransformer.java +++ b/org.springframework.integration.xml/src/main/java/org/springframework/integration/xml/transformer/XsltPayloadTransformer.java @@ -23,7 +23,10 @@ import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamSource; +import org.w3c.dom.Document; + import org.springframework.core.io.Resource; +import org.springframework.integration.message.GenericMessage; import org.springframework.integration.message.Message; import org.springframework.integration.message.MessagingException; import org.springframework.integration.transformer.MessageTransformer; @@ -31,7 +34,6 @@ import org.springframework.integration.xml.result.DomResultFactory; import org.springframework.integration.xml.result.ResultFactory; import org.springframework.integration.xml.source.DomSourceFactory; import org.springframework.integration.xml.source.SourceFactory; -import org.w3c.dom.Document; /** * Simple XSLT transformer implementation which returns a transformed @@ -47,6 +49,7 @@ public class XsltPayloadTransformer implements MessageTransformer { private ResultFactory resultFactory = new DomResultFactory(); + public XsltPayloadTransformer(Templates templates) { this.templates = templates; } @@ -55,16 +58,15 @@ public class XsltPayloadTransformer implements MessageTransformer { this.templates = TransformerFactory.newInstance().newTemplates(new StreamSource(xslResource.getInputStream())); } + @SuppressWarnings("unchecked") - public void transform(Message message) { + public Message transform(Message message) { try { if (Source.class.isAssignableFrom(message.getPayload().getClass())) { - transformSource(message, (Source) message.getPayload()); - } - else { - Source source = sourceFactory.getSourceForMessage(message); - transformSource(message, source); + return this.transformSource(message, (Source) message.getPayload()); } + Source source = this.sourceFactory.getSourceForMessage(message); + return this.transformSource(message, source); } catch (TransformerException e) { throw new MessagingException(message, "XSLT transformation failed", e); @@ -72,10 +74,10 @@ public class XsltPayloadTransformer implements MessageTransformer { } @SuppressWarnings("unchecked") - protected void transformSource(Message message, Source source) throws TransformerException { + protected Message transformSource(Message message, Source source) throws TransformerException { Result result = resultFactory.getNewResult(message); this.templates.newTransformer().transform(source, result); - message.setPayload(result); + return new GenericMessage(result, message.getHeader()); } public void setSourceFactory(SourceFactory sourceFactory) { diff --git a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlMarshallingTransformerParserTests.java b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlMarshallingTransformerParserTests.java index 5ba59b5718..5857b40ff8 100644 --- a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlMarshallingTransformerParserTests.java +++ b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlMarshallingTransformerParserTests.java @@ -16,15 +16,18 @@ package org.springframework.integration.xml.config; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import javax.xml.transform.dom.DOMResult; import org.junit.Before; import org.junit.Test; + import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.integration.message.GenericMessage; +import org.springframework.integration.message.Message; import org.springframework.integration.transformer.MessageTransformer; import org.springframework.xml.transform.StringResult; import org.w3c.dom.Document; @@ -35,40 +38,42 @@ import org.w3c.dom.Document; * */ public class XmlMarshallingTransformerParserTests { - - ApplicationContext appContext; - + + private ApplicationContext appContext; + + @Before public void setUp(){ - appContext = new ClassPathXmlApplicationContext("XmlMarshallingTransformerParserTests-context.xml", getClass()); + this.appContext = new ClassPathXmlApplicationContext("XmlMarshallingTransformerParserTests-context.xml", getClass()); } - + + @Test - public void testDefault() throws Exception{ - MessageTransformer transformer = (MessageTransformer)appContext.getBean("marshallingTransfomerNoResultFactory"); + public void testDefault() throws Exception { + MessageTransformer transformer = (MessageTransformer) appContext.getBean("marshallingTransfomerNoResultFactory"); GenericMessage message = new GenericMessage("hello"); - transformer.transform(message); - assertTrue("Wrong payload type ", message.getPayload() instanceof DOMResult); - Document doc = (Document)((DOMResult)message.getPayload()).getNode(); + Message result = transformer.transform(message); + assertTrue("Wrong payload type", result.getPayload() instanceof DOMResult); + Document doc = (Document) ((DOMResult) result.getPayload()).getNode(); assertEquals("Wrong palyoad", "hello", doc.getDocumentElement().getTextContent()); } - + @Test - public void testDOMResult() throws Exception{ - MessageTransformer transformer = (MessageTransformer)appContext.getBean("marshallingTransfomerDOMResultFactory"); + public void testDOMResult() throws Exception { + MessageTransformer transformer = (MessageTransformer) appContext.getBean("marshallingTransfomerDOMResultFactory"); GenericMessage message = new GenericMessage("hello"); - transformer.transform(message); - assertTrue("Wrong payload type ", message.getPayload() instanceof DOMResult); - Document doc = (Document)((DOMResult)message.getPayload()).getNode(); + Message result = transformer.transform(message); + assertTrue("Wrong payload type ", result.getPayload() instanceof DOMResult); + Document doc = (Document) ((DOMResult) result.getPayload()).getNode(); assertEquals("Wrong palyoad", "hello", doc.getDocumentElement().getTextContent()); } - + @Test - public void testStringResult() throws Exception{ - MessageTransformer transformer = (MessageTransformer)appContext.getBean("marshallingTransfomerStringResultFactory"); + public void testStringResult() throws Exception { + MessageTransformer transformer = (MessageTransformer) appContext.getBean("marshallingTransfomerStringResultFactory"); GenericMessage message = new GenericMessage("hello"); - transformer.transform(message); - assertTrue("Wrong payload type ", message.getPayload() instanceof StringResult); + Message result = transformer.transform(message); + assertTrue("Wrong payload type", result.getPayload() instanceof StringResult); } } diff --git a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlUnmarshallingTransformerParserTests.java b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlUnmarshallingTransformerParserTests.java index 24d378682c..774aa974f8 100644 --- a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlUnmarshallingTransformerParserTests.java +++ b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XmlUnmarshallingTransformerParserTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2007 the original author or authors. + * Copyright 2002-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,24 +16,25 @@ package org.springframework.integration.xml.config; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import javax.xml.transform.dom.DOMSource; import org.junit.Before; import org.junit.Test; + import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.integration.message.GenericMessage; +import org.springframework.integration.message.Message; import org.springframework.integration.message.MessagingException; import org.springframework.integration.transformer.MessageTransformer; import org.springframework.integration.xml.util.XmlTestUtil; import org.springframework.xml.transform.StringSource; /** - * * @author Jonas Partner - * */ public class XmlUnmarshallingTransformerParserTests { @@ -41,6 +42,7 @@ public class XmlUnmarshallingTransformerParserTests { StubUnmarshaller unmarshaller; + @Before public void setUp() { appContext = new ClassPathXmlApplicationContext("XmlUnmarshallingTransformerParserTests-context.xml", @@ -48,13 +50,14 @@ public class XmlUnmarshallingTransformerParserTests { unmarshaller = (StubUnmarshaller) appContext.getBean("unmarshaller"); } + @Test public void testDefaultUnmarshall() throws Exception { MessageTransformer transformer = (MessageTransformer) appContext.getBean("defaultUnmarshaller"); GenericMessage message = new GenericMessage(new StringSource( "test")); - transformer.transform(message); - assertEquals("Wrong payload after unmarshalling ", "unmarshalled", message.getPayload()); + Message result = transformer.transform(message); + assertEquals("Wrong payload after unmarshalling", "unmarshalled", result.getPayload()); assertTrue("Wrong source passed to unmarshaller", unmarshaller.sourcesPassed.poll() instanceof StringSource); } @@ -63,8 +66,8 @@ public class XmlUnmarshallingTransformerParserTests { MessageTransformer transformer = (MessageTransformer) appContext.getBean("defaultUnmarshaller"); GenericMessage message = new GenericMessage( "test"); - transformer.transform(message); - assertEquals("Wrong payload after unmarshalling ", "unmarshalled", message.getPayload()); + Message result = transformer.transform(message); + assertEquals("Wrong payload after unmarshalling", "unmarshalled", result.getPayload()); assertTrue("Wrong source passed to unmarshaller", unmarshaller.sourcesPassed.poll() instanceof DOMSource); } @@ -74,8 +77,8 @@ public class XmlUnmarshallingTransformerParserTests { GenericMessage message = new GenericMessage( XmlTestUtil .getDocumentForString("test")); - transformer.transform(message); - assertEquals("Wrong payload after unmarshalling ", "unmarshalled", message.getPayload()); + Message result = transformer.transform(message); + assertEquals("Wrong payload after unmarshalling", "unmarshalled", result.getPayload()); assertTrue("Wrong source passed to unmarshaller", unmarshaller.sourcesPassed.poll() instanceof DOMSource); } diff --git a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XsltPayloadTransformerParserTests.java b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XsltPayloadTransformerParserTests.java index 5f6f53231e..1aa32adac5 100644 --- a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XsltPayloadTransformerParserTests.java +++ b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/config/XsltPayloadTransformerParserTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2007 the original author or authors. + * Copyright 2002-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,39 +16,48 @@ package org.springframework.integration.xml.config; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import javax.xml.transform.dom.DOMResult; import org.junit.Before; import org.junit.Test; + +import org.w3c.dom.Document; + import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.integration.message.GenericMessage; +import org.springframework.integration.message.Message; import org.springframework.integration.transformer.MessageTransformer; import org.springframework.integration.xml.util.XmlTestUtil; -import org.w3c.dom.Document; +/** + * @author Jonas Partner + */ public class XsltPayloadTransformerParserTests { String doc = "test"; ApplicationContext applicationContext; + @Before public void setUp() { applicationContext = new ClassPathXmlApplicationContext(getClass().getSimpleName() + "-context.xml", getClass()); } + @Test public void testWithResourceProvided() throws Exception { MessageTransformer messageTransformer = (MessageTransformer) applicationContext .getBean("xsltTransfomerWithResource"); GenericMessage message = new GenericMessage(XmlTestUtil.getDomSourceForString(doc)); - messageTransformer.transform(message); - assertTrue("Payload was not a DOMResult", message.getPayload() instanceof DOMResult); - Document doc = (Document) ((DOMResult) message.getPayload()).getNode(); - assertEquals("Wrong palyoad", "test", doc.getDocumentElement().getTextContent()); + Message result = messageTransformer.transform(message); + assertTrue("Payload was not a DOMResult", result.getPayload() instanceof DOMResult); + Document doc = (Document) ((DOMResult) result.getPayload()).getNode(); + assertEquals("Wrong payload", "test", doc.getDocumentElement().getTextContent()); } @Test @@ -56,10 +65,10 @@ public class XsltPayloadTransformerParserTests { MessageTransformer messageTransformer = (MessageTransformer) applicationContext .getBean("xsltTransformerWithTemplates"); GenericMessage message = new GenericMessage(XmlTestUtil.getDomSourceForString(doc)); - messageTransformer.transform(message); - assertTrue("Payload was not a DOMResult", message.getPayload() instanceof DOMResult); - Document doc = (Document) ((DOMResult) message.getPayload()).getNode(); - assertEquals("Wrong palyoad", "test", doc.getDocumentElement().getTextContent()); + Message result = messageTransformer.transform(message); + assertTrue("Payload was not a DOMResult", result.getPayload() instanceof DOMResult); + Document doc = (Document) ((DOMResult) result.getPayload()).getNode(); + assertEquals("Wrong payload", "test", doc.getDocumentElement().getTextContent()); } } diff --git a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/ResultToDocumentTransformerTests.java b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/ResultToDocumentTransformerTests.java index dc8523c4fe..19adc96e15 100644 --- a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/ResultToDocumentTransformerTests.java +++ b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/ResultToDocumentTransformerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2007 the original author or authors. + * Copyright 2002-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,37 +16,46 @@ package org.springframework.integration.xml.transformer; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import javax.xml.transform.dom.DOMResult; import javax.xml.transform.sax.SAXResult; import org.junit.Before; import org.junit.Test; + +import org.w3c.dom.Document; + import org.springframework.integration.message.GenericMessage; +import org.springframework.integration.message.Message; import org.springframework.integration.message.MessagingException; import org.springframework.integration.xml.util.XmlTestUtil; import org.springframework.xml.transform.StringResult; -import org.w3c.dom.Document; +/** + * @author Jonas Partner + */ public class ResultToDocumentTransformerTests { String doc = "test"; ResultToDocumentTransformer resToDocTransformer; + @Before public void setUp() { resToDocTransformer = new ResultToDocumentTransformer(); } + @Test public void testWithDomResult() throws Exception { DOMResult result = XmlTestUtil.getDomResultForString(doc); GenericMessage message = new GenericMessage(result); - resToDocTransformer.transform(message); - assertTrue("Wrong payload type expected Document", message.getPayload() instanceof Document); - Document doc = (Document) message.getPayload(); + Message transformed = resToDocTransformer.transform(message); + assertTrue("Wrong payload type expected Document", transformed.getPayload() instanceof Document); + Document doc = (Document) transformed.getPayload(); assertEquals("Wrong root element name", "order", doc.getDocumentElement().getNodeName()); } @@ -54,9 +63,9 @@ public class ResultToDocumentTransformerTests { public void testWithStringResult() throws Exception { StringResult result = XmlTestUtil.getStringResultForString(doc); GenericMessage message = new GenericMessage(result); - resToDocTransformer.transform(message); - assertTrue("Wrong payload type expected Document", message.getPayload() instanceof Document); - Document doc = (Document) message.getPayload(); + Message transformed = resToDocTransformer.transform(message); + assertTrue("Wrong payload type expected Document", transformed.getPayload() instanceof Document); + Document doc = (Document) transformed.getPayload(); assertEquals("Wrong root element name", "order", doc.getDocumentElement().getNodeName()); } diff --git a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XmlPayloadMarshallingTransformerTests.java b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XmlPayloadMarshallingTransformerTests.java index abb39792c6..a3656cc653 100644 --- a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XmlPayloadMarshallingTransformerTests.java +++ b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XmlPayloadMarshallingTransformerTests.java @@ -44,9 +44,9 @@ public class XmlPayloadMarshallingTransformerTests { XmlPayloadMarshallingTransformer transformer = new XmlPayloadMarshallingTransformer(marshaller); transformer.setResultFactory(new StringResultFactory()); Message message = new StringMessage("world"); - transformer.transform(message); - assertEquals(StringResult.class, message.getPayload().getClass()); - assertEquals("hello world", message.getPayload().toString()); + Message result = transformer.transform(message); + assertEquals(StringResult.class, result.getPayload().getClass()); + assertEquals("hello world", result.getPayload().toString()); assertEquals("world", marshaller.payloads.get(0)); } @@ -55,11 +55,12 @@ public class XmlPayloadMarshallingTransformerTests { TestMarshaller marshaller = new TestMarshaller(); XmlPayloadMarshallingTransformer transformer = new XmlPayloadMarshallingTransformer(marshaller); Message message = new StringMessage("world"); - transformer.transform(message); - assertEquals(DOMResult.class, message.getPayload().getClass()); + Message result = transformer.transform(message); + assertEquals(DOMResult.class, result.getPayload().getClass()); assertEquals("world", marshaller.payloads.get(0)); } + private static class TestMarshaller implements Marshaller { List payloads = new ArrayList(); @@ -74,7 +75,6 @@ public class XmlPayloadMarshallingTransformerTests { if (result instanceof StringResult) { ((StringResult) result).getWriter().write("hello world"); } - } } diff --git a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XmlPayloadUnmarshallingTransfomerTests.java b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XmlPayloadUnmarshallingTransformerTests.java similarity index 83% rename from org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XmlPayloadUnmarshallingTransfomerTests.java rename to org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XmlPayloadUnmarshallingTransformerTests.java index c27085102d..51dcb8b9f1 100644 --- a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XmlPayloadUnmarshallingTransfomerTests.java +++ b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XmlPayloadUnmarshallingTransformerTests.java @@ -23,6 +23,7 @@ import java.io.IOException; import javax.xml.transform.Source; import org.junit.Test; + import org.springframework.integration.message.GenericMessage; import org.springframework.integration.message.Message; import org.springframework.oxm.Unmarshaller; @@ -30,22 +31,21 @@ import org.springframework.oxm.XmlMappingException; import org.springframework.xml.transform.StringSource; /** - * * @author Jonas Partner - * */ -public class XmlPayloadUnmarshallingTransfomerTests { +public class XmlPayloadUnmarshallingTransformerTests { @Test public void testStringSourceToString() { Unmarshaller unmarshaller = new TestUnmarshaller(); - XmlPayloadUnmarshallingTransfomer transformer = new XmlPayloadUnmarshallingTransfomer(unmarshaller); + XmlPayloadUnmarshallingTransformer transformer = new XmlPayloadUnmarshallingTransformer(unmarshaller); Message message = new GenericMessage(new StringSource("world")); - transformer.transform(message); - assertEquals(String.class, message.getPayload().getClass()); - assertEquals("hello world", message.getPayload().toString()); + Message transformed = transformer.transform(message); + assertEquals(String.class, transformed.getPayload().getClass()); + assertEquals("hello world", transformed.getPayload().toString()); } + private static class TestUnmarshaller implements Unmarshaller { public Object unmarshal(Source source) throws XmlMappingException, IOException { if (source instanceof StringSource) { diff --git a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XsltPayloadTransformerTest.java b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XsltPayloadTransformerTest.java index f453344f75..27a0e9f429 100644 --- a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XsltPayloadTransformerTest.java +++ b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XsltPayloadTransformerTest.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.integration.xml.transformer; import static org.junit.Assert.assertEquals; @@ -22,19 +23,20 @@ import javax.xml.transform.dom.DOMResult; import org.junit.Before; import org.junit.Test; + +import org.w3c.dom.Document; + import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.Resource; import org.springframework.integration.message.GenericMessage; +import org.springframework.integration.message.Message; import org.springframework.integration.message.MessagingException; import org.springframework.integration.message.StringMessage; import org.springframework.integration.xml.util.XmlTestUtil; import org.springframework.xml.transform.StringSource; -import org.w3c.dom.Document; /** - * * @author Jonas Partner - * */ public class XsltPayloadTransformerTest { @@ -57,8 +59,8 @@ public class XsltPayloadTransformerTest { @Test public void testSourceAsPayload() throws Exception { GenericMessage message = new GenericMessage(new StringSource(doc)); - transformer.transform(message); - DOMResult result = (DOMResult) message.getPayload(); + Message transformed = transformer.transform(message); + DOMResult result = (DOMResult) transformed.getPayload(); String rootNodeName = ((Document) result.getNode()).getDocumentElement().getNodeName(); assertEquals("Wrong name for root element after transform", "bob", rootNodeName); } @@ -66,8 +68,8 @@ public class XsltPayloadTransformerTest { @Test public void testStringAsPayload() throws Exception { GenericMessage message = new GenericMessage(doc); - transformer.transform(message); - DOMResult result = (DOMResult) message.getPayload(); + Message transformed = transformer.transform(message); + DOMResult result = (DOMResult) transformed.getPayload(); String rootNodeName = ((Document) result.getNode()).getDocumentElement().getNodeName(); assertEquals("Wrong name for root element after transform", "bob", rootNodeName); } @@ -82,7 +84,8 @@ public class XsltPayloadTransformerTest { transformer.transform(new GenericMessage(new Long(12))); } - public Resource getXslResource() throws Exception { + + private Resource getXslResource() throws Exception { String xsl = "test"; return new ByteArrayResource(xsl.getBytes("UTF-8")); } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/bus/DefaultErrorChannel.java b/org.springframework.integration/src/main/java/org/springframework/integration/bus/DefaultErrorChannel.java index 04d105c190..7c64081764 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/bus/DefaultErrorChannel.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/bus/DefaultErrorChannel.java @@ -54,7 +54,7 @@ public class DefaultErrorChannel extends RendezvousChannel { * Even if the error channel has no subscribers, errors are at least visible at debug level. */ @Override - public boolean preSend(Message message, MessageChannel channel) { + public Message preSend(Message message, MessageChannel channel) { if (logger.isDebugEnabled()) { String errorMessage = "Error Received. Message: " + message.toString(); Object payload = message.getPayload(); @@ -65,7 +65,7 @@ public class DefaultErrorChannel extends RendezvousChannel { logger.debug(errorMessage); } } - return true; + return message; } } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/channel/AbstractMessageChannel.java b/org.springframework.integration/src/main/java/org/springframework/integration/channel/AbstractMessageChannel.java index fbfb0f9cc0..f4d4e6876a 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/channel/AbstractMessageChannel.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/channel/AbstractMessageChannel.java @@ -110,7 +110,8 @@ public abstract class AbstractMessageChannel implements MessageChannel, BeanName * time or the sending thread is interrupted. */ public final boolean send(Message message, long timeout) { - if (!this.interceptors.preSend(message, this)) { + message = this.interceptors.preSend(message, this); + if (message == null) { return false; } boolean sent = this.doSend(message, timeout); @@ -147,7 +148,7 @@ public abstract class AbstractMessageChannel implements MessageChannel, BeanName return null; } Message message = this.doReceive(timeout); - this.interceptors.postReceive(message, this); + message = this.interceptors.postReceive(message, this); return message; } @@ -194,16 +195,17 @@ public abstract class AbstractMessageChannel implements MessageChannel, BeanName return this.interceptors.add(interceptor); } - public boolean preSend(Message message, MessageChannel channel) { + public Message preSend(Message message, MessageChannel channel) { if (logger.isDebugEnabled()) { logger.debug("preSend on channel '" + channel + "', message: " + message); } for (ChannelInterceptor interceptor : interceptors) { - if (!interceptor.preSend(message, channel)) { - return false; + message = interceptor.preSend(message, channel); + if (message == null) { + return null; } } - return true; + return message; } public void postSend(Message message, MessageChannel channel, boolean sent) { @@ -227,7 +229,7 @@ public abstract class AbstractMessageChannel implements MessageChannel, BeanName return true; } - public void postReceive(Message message, MessageChannel channel) { + public Message postReceive(Message message, MessageChannel channel) { if (message != null && logger.isDebugEnabled()) { logger.debug("postReceive on channel '" + channel + "', message: " + message); } @@ -235,8 +237,12 @@ public abstract class AbstractMessageChannel implements MessageChannel, BeanName logger.trace("postReceive on channel '" + channel + "', message is null"); } for (ChannelInterceptor interceptor : interceptors) { - interceptor.postReceive(message, channel); + message = interceptor.postReceive(message, channel); + if (message == null) { + return null; + } } + return message; } } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/channel/ChannelInterceptor.java b/org.springframework.integration/src/main/java/org/springframework/integration/channel/ChannelInterceptor.java index 719e992108..df6291181e 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/channel/ChannelInterceptor.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/channel/ChannelInterceptor.java @@ -27,12 +27,12 @@ import org.springframework.integration.message.Message; */ public interface ChannelInterceptor { - boolean preSend(Message message, MessageChannel channel); + Message preSend(Message message, MessageChannel channel); void postSend(Message message, MessageChannel channel, boolean sent); boolean preReceive(MessageChannel channel); - void postReceive(Message message, MessageChannel channel); + Message postReceive(Message message, MessageChannel channel); } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/ChannelInterceptorAdapter.java b/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/ChannelInterceptorAdapter.java index b5eb17fffd..830cd442b9 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/ChannelInterceptorAdapter.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/ChannelInterceptorAdapter.java @@ -28,8 +28,8 @@ import org.springframework.integration.message.Message; */ public class ChannelInterceptorAdapter implements ChannelInterceptor { - public boolean preSend(Message message, MessageChannel channel) { - return true; + public Message preSend(Message message, MessageChannel channel) { + return message; } public void postSend(Message message, MessageChannel channel, boolean sent) { @@ -39,7 +39,8 @@ public class ChannelInterceptorAdapter implements ChannelInterceptor { return true; } - public void postReceive(Message message, MessageChannel channel) { + public Message postReceive(Message message, MessageChannel channel) { + return message; } } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/MessageSelectingInterceptor.java b/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/MessageSelectingInterceptor.java index 85d3953111..84e51bec23 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/MessageSelectingInterceptor.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/MessageSelectingInterceptor.java @@ -42,14 +42,14 @@ public class MessageSelectingInterceptor extends ChannelInterceptorAdapter { @Override - public boolean preSend(Message message, MessageChannel channel) { + public Message preSend(Message message, MessageChannel channel) { for (MessageSelector selector : this.selectors) { if (!selector.accept(message)) { throw new MessageDeliveryException(message, "selector '" + selector + "' did not accept message"); } } - return true; + return message; } } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/MessageStoringInterceptor.java b/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/MessageStoringInterceptor.java index f3522615ae..a66aa4643d 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/MessageStoringInterceptor.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/MessageStoringInterceptor.java @@ -54,11 +54,11 @@ public class MessageStoringInterceptor extends ChannelInterceptorAdapter { @Override - public boolean preSend(Message message, MessageChannel channel) { + public Message preSend(Message message, MessageChannel channel) { if (message != null) { this.messageStore.put(message.getId(), message); } - return true; + return message; } @Override @@ -84,10 +84,11 @@ public class MessageStoringInterceptor extends ChannelInterceptorAdapter { } @Override - public void postReceive(Message message, MessageChannel channel) { + public Message postReceive(Message message, MessageChannel channel) { if (message != null) { this.messageStore.remove(message.getId()); } + return message; } } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/WireTap.java b/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/WireTap.java index 4df0588a71..8835152b7a 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/WireTap.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/channel/interceptor/WireTap.java @@ -98,7 +98,7 @@ public class WireTap extends ChannelInterceptorAdapter implements Lifecycle { } @Override - public boolean preSend(Message message, MessageChannel channel) { + public Message preSend(Message message, MessageChannel channel) { if (this.running && this.selectorsAccept(message)) { Message duplicate = new GenericMessage(message.getPayload(), message.getHeader()); duplicate.getHeader().setAttribute(ORIGINAL_MESSAGE_ID_KEY, message.getId()); @@ -109,7 +109,7 @@ public class WireTap extends ChannelInterceptorAdapter implements Lifecycle { } } } - return true; + return message; } /** diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/message/Message.java b/org.springframework.integration/src/main/java/org/springframework/integration/message/Message.java index d8902e5172..fe916f09e0 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/message/Message.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/message/Message.java @@ -31,8 +31,6 @@ public interface Message extends Serializable { T getPayload(); - void setPayload(T payload); - boolean isExpired(); void copyHeader(MessageHeader header, boolean overwriteExistingValues); diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/transformer/AnnotationMethodTransformerAdapter.java b/org.springframework.integration/src/main/java/org/springframework/integration/transformer/AnnotationMethodTransformerAdapter.java index 53da059b3c..f0afa0a35c 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/transformer/AnnotationMethodTransformerAdapter.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/transformer/AnnotationMethodTransformerAdapter.java @@ -22,6 +22,7 @@ import java.util.Properties; import org.springframework.integration.handler.MessageHandler; import org.springframework.integration.handler.annotation.AnnotationMethodMessageMapper; import org.springframework.integration.message.DefaultMessageMapper; +import org.springframework.integration.message.GenericMessage; import org.springframework.integration.message.Message; import org.springframework.integration.message.MessageMapper; import org.springframework.integration.message.MessagingException; @@ -30,8 +31,7 @@ import org.springframework.integration.util.AbstractMethodInvokingAdapter; /** * @author Mark Fisher */ -public class AnnotationMethodTransformerAdapter extends AbstractMethodInvokingAdapter - implements MessageTransformer, MessageHandler { +public class AnnotationMethodTransformerAdapter extends AbstractMethodInvokingAdapter implements MessageHandler { private volatile MessageMapper mapper; @@ -49,12 +49,12 @@ public class AnnotationMethodTransformerAdapter extends AbstractMethodInvokingAd } @SuppressWarnings("unchecked") - public void transform(Message message) { + public Message transform(Message message) { if (!this.isInitialized()) { this.afterPropertiesSet(); } if (message.getPayload() == null) { - return; + return message; } Object param = (this.methodExpectsMessage) ? message : this.mapper.mapMessage(message); try { @@ -78,7 +78,7 @@ public class AnnotationMethodTransformerAdapter extends AbstractMethodInvokingAd if (logger.isDebugEnabled()) { logger.debug("MessageTransformer returned a null result"); } - return; + return null; } if (result instanceof Properties && !(message.getPayload() instanceof Properties)) { Properties propertiesToSet = (Properties) result; @@ -94,17 +94,17 @@ public class AnnotationMethodTransformerAdapter extends AbstractMethodInvokingAd } } else { - message.setPayload(result); + return new GenericMessage(result, message.getHeader()); } } catch (Exception e) { throw new MessagingException(message, "failed to transform message payload", e); } - } - - public Message handle(Message message) { - this.transform(message); return message; } + public Message handle(Message message) { + return this.transform(message); + } + } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/transformer/MessageTransformer.java b/org.springframework.integration/src/main/java/org/springframework/integration/transformer/MessageTransformer.java index dcfa79160d..bd0756c0d8 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/transformer/MessageTransformer.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/transformer/MessageTransformer.java @@ -25,6 +25,6 @@ import org.springframework.integration.message.Message; */ public interface MessageTransformer { - void transform(Message message); + Message transform(Message message); } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/transformer/MessageTransformerChain.java b/org.springframework.integration/src/main/java/org/springframework/integration/transformer/MessageTransformerChain.java index 5751222795..e7fb25be61 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/transformer/MessageTransformerChain.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/transformer/MessageTransformerChain.java @@ -48,10 +48,14 @@ public class MessageTransformerChain implements MessageTransformer { this.transformers.addAll(transformers); } - public void transform(Message message) { - for (MessageTransformer next : transformers) { - next.transform(message); + public Message transform(Message message) { + for (MessageTransformer next : this.transformers) { + message = next.transform(message); + if (message == null) { + return null; + } } + return message; } } 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 e93b78e306..c2c9a72cb2 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 @@ -48,18 +48,19 @@ public class MessageTransformingChannelInterceptor extends ChannelInterceptorAda } @Override - public boolean preSend(Message message, MessageChannel channel) { + public Message preSend(Message message, MessageChannel channel) { if (this.transformOnSend) { - this.transfomer.transform(message); + message = this.transfomer.transform(message); } - return true; + return message; } @Override - public void postReceive(Message message, MessageChannel channel) { + public Message postReceive(Message message, MessageChannel channel) { if (!this.transformOnSend) { - this.transfomer.transform(message); + message = this.transfomer.transform(message); } + return message; } } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/transformer/PayloadTransformerAdapter.java b/org.springframework.integration/src/main/java/org/springframework/integration/transformer/PayloadTransformerAdapter.java index 2cce0efc46..1e049af7ce 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/transformer/PayloadTransformerAdapter.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/transformer/PayloadTransformerAdapter.java @@ -16,6 +16,7 @@ package org.springframework.integration.transformer; +import org.springframework.integration.message.GenericMessage; import org.springframework.integration.message.Message; import org.springframework.integration.message.MessagingException; import org.springframework.integration.util.AbstractMethodInvokingAdapter; @@ -26,9 +27,10 @@ import org.springframework.integration.util.AbstractMethodInvokingAdapter; public class PayloadTransformerAdapter extends AbstractMethodInvokingAdapter implements MessageTransformer { @SuppressWarnings("unchecked") - public void transform(Message message) { + public Message transform(Message message) { try { - message.setPayload(this.invokeMethod(message.getPayload())); + Object result = this.invokeMethod(message.getPayload()); + return new GenericMessage(result, message.getHeader()); } catch (Exception e) { throw new MessagingException(message, "failed to transform message payload", e); } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/transformer/TransformerMessageHandlerAdapter.java b/org.springframework.integration/src/main/java/org/springframework/integration/transformer/TransformerMessageHandlerAdapter.java index f0d92daded..17bfb0c4ab 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/transformer/TransformerMessageHandlerAdapter.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/transformer/TransformerMessageHandlerAdapter.java @@ -33,8 +33,7 @@ public class TransformerMessageHandlerAdapter implements MessageHandler { public Message handle(Message message) { - this.transformer.transform(message); - return message; + return this.transformer.transform(message); } } diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/channel/factory/ChannelFactoryTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/channel/factory/ChannelFactoryTests.java index dfcd59b09c..92aa6c97bc 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/channel/factory/ChannelFactoryTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/channel/factory/ChannelFactoryTests.java @@ -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 { } - } diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/channel/interceptor/ChannelInterceptorTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/channel/interceptor/ChannelInterceptorTests.java index 16f045ed78..e1322971fe 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/channel/interceptor/ChannelInterceptorTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/channel/interceptor/ChannelInterceptorTests.java @@ -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; } } diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/config/TestChannelInterceptor.java b/org.springframework.integration/src/test/java/org/springframework/integration/config/TestChannelInterceptor.java index a4d4d5017b..830368f736 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/config/TestChannelInterceptor.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/config/TestChannelInterceptor.java @@ -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() { diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/gateway/TestChannelInterceptor.java b/org.springframework.integration/src/test/java/org/springframework/integration/gateway/TestChannelInterceptor.java index a8ac202edb..48ad50ef6f 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/gateway/TestChannelInterceptor.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/gateway/TestChannelInterceptor.java @@ -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; } } diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/transformer/AnnotationMethodTransformerAdapterTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/transformer/AnnotationMethodTransformerAdapterTests.java index 8f6e135f96..d2ed529ddd 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/transformer/AnnotationMethodTransformerAdapterTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/transformer/AnnotationMethodTransformerAdapterTests.java @@ -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(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(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 message = new GenericMessage(props); - adapter.transform(message); - assertEquals(Properties.class, message.getPayload().getClass()); - Properties payload = message.getPayload(); + Message result = (Message) 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")); } 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 14aa7a63d4..752b8f1835 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 @@ -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; } } diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/transformer/PayloadTransformerAdapterTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/transformer/PayloadTransformerAdapterTests.java index 951cb8442a..aa5d02eef5 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/transformer/PayloadTransformerAdapterTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/transformer/PayloadTransformerAdapterTests.java @@ -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(123); - adapter.transform(message); - assertEquals("123!", message.getPayload()); + Message result = adapter.transform(message); + assertEquals("123!", result.getPayload()); } @Test(expected=MessagingException.class)