Hi Dan, You are right, I did some test (by running the example inside Karaf) and confirmed Xalan 2.7.1 doesn’t support StaxSource. I will keep digging the code to find a better solution for it.
Regards, -- Willem Jiang Red Hat, Inc. Web: http://www.redhat.com Blog: http://willemjiang.blogspot.com(http://willemjiang.blogspot.com/) (English) http://jnn.iteye.com(http://jnn.javaeye.com/) (Chinese) Twitter: willemjiang Weibo: 姜宁willem On January 22, 2014 at 9:21:03 PM, Daniel Kulp (dk...@apache.org) wrote: > > > 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 > > Authored: Wed Jan 22 15:57:23 2014 +0800 > > Committer: Willem Jiang > > 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 = > > + "]>&xxe;"; > > > > - 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 = "]>&xxe;"; > > > > 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("> > > 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 = > > + "]>&xxe;"; > > + > > + @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 = "]>&xxe;"; > > > > 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("> > > 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 > >