You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ff...@apache.org on 2018/07/11 08:17:55 UTC

[camel] branch master updated: [CAMEL-12637]XmlConverter can't transform StAXSource when external xalan lib available

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 <fr...@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);
     }