Repository: freemarker Updated Branches: refs/heads/2.3-gae c4f84789b -> 4ce3e635c
FREEMARKER-104: In log and error messages due to no XPath implementation available, recommend adding Apache Xalan or Jaxen as dependency. Project: http://git-wip-us.apache.org/repos/asf/freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/freemarker/commit/4ce3e635 Tree: http://git-wip-us.apache.org/repos/asf/freemarker/tree/4ce3e635 Diff: http://git-wip-us.apache.org/repos/asf/freemarker/diff/4ce3e635 Branch: refs/heads/2.3-gae Commit: 4ce3e635c02ec37817a7c0dea7a7d970b682a858 Parents: c4f8478 Author: ddekany <ddek...@apache.org> Authored: Thu Sep 27 00:16:03 2018 +0200 Committer: ddekany <ddek...@apache.org> Committed: Thu Sep 27 00:16:03 2018 +0200 ---------------------------------------------------------------------- src/main/java/freemarker/ext/dom/NodeListModel.java | 4 ++-- src/main/java/freemarker/ext/dom/NodeModel.java | 13 ++++++------- src/manual/en_US/book.xml | 13 +++++++++++++ 3 files changed, 21 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/freemarker/blob/4ce3e635/src/main/java/freemarker/ext/dom/NodeListModel.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/ext/dom/NodeListModel.java b/src/main/java/freemarker/ext/dom/NodeListModel.java index 0d0c4e3..6da6566 100644 --- a/src/main/java/freemarker/ext/dom/NodeListModel.java +++ b/src/main/java/freemarker/ext/dom/NodeListModel.java @@ -173,8 +173,8 @@ class NodeListModel extends SimpleSequence implements TemplateHashModel, _Unexpe XPathSupport xps = getXPathSupport(); if (xps == null) { throw new TemplateModelException( - "Can't try to resolve the XML query key, because no XPath support is available. " - + "This is either malformed or an XPath expression: " + key); + "No XPath support is available (add Apache Xalan or Jaxen as dependency). " + + "This is either malformed, or an XPath expression: " + key); } Object context = (size == 0) ? null : rawNodeList(); return xps.executeQuery(context, key); http://git-wip-us.apache.org/repos/asf/freemarker/blob/4ce3e635/src/main/java/freemarker/ext/dom/NodeModel.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/ext/dom/NodeModel.java b/src/main/java/freemarker/ext/dom/NodeModel.java index 6d5f08f..411e0bd 100644 --- a/src/main/java/freemarker/ext/dom/NodeModel.java +++ b/src/main/java/freemarker/ext/dom/NodeModel.java @@ -107,7 +107,7 @@ implements TemplateNodeModelEx, TemplateHashModel, TemplateSequenceModel, // do nothing } if (xpathSupportClass == null && LOG.isWarnEnabled()) { - LOG.warn("No XPath support is available."); + LOG.warn("No XPath support is available. If you need it, add Apache Xalan or Jaxen as dependency."); } } @@ -334,13 +334,12 @@ implements TemplateNodeModelEx, TemplateHashModel, TemplateSequenceModel, } } else { XPathSupport xps = getXPathSupport(); - if (xps != null) { - return xps.executeQuery(node, key); - } else { + if (xps == null) { throw new TemplateModelException( - "Can't try to resolve the XML query key, because no XPath support is available. " - + "This is either malformed or an XPath expression: " + key); + "No XPath support is available (add Apache Xalan or Jaxen as dependency). " + + "This is either malformed, or an XPath expression: " + key); } + return xps.executeQuery(node, key); } } @@ -440,7 +439,7 @@ implements TemplateNodeModelEx, TemplateHashModel, TemplateSequenceModel, return other.getClass() == this.getClass() && ((NodeModel) other).node.equals(this.node); } - + static public NodeModel wrap(Node node) { if (node == null) { return null; http://git-wip-us.apache.org/repos/asf/freemarker/blob/4ce3e635/src/manual/en_US/book.xml ---------------------------------------------------------------------- diff --git a/src/manual/en_US/book.xml b/src/manual/en_US/book.xml index bf08308..1ea161b 100644 --- a/src/manual/en_US/book.xml +++ b/src/manual/en_US/book.xml @@ -27633,6 +27633,19 @@ TemplateModel x = env.getVariable("x"); // get variable x</programlisting> <itemizedlist> <listitem> + <para><link + xlink:href="https://issues.apache.org/jira/browse/FREEMARKER-104">FREEMARKER-104</link>: + More helpful log and error messages (especially, no + <literal>NullPointerException</literal> cause exception logged + during FreeMarker XPath support initialization) if no XPath + implementation is available because Java 9 modules don't allow + accessing the internal Xalan that's stored under + <literal>com.sun</literal> packages. (The messages now recommend + adding Apache Xalan or Jaxen as dependency if you need XPath + support.)</para> + </listitem> + + <listitem> <para>Added <literal>TemplateModelUtils.wrapAsHashUnion(ObjectWrapper, List<?>)</literal> and