GeneralPurposeNothing also implements TemplateHashModelEx2
Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/889b8a96 Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/889b8a96 Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/889b8a96 Branch: refs/heads/2.3 Commit: 889b8a965a19588037a90aadf5c58d51386520ec Parents: 2aebfe5 Author: ddekany <ddek...@apache.org> Authored: Sat Aug 5 11:16:38 2017 +0200 Committer: ddekany <ddek...@apache.org> Committed: Sat Aug 5 11:16:38 2017 +0200 ---------------------------------------------------------------------- .../freemarker/template/GeneralPurposeNothing.java | 15 +++++++++------ src/manual/en_US/book.xml | 8 +++++--- 2 files changed, 14 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/889b8a96/src/main/java/freemarker/template/GeneralPurposeNothing.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/template/GeneralPurposeNothing.java b/src/main/java/freemarker/template/GeneralPurposeNothing.java index 7ba8602..8023bd8 100644 --- a/src/main/java/freemarker/template/GeneralPurposeNothing.java +++ b/src/main/java/freemarker/template/GeneralPurposeNothing.java @@ -19,9 +19,10 @@ package freemarker.template; -import java.util.ArrayList; import java.util.List; +import freemarker.template.utility.Constants; + /** * Singleton object representing nothing, used by ?if_exists built-in. * It is meant to be interpreted in the most sensible way possible in various contexts. @@ -29,11 +30,9 @@ import java.util.List; */ final class GeneralPurposeNothing -implements TemplateBooleanModel, TemplateScalarModel, TemplateSequenceModel, TemplateHashModelEx, TemplateMethodModelEx { +implements TemplateBooleanModel, TemplateScalarModel, TemplateSequenceModel, TemplateHashModelEx2, TemplateMethodModelEx { private static final TemplateModel instance = new GeneralPurposeNothing(); - - private static final TemplateCollectionModel EMPTY_COLLECTION = new SimpleCollection(new ArrayList(0)); private GeneralPurposeNothing() { } @@ -71,10 +70,14 @@ implements TemplateBooleanModel, TemplateScalarModel, TemplateSequenceModel, Tem } public TemplateCollectionModel keys() { - return EMPTY_COLLECTION; + return Constants.EMPTY_COLLECTION; } public TemplateCollectionModel values() { - return EMPTY_COLLECTION; + return Constants.EMPTY_COLLECTION; + } + + public KeyValuePairIterator keyValuePairIterator() throws TemplateModelException { + return Constants.EMPTY_KEY_VALUE_PAIR_ITERATOR; } } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/889b8a96/src/manual/en_US/book.xml ---------------------------------------------------------------------- diff --git a/src/manual/en_US/book.xml b/src/manual/en_US/book.xml index 1288f8a..6d6d6f9 100644 --- a/src/manual/en_US/book.xml +++ b/src/manual/en_US/book.xml @@ -26982,10 +26982,12 @@ TemplateModel x = env.getVariable("x"); // get variable x</programlisting> </listitem> <listitem> - <para><literal>Constants.EMPTY_HASH</literal> now implements + <para><literal>Constants.EMPTY_HASH</literal> and + <literal>GeneralPurposeNothing</literal> (the value of + <literal>missingVar!</literal>) now implements <literal>TemplateHashModelEx2</literal>, so it can be listed - with <literal><#list ... as k, v></literal>. Earlier it - was only a <literal>TemplateHashModelEx</literal>.</para> + with <literal><#list ... as k, v></literal>. Earlier they + were only a <literal>TemplateHashModelEx</literal>-s.</para> </listitem> <listitem>