Details
Description
Background:
camel-core use Woodstox to xtokenize the xml.
Woodstox has a property on WstxInputProperties.P_RETURN_NULL_FOR_DEFAULT_NAMESPACE
which has different value in different woodstox-core version.
—
Issue:
When using camel core to xtokenize xml, it will get the XML namespace prefix through javax.xml.stream.XMLStreamReader#getNamespacePrefix, which will use woodstox-core lib.
In org.apache.camel.support.XMLTokenExpressionIterator.XMLTokenIterator#createContextualToken with i mode,
It will then construct a namespace map and loop it .
In org.apache.camel.support.XMLTokenExpressionIterator line 404
sb.append(e.getKey().length() == 0 ? " xmlns" : " xmlns:")
As the e.getKey() has no null check, it might be null and resulting in NPE because of null.length()
—
Suggested Solution:
Add a null check at org.apache.camel.support.XMLTokenExpressionIterator line 404 e.getKey() to avoid NPE
i.e. sb.append((e.getKey() == null || e.getKey().length() == 0) ? " xmlns" : " xmlns:")