Refactored payload and header transformers to use abstract base classes.

This commit is contained in:
Mark Fisher
2008-09-03 05:05:04 +00:00
parent b2da8c5f2a
commit 3d27d78084
20 changed files with 149 additions and 398 deletions

View File

@@ -6,30 +6,23 @@
http://www.springframework.org/schema/integration-xml http://www.springframework.org/schema/integration/spring-integration-xml-1.0.xsd">
<si-xml:marshalling-transformer
id="marshallingTransfomerNoResultFactory" marshaller="marshaller" />
id="marshallingTransformerNoResultFactory" marshaller="marshaller" />
<si-xml:marshalling-transformer
id="marshallingTransfomerStringResultFactory" marshaller="marshaller"
id="marshallingTransformerStringResultFactory" marshaller="marshaller"
result-factory="StringResult" />
<si-xml:marshalling-transformer
id="marshallingTransfomerDOMResultFactory" marshaller="marshaller"
id="marshallingTransformerDOMResultFactory" marshaller="marshaller"
result-factory="DOMResult" />
<si-xml:marshalling-transformer
id="marshallingTransfomerWithResultTransformer"
id="marshallingTransformerWithResultTransformer"
marshaller="marshaller" result-transformer="resultTransformer" />
<bean id="marshaller"
class="org.springframework.integration.xml.config.StubMarshaller" />
<bean id="marshaller" class="org.springframework.integration.xml.config.StubMarshaller" />
<bean id="resultTransformer"
class="org.springframework.integration.xml.config.StubResultTransformer">
<bean id="resultTransformer" class="org.springframework.integration.xml.config.StubResultTransformer">
<constructor-arg value="testReturn" />
</bean>

View File

@@ -28,9 +28,9 @@ import org.w3c.dom.Document;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.integration.handler.MessageHandler;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.message.Message;
import org.springframework.integration.transformer.Transformer;
import org.springframework.xml.transform.StringResult;
/**
@@ -49,9 +49,9 @@ public class XmlMarshallingTransformerParserTests {
@Test
public void testDefault() throws Exception {
MessageHandler transformer = (MessageHandler) appContext.getBean("marshallingTransfomerNoResultFactory");
Transformer transformer = (Transformer) appContext.getBean("marshallingTransformerNoResultFactory");
GenericMessage<Object> message = new GenericMessage<Object>("hello");
Message<?> result = transformer.handle(message);
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());
@@ -59,9 +59,9 @@ public class XmlMarshallingTransformerParserTests {
@Test
public void testDefaultWithResultTransformer() throws Exception {
MessageHandler transformer = (MessageHandler) appContext.getBean("marshallingTransfomerWithResultTransformer");
Transformer transformer = (Transformer) appContext.getBean("marshallingTransformerWithResultTransformer");
GenericMessage<Object> message = new GenericMessage<Object>("hello");
Message<?> result = transformer.handle(message);
Message<?> result = transformer.transform(message);
assertTrue("Wrong payload type", result.getPayload() instanceof String);
String resultPayload = (String)result.getPayload();
assertEquals("Wrong palyoad", "testReturn", resultPayload);
@@ -69,9 +69,9 @@ public class XmlMarshallingTransformerParserTests {
@Test
public void testDOMResult() throws Exception {
MessageHandler transformer = (MessageHandler) appContext.getBean("marshallingTransfomerDOMResultFactory");
Transformer transformer = (Transformer) appContext.getBean("marshallingTransformerDOMResultFactory");
GenericMessage<Object> message = new GenericMessage<Object>("hello");
Message<?> result = transformer.handle(message);
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());
@@ -79,9 +79,9 @@ public class XmlMarshallingTransformerParserTests {
@Test
public void testStringResult() throws Exception {
MessageHandler transformer = (MessageHandler) appContext.getBean("marshallingTransfomerStringResultFactory");
Transformer transformer = (Transformer) appContext.getBean("marshallingTransformerStringResultFactory");
GenericMessage<Object> message = new GenericMessage<Object>("hello");
Message<?> result = transformer.handle(message);
Message<?> result = transformer.transform(message);
assertTrue("Wrong payload type", result.getPayload() instanceof StringResult);
}

View File

@@ -26,10 +26,10 @@ import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.integration.handler.MessageHandler;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessagingException;
import org.springframework.integration.transformer.Transformer;
import org.springframework.integration.xml.util.XmlTestUtil;
import org.springframework.xml.transform.StringSource;
@@ -53,41 +53,41 @@ public class XmlUnmarshallingTransformerParserTests {
@Test
public void testDefaultUnmarshall() throws Exception {
MessageHandler transformer = (MessageHandler) appContext.getBean("defaultUnmarshaller");
Transformer transformer = (Transformer) appContext.getBean("defaultUnmarshaller");
GenericMessage<Object> message = new GenericMessage<Object>(new StringSource(
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><order><orderItem>test</orderItem></order>"));
Message<?> result = transformer.handle(message);
Message<?> result = transformer.transform(message);
assertEquals("Wrong payload after unmarshalling", "unmarshalled", result.getPayload());
assertTrue("Wrong source passed to unmarshaller", unmarshaller.sourcesPassed.poll() instanceof StringSource);
}
@Test
public void testUnmarshallString() throws Exception {
MessageHandler transformer = (MessageHandler) appContext.getBean("defaultUnmarshaller");
Transformer transformer = (Transformer) appContext.getBean("defaultUnmarshaller");
GenericMessage<Object> message = new GenericMessage<Object>(
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><order><orderItem>test</orderItem></order>");
Message<?> result = transformer.handle(message);
Message<?> result = transformer.transform(message);
assertEquals("Wrong payload after unmarshalling", "unmarshalled", result.getPayload());
assertTrue("Wrong source passed to unmarshaller", unmarshaller.sourcesPassed.poll() instanceof StringSource);
}
@Test
public void testUnmarshallDocument() throws Exception {
MessageHandler transformer = (MessageHandler) appContext.getBean("defaultUnmarshaller");
Transformer transformer = (Transformer) appContext.getBean("defaultUnmarshaller");
GenericMessage<Object> message = new GenericMessage<Object>(
XmlTestUtil
.getDocumentForString("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><order><orderItem>test</orderItem></order>"));
Message<?> result = transformer.handle(message);
Message<?> result = transformer.transform(message);
assertEquals("Wrong payload after unmarshalling", "unmarshalled", result.getPayload());
assertTrue("Wrong source passed to unmarshaller", unmarshaller.sourcesPassed.poll() instanceof DOMSource);
}
@Test(expected = MessagingException.class)
public void testUnmarshallUnsupported() throws Exception {
MessageHandler transformer = (MessageHandler) appContext.getBean("defaultUnmarshaller");
Transformer transformer = (Transformer) appContext.getBean("defaultUnmarshaller");
GenericMessage<Object> message = new GenericMessage<Object>(new StringBuffer(
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><order><orderItem>test</orderItem></order>"));
transformer.handle(message);
transformer.transform(message);
}
}

View File

@@ -28,9 +28,9 @@ import org.w3c.dom.Document;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.integration.handler.MessageHandler;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.message.Message;
import org.springframework.integration.transformer.Transformer;
import org.springframework.integration.xml.util.XmlTestUtil;
/**
@@ -51,10 +51,10 @@ public class XsltPayloadTransformerParserTests {
@Test
public void testWithResourceProvided() throws Exception {
MessageHandler messageTransformer = (MessageHandler) applicationContext
Transformer transformer = (Transformer) applicationContext
.getBean("xsltTransformerWithResource");
GenericMessage<Object> message = new GenericMessage<Object>(XmlTestUtil.getDomSourceForString(doc));
Message<?> result = messageTransformer.handle(message);
Message<?> result = transformer.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());
@@ -62,25 +62,24 @@ public class XsltPayloadTransformerParserTests {
@Test
public void testWithTemplatesProvided() throws Exception {
MessageHandler messageTransformer = (MessageHandler) applicationContext
Transformer transformer = (Transformer) applicationContext
.getBean("xsltTransformerWithTemplates");
GenericMessage<Object> message = new GenericMessage<Object>(XmlTestUtil.getDomSourceForString(doc));
Message<?> result = messageTransformer.handle(message);
Message<?> result = transformer.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
public void testWithTemplatesAndResultTransformer() throws Exception {
MessageHandler messageTransformer = (MessageHandler) applicationContext
Transformer transformer = (Transformer) applicationContext
.getBean("xsltTransformerWithTemplatesAndResultTransformer");
GenericMessage<Object> message = new GenericMessage<Object>(XmlTestUtil.getDomSourceForString(doc));
Message<?> result = messageTransformer.handle(message);
Message<?> result = transformer.transform(message);
assertEquals("Wrong payload type", String.class, result.getPayload().getClass());
String strResult = (String)result.getPayload();
assertEquals("Wrong payload", "testReturn", strResult);
}
}

View File

@@ -42,7 +42,7 @@ public class XmlPayloadMarshallingTransformerTests {
XmlPayloadMarshallingTransformer transformer = new XmlPayloadMarshallingTransformer(
marshaller);
transformer.setResultFactory(new StringResultFactory());
Object result = transformer.transform("world");
Object result = transformer.transformPayload("world");
assertEquals(StringResult.class, result.getClass());
assertEquals("hello world", result.toString());
assertEquals("world", marshaller.payloads.get(0));
@@ -53,7 +53,7 @@ public class XmlPayloadMarshallingTransformerTests {
TestMarshaller marshaller = new TestMarshaller();
XmlPayloadMarshallingTransformer transformer = new XmlPayloadMarshallingTransformer(
marshaller);
Object result = transformer.transform("world");
Object result = transformer.transformPayload("world");
assertEquals(DOMResult.class, result.getClass());
assertEquals("world", marshaller.payloads.get(0));
}

View File

@@ -37,7 +37,7 @@ public class XmlPayloadUnmarshallingTransformerTests {
public void testStringSourceToString() {
Unmarshaller unmarshaller = new TestUnmarshaller();
XmlPayloadUnmarshallingTransformer transformer = new XmlPayloadUnmarshallingTransformer(unmarshaller);
Object transformed = transformer.transform(new StringSource("world"));
Object transformed = transformer.transformPayload(new StringSource("world"));
assertEquals(String.class, transformed.getClass());
assertEquals("hello world", transformed.toString());
}

View File

@@ -51,7 +51,7 @@ public class XsltPayloadTransformerTest {
@Test
public void testDocumentAsPayload() throws Exception {
Object transformed = transformer.transform(XmlTestUtil
Object transformed = transformer.transformPayload(XmlTestUtil
.getDocumentForString(docAsString));
assertTrue("Wrong return type for document payload", Document.class
.isAssignableFrom(transformed.getClass()));
@@ -63,7 +63,7 @@ public class XsltPayloadTransformerTest {
@Test
public void testSourceAsPayload() throws Exception {
Object transformed = transformer
.transform(new StringSource(docAsString));
.transformPayload(new StringSource(docAsString));
assertEquals("Wrong return type for source payload", DOMResult.class,
transformed.getClass());
DOMResult result = (DOMResult) transformed;
@@ -74,7 +74,7 @@ public class XsltPayloadTransformerTest {
@Test
public void testStringAsPayload() throws Exception {
Object transformed = transformer.transform(docAsString);
Object transformed = transformer.transformPayload(docAsString);
assertEquals("Wrong return type for string payload", String.class,
transformed.getClass());
String transformedString = (String) transformed;
@@ -85,7 +85,7 @@ public class XsltPayloadTransformerTest {
@Test
public void testStringAsPayloadUseFactoriesTrue() throws Exception {
transformer.setAlwaysUseSourceResultFactories(true);
Object transformed = transformer.transform(docAsString);
Object transformed = transformer.transformPayload(docAsString);
assertEquals("Wrong return type for useFactories true",
DOMResult.class, transformed.getClass());
DOMResult result = (DOMResult) transformed;
@@ -99,19 +99,19 @@ public class XsltPayloadTransformerTest {
Integer returnValue = new Integer(13);
transformer = new XsltPayloadTransformer(getXslResource(), new StubResultTransformer(returnValue));
Object transformed = transformer
.transform(new StringSource(docAsString));
.transformPayload(new StringSource(docAsString));
assertEquals("Wrong value from result conversion", returnValue,
transformed);
}
@Test(expected = TransformerException.class)
public void testNonXmlString() throws Exception {
transformer.transform("test");
transformer.transformPayload("test");
}
@Test(expected = MessagingException.class)
public void testUnsupportedPayloadType() throws Exception {
transformer.transform(new Long(12));
transformer.transformPayload(new Long(12));
}
private Resource getXslResource() throws Exception {