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);
}