Willem, Can you try these changes with Xalan 2.7.1 on the class path? Possibly in OSGi with the Xalan 2.7.1 bundle?
I don’t think Xalan actually supports StaxSource. I believe the in-jdk transformer does, but Xalan doesn’t. It would be good to double check and then see if we can detect it and provide a work around if there is a problem. Dan On Jan 22, 2014, at 2:57 AM, ningji...@apache.org wrote: > Updated Branches: > refs/heads/master 9bedde2ca -> cc192f87b > > > CAMEL-7130 XsltBuilder uses the StaxSource by default > > > Project: http://git-wip-us.apache.org/repos/asf/camel/repo > Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/cc192f87 > Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/cc192f87 > Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/cc192f87 > > Branch: refs/heads/master > Commit: cc192f87b7c4a43c6cff0646486384c9946e2ac9 > Parents: 9bedde2 > Author: Willem Jiang <willem.ji...@gmail.com> > Authored: Wed Jan 22 15:57:23 2014 +0800 > Committer: Willem Jiang <willem.ji...@gmail.com> > Committed: Wed Jan 22 15:57:23 2014 +0800 > > ---------------------------------------------------------------------- > .../apache/camel/builder/xml/XsltBuilder.java | 3 --- > .../camel/component/xslt/XsltDTDTest.java | 20 ++++++++++++++++-- > .../camel/component/xslt/SaxonXsltDTDTest.java | 22 ++++++++++++++++++-- > 3 files changed, 38 insertions(+), 7 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/camel/blob/cc192f87/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java > ---------------------------------------------------------------------- > diff --git > a/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java > b/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java > index 3a7b9a4..d4291b2 100644 > --- a/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java > +++ b/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java > @@ -452,9 +452,6 @@ public class XsltBuilder implements Processor { > return (Source) body; > } > Source source = null; > - if (body instanceof InputStream) { > - return new StreamSource((InputStream)body); > - } > if (body != null) { > if (isAllowStAX()) { > source = > exchange.getContext().getTypeConverter().tryConvertTo(StAXSource.class, > exchange, body); > > http://git-wip-us.apache.org/repos/asf/camel/blob/cc192f87/camel-core/src/test/java/org/apache/camel/component/xslt/XsltDTDTest.java > ---------------------------------------------------------------------- > diff --git > a/camel-core/src/test/java/org/apache/camel/component/xslt/XsltDTDTest.java > b/camel-core/src/test/java/org/apache/camel/component/xslt/XsltDTDTest.java > index b66d62d..db5d63c 100644 > --- > a/camel-core/src/test/java/org/apache/camel/component/xslt/XsltDTDTest.java > +++ > b/camel-core/src/test/java/org/apache/camel/component/xslt/XsltDTDTest.java > @@ -16,6 +16,7 @@ > */ > package org.apache.camel.component.xslt; > > +import java.io.InputStream; > import java.util.List; > > import javax.xml.transform.TransformerException; > @@ -25,15 +26,28 @@ import org.apache.camel.ContextTestSupport; > import org.apache.camel.Exchange; > import org.apache.camel.builder.RouteBuilder; > import org.apache.camel.component.mock.MockEndpoint; > +import org.apache.camel.converter.IOConverter; > +import org.apache.camel.impl.DefaultExchange; > > > public class XsltDTDTest extends ContextTestSupport { > + private static final String MESSAGE = > + "<!DOCTYPE foo [<!ENTITY xxe SYSTEM > \"file:///etc//user//test\">]><task><name>&xxe;</name></task>"; > > - public void testSendEntityMessage() throws Exception { > + public void testSendingStringMessage() throws Exception { > + sendEntityMessage(MESSAGE); > + } > + > + public void testSendingInputStreamMessage() throws Exception { > + InputStream is = IOConverter.toInputStream(MESSAGE, new > DefaultExchange(context)); > + sendEntityMessage(is); > + } > + > + private void sendEntityMessage(Object message) throws Exception { > > MockEndpoint endpoint = getMockEndpoint("mock:result"); > + endpoint.reset(); > endpoint.expectedMessageCount(1); > - String message = "<!DOCTYPE foo [<!ENTITY xxe SYSTEM > \"file:///etc//user//test\">]><task><name>&xxe;</name></task>"; > > template.sendBody("direct:start1", message); > > @@ -44,6 +58,8 @@ public class XsltDTDTest extends ContextTestSupport { > String xml = exchange.getIn().getBody(String.class); > assertTrue("Get a wrong transformed message", > xml.indexOf("<transformed subject=\"\">") > 0); > > + > + > try { > template.sendBody("direct:start2", message); > fail("Expect an exception here"); > > http://git-wip-us.apache.org/repos/asf/camel/blob/cc192f87/components/camel-saxon/src/test/java/org/apache/camel/component/xslt/SaxonXsltDTDTest.java > ---------------------------------------------------------------------- > diff --git > a/components/camel-saxon/src/test/java/org/apache/camel/component/xslt/SaxonXsltDTDTest.java > > b/components/camel-saxon/src/test/java/org/apache/camel/component/xslt/SaxonXsltDTDTest.java > index 30802ff..b826608 100644 > --- > a/components/camel-saxon/src/test/java/org/apache/camel/component/xslt/SaxonXsltDTDTest.java > +++ > b/components/camel-saxon/src/test/java/org/apache/camel/component/xslt/SaxonXsltDTDTest.java > @@ -16,6 +16,7 @@ > */ > package org.apache.camel.component.xslt; > > +import java.io.InputStream; > import java.util.List; > > import javax.xml.transform.TransformerException; > @@ -24,18 +25,33 @@ import org.apache.camel.CamelExecutionException; > import org.apache.camel.Exchange; > import org.apache.camel.builder.RouteBuilder; > import org.apache.camel.component.mock.MockEndpoint; > +import org.apache.camel.converter.IOConverter; > +import org.apache.camel.impl.DefaultExchange; > import org.apache.camel.test.junit4.CamelTestSupport; > import org.junit.Test; > > > public class SaxonXsltDTDTest extends CamelTestSupport { > > + private static final String MESSAGE = > + "<!DOCTYPE foo [<!ENTITY xxe SYSTEM > \"file:///etc//user//test\">]><task><name>&xxe;</name></task>"; > + > + @Test > + public void testSendingStringMessage() throws Exception { > + sendEntityMessage(MESSAGE); > + } > + > @Test > - public void testSendEntityMessage() throws Exception { > + public void testSendingInputStreamMessage() throws Exception { > + InputStream is = IOConverter.toInputStream(MESSAGE, new > DefaultExchange(context)); > + sendEntityMessage(is); > + } > + > + private void sendEntityMessage(Object message) throws Exception { > > MockEndpoint endpoint = getMockEndpoint("mock:result"); > + endpoint.reset(); > endpoint.expectedMessageCount(1); > - String message = "<!DOCTYPE foo [<!ENTITY xxe SYSTEM > \"file:///etc//user//test\">]><task><name>&xxe;</name></task>"; > > template.sendBody("direct:start1", message); > > @@ -46,6 +62,8 @@ public class SaxonXsltDTDTest extends CamelTestSupport { > String xml = exchange.getIn().getBody(String.class); > assertTrue("Get a wrong transformed message", > xml.indexOf("<transformed subject=\"\">") > 0); > > + > + > try { > template.sendBody("direct:start2", message); > fail("Expect an exception here"); > -- Daniel Kulp dk...@apache.org - http://dankulp.com/blog Talend Community Coder - http://coders.talend.com