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;
}