This is an automated email from the ASF dual-hosted git repository. ffang pushed a commit to branch camel-2.21.x in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-2.21.x by this push: new 44a9022 [CAMEL-12637]XmlConverter can't transform StAXSource when external xalan lib available 44a9022 is described below commit 44a9022cf280898be47281e02e035946c50c169b 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 (cherry picked from commit a07781c240fa81d500ab13b6f4a85bb7d20daf28) (cherry picked from commit 829d8b6cb4935a9c4258e1c0642266cbe666c6d0) --- .../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 f827f21..f3e2773 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); }