You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2020/10/13 19:57:40 UTC

[freemarker] 01/02: DeepUnwrap couldn't unwrap TemplateNullModel.INSTANCE.

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

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

commit b7f137bcaaa89c399e55ede228b3cf2e54473e2b
Author: ddekany <dd...@apache.org>
AuthorDate: Tue Oct 13 20:11:22 2020 +0200

    DeepUnwrap couldn't unwrap TemplateNullModel.INSTANCE.
---
 .../apache/freemarker/core/util/DeepUnwrap.java    | 25 ++++++----------------
 1 file changed, 6 insertions(+), 19 deletions(-)

diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/DeepUnwrap.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/DeepUnwrap.java
index ab51b05..0a90ec6 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/DeepUnwrap.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/DeepUnwrap.java
@@ -24,10 +24,8 @@ import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
-import org.apache.freemarker.core.Environment;
 import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.AdapterTemplateModel;
-import org.apache.freemarker.core.model.ObjectWrapper;
 import org.apache.freemarker.core.model.TemplateBooleanModel;
 import org.apache.freemarker.core.model.TemplateDateModel;
 import org.apache.freemarker.core.model.TemplateHashModelEx;
@@ -36,6 +34,7 @@ import org.apache.freemarker.core.model.TemplateHashModelEx.KeyValuePairIterator
 import org.apache.freemarker.core.model.TemplateIterableModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateModelIterator;
+import org.apache.freemarker.core.model.TemplateNullModel;
 import org.apache.freemarker.core.model.TemplateNumberModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.apache.freemarker.core.model.TemplateStringModel;
@@ -88,25 +87,13 @@ public class DeepUnwrap {
     }
     
     private static Object unwrap(TemplateModel model, boolean permissive) throws TemplateException {
-        Environment env = Environment.getCurrentEnvironment();
-        TemplateModel nullModel = null;
-        if (env != null) {
-            ObjectWrapper wrapper = env.getObjectWrapper();
-            if (wrapper != null) {
-                nullModel = wrapper.wrap(null);
-            }
-        }
-        return unwrap(model, nullModel, permissive);
-    }
-
-    private static Object unwrap(TemplateModel model, TemplateModel nullModel, boolean permissive) throws TemplateException {
         if (model instanceof AdapterTemplateModel) {
             return ((AdapterTemplateModel) model).getAdaptedObject(Object.class);
         }
         if (model instanceof WrapperTemplateModel) {
             return ((WrapperTemplateModel) model).getWrappedObject();
         }
-        if (model == nullModel) {
+        if (model == TemplateNullModel.INSTANCE || model == null) {
             return null;
         }
         if (model instanceof TemplateStringModel) {
@@ -127,7 +114,7 @@ public class DeepUnwrap {
             ArrayList list = new ArrayList(size);
             TemplateModelIterator iter = seq.iterator();
             for (int i = 0; i < size; ++i) {
-                list.add(unwrap(iter.next(), nullModel, permissive));
+                list.add(unwrap(iter.next(), permissive));
             }
             return list;
         }
@@ -136,7 +123,7 @@ public class DeepUnwrap {
             ArrayList list = new ArrayList();
             TemplateModelIterator it = coll.iterator();            
             while (it.hasNext()) {
-                list.add(unwrap(it.next(), nullModel, permissive));
+                list.add(unwrap(it.next(), permissive));
             }
             return list;
         }
@@ -150,8 +137,8 @@ public class DeepUnwrap {
             while (kvps.hasNext()) {
                 KeyValuePair kvp = kvps.next();
                 map.put(
-                        unwrap(kvp.getKey(), nullModel, permissive),
-                        unwrap(kvp.getValue(), nullModel, permissive));
+                        unwrap(kvp.getKey(), permissive),
+                        unwrap(kvp.getValue(), permissive));
             }
             return map;
         }