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:
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<String> matchAll;
|
||||
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
matchAll = new ArrayList<String>();
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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<Document>(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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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>(source, message.getHeader());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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<Result> 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<Result> 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>(result, message.getHeader());
|
||||
}
|
||||
|
||||
public void setSourceFactory(SourceFactory sourceFactory) {
|
||||
|
||||
@@ -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<Object> message = new GenericMessage<Object>("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<Object> message = new GenericMessage<Object>("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<Object> message = new GenericMessage<Object>("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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<Object> message = new GenericMessage<Object>(new StringSource(
|
||||
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><order><orderItem>test</orderItem></order>"));
|
||||
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<Object> message = new GenericMessage<Object>(
|
||||
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><order><orderItem>test</orderItem></order>");
|
||||
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<Object> message = new GenericMessage<Object>(
|
||||
XmlTestUtil
|
||||
.getDocumentForString("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><order><orderItem>test</orderItem></order>"));
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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 = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><order><orderItem>test</orderItem></order>";
|
||||
|
||||
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<Object> message = new GenericMessage<Object>(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<Object> message = new GenericMessage<Object>(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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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 = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><order><orderItem>test</orderItem></order>";
|
||||
|
||||
ResultToDocumentTransformer resToDocTransformer;
|
||||
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
resToDocTransformer = new ResultToDocumentTransformer();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testWithDomResult() throws Exception {
|
||||
DOMResult result = XmlTestUtil.getDomResultForString(doc);
|
||||
GenericMessage<Object> message = new GenericMessage<Object>(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<Object> message = new GenericMessage<Object>(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());
|
||||
}
|
||||
|
||||
|
||||
@@ -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<Object> payloads = new ArrayList<Object>();
|
||||
@@ -74,7 +75,6 @@ public class XmlPayloadMarshallingTransformerTests {
|
||||
if (result instanceof StringResult) {
|
||||
((StringResult) result).getWriter().write("hello world");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<StringSource>(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) {
|
||||
@@ -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<Source> message = new GenericMessage<Source>(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<Object> message = new GenericMessage<Object>(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<Long>(new Long(12)));
|
||||
}
|
||||
|
||||
public Resource getXslResource() throws Exception {
|
||||
|
||||
private Resource getXslResource() throws Exception {
|
||||
String xsl = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"><xsl:template match=\"order\"><bob>test</bob></xsl:template></xsl:stylesheet>";
|
||||
return new ByteArrayResource(xsl.getBytes("UTF-8"));
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<Object>(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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -31,8 +31,6 @@ public interface Message<T> extends Serializable {
|
||||
|
||||
T getPayload();
|
||||
|
||||
void setPayload(T payload);
|
||||
|
||||
boolean isExpired();
|
||||
|
||||
void copyHeader(MessageHeader header, boolean overwriteExistingValues);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -25,6 +25,6 @@ import org.springframework.integration.message.Message;
|
||||
*/
|
||||
public interface MessageTransformer {
|
||||
|
||||
void transform(Message<?> message);
|
||||
Message<?> transform(Message<?> message);
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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