This is an automated email from the ASF dual-hosted git repository.

ddekany pushed a commit to branch 2.3-gae
in repository https://gitbox.apache.org/repos/asf/freemarker.git

commit 2453c91097023438a176bc5814da0c956d2f8b95
Author: ddekany <[email protected]>
AuthorDate: Sat Sep 21 13:50:02 2019 +0200

    Added Environment.getDataModelOrSharedVariable
---
 src/main/java/freemarker/core/Environment.java | 26 +++++++++++++++++++-------
 src/manual/en_US/book.xml                      | 11 ++++++-----
 2 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/src/main/java/freemarker/core/Environment.java 
b/src/main/java/freemarker/core/Environment.java
index 6136583..9d7a2f6 100644
--- a/src/main/java/freemarker/core/Environment.java
+++ b/src/main/java/freemarker/core/Environment.java
@@ -2099,13 +2099,26 @@ public final class Environment extends Configurable {
      */
     public TemplateModel getGlobalVariable(String name) throws 
TemplateModelException {
         TemplateModel result = globalNamespace.get(name);
-        if (result == null) {
-            result = rootDataModel.get(name);
+        if (result != null) {
+            return result;
         }
-        if (result == null) {
-            result = configuration.getSharedVariable(name);
+
+        return getDataModelOrSharedVariable(name);
+    }
+
+    /**
+     * Returns the variable from the data-model, or if it's not there, then 
from the
+     * {@linkplain Configuration#setSharedVariables(Map)} shared variables}
+     *
+     * @since 2.3.30
+     */
+    public TemplateModel getDataModelOrSharedVariable(String name) throws 
TemplateModelException {
+        TemplateModel dataModelVal = rootDataModel.get(name);
+        if (dataModelVal != null) {
+            return dataModelVal;
         }
-        return result;
+
+        return configuration.getSharedVariable(name);
     }
 
     /**
@@ -2406,8 +2419,7 @@ public final class Environment extends Configurable {
                     }
 
                     public TemplateModel get(String key) throws 
TemplateModelException {
-                        TemplateModel value = rootDataModel.get(key);
-                        return value != null ? value : 
configuration.getSharedVariable(key);
+                        return getDataModelOrSharedVariable(key);
                     }
 
                     // NB: The methods below do not take into account
diff --git a/src/manual/en_US/book.xml b/src/manual/en_US/book.xml
index 4b4ac2b..502debc 100644
--- a/src/manual/en_US/book.xml
+++ b/src/manual/en_US/book.xml
@@ -20,11 +20,7 @@
 <book conformance="docgen" version="5.0" xml:lang="en"
       xmlns="http://docbook.org/ns/docbook";
       xmlns:xlink="http://www.w3.org/1999/xlink";
-      xmlns:xi="http://www.w3.org/2001/XInclude";
-      xmlns:ns5="http://www.w3.org/1999/xhtml";
-      xmlns:ns4="http://www.w3.org/2000/svg";
-      xmlns:ns3="http://www.w3.org/1998/Math/MathML";
-      xmlns:ns="http://docbook.org/ns/docbook";>
+>
   <info>
     <title>Apache FreeMarker Manual</title>
 
@@ -28689,6 +28685,11 @@ TemplateModel x = env.getVariable("x");  // get 
variable x</programlisting>
 
           <itemizedlist>
             <listitem>
+              <para>Added
+              
<literal>Environment.getDataModelOrSharedVariable(String)</literal>.</para>
+            </listitem>
+
+            <listitem>
               <para>Bug fixed: In <literal>&lt;#escape
               <replaceable>placeholder</replaceable> as
               <replaceable>escExpression</replaceable>&gt;</literal>, the

Reply via email to