Я нахожусь на Fuse 7.4 с Saxon-HE 9.8.0-8, использующим функцию XPath Apache Camel для оценки выражения normalize-space(in:header('myheader')) castable as xs:dateTime
.
Это ошибка с нулевым указателем на функцию net.sf.saxon.xpath.XPathExpressionImpl.evaluate(Object node, QName qname)
, поскольку один из параметров node
является нулевым.
java.lang.NullPointerException
at net.sf.saxon.xpath.XPathExpressionImpl.evaluate(XPathExpressionImpl.java:172)
at org.apache.camel.builder.xml.XPathBuilder.doInEvaluateAs(XPathBuilder.java:977)
at org.apache.camel.builder.xml.XPathBuilder.evaluateAs(XPathBuilder.java:850)
at org.apache.camel.builder.xml.XPathBuilder.matches(XPathBuilder.java:172)
Я вижу из исходного кода Saxon-HE, что до версии 9.5 метод XPathExpressionImpl.evaluate
проверяет, является ли node
нулевым, и обрабатывает ли он по-другому. Начиная с 9.6 Saxon-HE, проверка была удалена, в результате чего NPE бросается, когда node
равен null
.
Любая причина, почему это было сделано на Саксоне и есть ли какие-либо исправления или обходные пути для этого?
Один из обходных путей, который я могу придумать, - это установить фиктивное тело перед вызовом выражения xpath для Camel, но мне просто любопытно, как изменилось Saxon-HE, чтобы убрать нулевую проверку.