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 <[email protected]>
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);
}