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&lt;?&gt;)</literal> and

Reply via email to