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

Reply via email to