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 7667e1d8cd..84af203f6a 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 @@ -31,8 +31,7 @@ import org.w3c.dom.Document; import org.springframework.core.io.Resource; import org.springframework.integration.core.Message; -import org.springframework.integration.core.MessagingException; -import org.springframework.integration.transformer.AbstractPayloadTransformer; +import org.springframework.integration.core.MessagingException; import org.springframework.integration.transformer.AbstractTransformer; import org.springframework.integration.xml.result.DomResultFactory; import org.springframework.integration.xml.result.ResultFactory; @@ -79,7 +78,7 @@ public class XsltPayloadTransformer extends AbstractTransformer { private volatile boolean alwaysUseSourceResultFactories = false; - private volatile TransformerConfigurer transformerConfigurer; + private volatile TransformerConfigurer transformerConfigurer = new DefaultTransformerConfigurer(); public XsltPayloadTransformer(Templates templates) throws ParserConfigurationException { diff --git a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XsltPayloadTransformerTests.java b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XsltPayloadTransformerTests.java index 3a08306ce6..9dd23d81f9 100644 --- a/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XsltPayloadTransformerTests.java +++ b/org.springframework.integration.xml/src/test/java/org/springframework/integration/xml/transformer/XsltPayloadTransformerTests.java @@ -26,7 +26,6 @@ import javax.xml.transform.dom.DOMResult; import org.junit.Before; import org.junit.Test; -import static org.junit.Assert.assertThat; import org.w3c.dom.Document; import org.springframework.core.io.ByteArrayResource; @@ -37,7 +36,7 @@ import org.springframework.integration.core.MessagingException; import org.springframework.integration.message.MessageBuilder; import org.springframework.integration.xml.util.XmlTestUtil; import org.springframework.xml.transform.StringSource; -import static org.hamcrest.CoreMatchers.is; + /** * @author Jonas Partner @@ -57,7 +56,8 @@ public class XsltPayloadTransformerTests { @Test public void testDocumentAsPayload() throws Exception { - Object transformed = transformer.doTransform(buildMessage(XmlTestUtil.getDocumentForString(docAsString))); + Object transformed = transformer.doTransform(buildMessage(XmlTestUtil + .getDocumentForString(docAsString))); assertTrue("Wrong return type for document payload", Document.class .isAssignableFrom(transformed.getClass())); Document transformedDocument = (Document) transformed; @@ -67,7 +67,8 @@ public class XsltPayloadTransformerTests { @Test public void testSourceAsPayload() throws Exception { - Object transformed = transformer.doTransform(buildMessage(new StringSource(docAsString))); + Object transformed = transformer + .doTransform(buildMessage(new StringSource(docAsString))); assertEquals("Wrong return type for source payload", DOMResult.class, transformed.getClass()); DOMResult result = (DOMResult) transformed; @@ -103,8 +104,8 @@ public class XsltPayloadTransformerTests { Integer returnValue = new Integer(13); transformer = new XsltPayloadTransformer(getXslResource(), new StubResultTransformer(returnValue)); - Object transformed = transformer.doTransform(buildMessage(new StringSource( - docAsString))); + Object transformed = transformer + .doTransform(buildMessage(new StringSource(docAsString))); assertEquals("Wrong value from result conversion", returnValue, transformed); } @@ -124,18 +125,36 @@ public class XsltPayloadTransformerTests { Resource resource = new ClassPathResource("transform-with-import.xsl", this.getClass()); transformer = new XsltPayloadTransformer(resource); - assertEquals(transformer.doTransform(buildMessage(docAsString)), outputAsString); + assertEquals(transformer.doTransform(buildMessage(docAsString)), + outputAsString); + } + + @Test + public void testXslWithParameters() throws Exception { + transformer = new XsltPayloadTransformer(getXslParameterResource()); + Message message = MessageBuilder.withPayload(this.docAsString).setHeader("xslt_parameter_testParam", "testParamValue").build(); + Object returnedPayload = transformer.doTransform(message); + assertEquals("Wrong payload type",String.class, returnedPayload.getClass()); + assertTrue("Param value not found in xslt output", ((String) returnedPayload).contains("testParamValue")); } - protected Message buildMessage(Object payload){ + protected Message buildMessage(Object payload) { return MessageBuilder.withPayload(payload).build(); -} - + } + private Resource getXslResource() throws Exception { String xsl = "test"; return new ByteArrayResource(xsl.getBytes("UTF-8")); } + private Resource getXslParameterResource() throws Exception { + String xsl = "" + + "" + + "test" + + ""; + return new ByteArrayResource(xsl.getBytes("UTF-8")); + } + public static class StubResultTransformer implements ResultTransformer { private Object objectToReturn;