This is an automated email from the ASF dual-hosted git repository.

ffang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new a07781c  [CAMEL-12637]XmlConverter can't transform StAXSource when 
external xalan lib available
a07781c is described below

commit a07781c240fa81d500ab13b6f4a85bb7d20daf28
Author: Freeman Fang <freeman.f...@gmail.com>
AuthorDate: Wed Jul 11 16:17:39 2018 +0800

    [CAMEL-12637]XmlConverter can't transform StAXSource when external xalan 
lib available
---
 .../src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git 
a/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java 
b/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
index 907f653..fdbdaa7 100644
--- a/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
@@ -88,6 +88,7 @@ public class XmlConverter {
     public static String defaultCharset = 
ObjectHelper.getSystemProperty(Exchange.DEFAULT_CHARSET_PROPERTY, "UTF-8");
 
     private static final String JDK_FALLBACK_TRANSFORMER_FACTORY = 
"com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl";
+    private static final String XALAN_TRANSFORMER_FACTORY = 
"org.apache.xalan.processor.TransformerFactoryImpl";
     private static final Logger LOG = 
LoggerFactory.getLogger(XmlConverter.class);
 
     private volatile DocumentBuilderFactory documentBuilderFactory;
@@ -131,6 +132,11 @@ public class XmlConverter {
             throw new TransformerException("Could not create a transformer - 
JAXP is misconfigured!");
         }
         transformer.setOutputProperties(outputProperties);
+        if 
(this.transformerFactory.getClass().getName().equals(XALAN_TRANSFORMER_FACTORY) 
+                       && (source instanceof StAXSource)) {
+            //external xalan can't handle StAXSource, so convert StAXSource to 
SAXSource.
+            source = new StAX2SAXSource(((StAXSource) 
source).getXMLStreamReader());
+        }
         transformer.transform(source, result);
     }
 

Reply via email to