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 2017/08/08 12:52:48 UTC
incubator-freemarker git commit: Got rid of o.a.f.core.mode.Constants,
moved the constants to respectable TemplateModel subinterfaces.
Repository: incubator-freemarker
Updated Branches:
refs/heads/3 836de2657 -> cfd379605
Got rid of o.a.f.core.mode.Constants, moved the constants to respectable TemplateModel subinterfaces.
Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/cfd37960
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/cfd37960
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/cfd37960
Branch: refs/heads/3
Commit: cfd3796051265a43e70266dc4c4580c3617cb851
Parents: 836de26
Author: ddekany <dd...@apache.org>
Authored: Tue Aug 8 14:50:58 2017 +0200
Committer: ddekany <dd...@apache.org>
Committed: Tue Aug 8 14:50:58 2017 +0200
----------------------------------------------------------------------
...a8DefaultObjectWrapperBridgeMethodsTest.java | 6 +-
.../impl/Java8DefaultObjectWrapperTest.java | 10 +-
.../core/TemplateConfigurationTest.java | 1 -
.../impl/AbstractParallelIntrospectionTest.java | 4 +-
.../model/impl/DefaultObjectWrapperTest.java | 10 +-
.../core/model/impl/EnumModelsTest.java | 4 +-
.../core/model/impl/StaticModelsTest.java | 4 +-
.../freemarker/core/model/ConstantsTest.java | 4 +-
.../TwoNestedContentParamsDirective.java | 4 +-
.../apache/freemarker/core/ASTExpDefault.java | 5 +-
.../freemarker/core/ASTExpDynamicKeyName.java | 3 +-
.../freemarker/core/BuiltInsForSequences.java | 3 +-
.../apache/freemarker/core/_CallableUtils.java | 16 +-
.../core/model/ArgumentArrayLayout.java | 4 +-
.../apache/freemarker/core/model/Constants.java | 163 -------------------
.../core/model/EmptyCollectionExModel.java | 41 +++++
.../freemarker/core/model/EmptyHashModel.java | 55 +++++++
.../core/model/EmptyIteratorModel.java | 36 ++++
.../core/model/EmptyKeyValuePairIterator.java | 36 ++++
.../core/model/EmptySequenceModel.java | 36 ++++
.../core/model/GeneralPurposeNothing.java | 6 +-
.../core/model/TemplateCollectionModel.java | 2 +
.../core/model/TemplateHashModel.java | 4 +-
.../core/model/TemplateHashModelEx2.java | 4 +-
.../core/model/TemplateModelIterator.java | 3 +
.../core/model/TemplateNumberModel.java | 5 +
.../core/model/TemplateSequenceModel.java | 2 +
.../model/impl/OverloadedFixArgsMethods.java | 4 +-
.../model/impl/OverloadedVarArgsMethods.java | 4 +-
.../core/model/impl/SimpleMethod.java | 4 +-
30 files changed, 269 insertions(+), 214 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core-test-java8/src/test/java/org/apache/freemarker/core/model/impl/Java8DefaultObjectWrapperBridgeMethodsTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test-java8/src/test/java/org/apache/freemarker/core/model/impl/Java8DefaultObjectWrapperBridgeMethodsTest.java b/freemarker-core-test-java8/src/test/java/org/apache/freemarker/core/model/impl/Java8DefaultObjectWrapperBridgeMethodsTest.java
index 095dc37..62bb7af 100644
--- a/freemarker-core-test-java8/src/test/java/org/apache/freemarker/core/model/impl/Java8DefaultObjectWrapperBridgeMethodsTest.java
+++ b/freemarker-core-test-java8/src/test/java/org/apache/freemarker/core/model/impl/Java8DefaultObjectWrapperBridgeMethodsTest.java
@@ -23,7 +23,7 @@ import static org.junit.Assert.*;
import org.apache.freemarker.core.Configuration;
import org.apache.freemarker.core.NonTemplateCallPlace;
import org.apache.freemarker.core.TemplateException;
-import org.apache.freemarker.core.model.Constants;
+import org.apache.freemarker.core._CallableUtils;
import org.apache.freemarker.core.model.TemplateHashModel;
import org.junit.Test;
@@ -56,10 +56,10 @@ public class Java8DefaultObjectWrapperBridgeMethodsTest {
JavaMethodModel m1 = (JavaMethodModel) wrapped.get("m1");
assertEquals(
BridgeMethodsBean.M1_RETURN_VALUE,
- "" + m1.execute(Constants.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE));
+ "" + m1.execute(_CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE));
JavaMethodModel m2 = (JavaMethodModel) wrapped.get("m2");
- assertNull(m2.execute(Constants.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE));
+ assertNull(m2.execute(_CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core-test-java8/src/test/java/org/apache/freemarker/core/model/impl/Java8DefaultObjectWrapperTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test-java8/src/test/java/org/apache/freemarker/core/model/impl/Java8DefaultObjectWrapperTest.java b/freemarker-core-test-java8/src/test/java/org/apache/freemarker/core/model/impl/Java8DefaultObjectWrapperTest.java
index c2bfad5..cf628ad 100644
--- a/freemarker-core-test-java8/src/test/java/org/apache/freemarker/core/model/impl/Java8DefaultObjectWrapperTest.java
+++ b/freemarker-core-test-java8/src/test/java/org/apache/freemarker/core/model/impl/Java8DefaultObjectWrapperTest.java
@@ -23,7 +23,7 @@ import static org.junit.Assert.*;
import org.apache.freemarker.core.Configuration;
import org.apache.freemarker.core.NonTemplateCallPlace;
import org.apache.freemarker.core.TemplateException;
-import org.apache.freemarker.core.model.Constants;
+import org.apache.freemarker.core._CallableUtils;
import org.apache.freemarker.core.model.TemplateHashModel;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateNumberModel;
@@ -129,7 +129,7 @@ public class Java8DefaultObjectWrapperTest {
assertEquals(
Java8DefaultMethodsBean.NORMAL_ACTION_RETURN_VALUE,
((TemplateScalarModel) action.execute(
- Constants.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
+ _CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
.getAsString());
}
@@ -140,7 +140,7 @@ public class Java8DefaultObjectWrapperTest {
assertEquals(
Java8DefaultMethodsBean.NORMAL_ACTION_RETURN_VALUE,
((TemplateScalarModel) action.execute(
- Constants.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
+ _CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
.getAsString());
}
{
@@ -150,7 +150,7 @@ public class Java8DefaultObjectWrapperTest {
assertEquals(
Java8DefaultMethodsBean.DEFAULT_METHOD_ACTION_RETURN_VALUE,
((TemplateScalarModel) action.execute(
- Constants.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
+ _CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
.getAsString());
}
{
@@ -160,7 +160,7 @@ public class Java8DefaultObjectWrapperTest {
assertEquals(
Java8DefaultMethodsBean.OVERRIDDEN_DEFAULT_METHOD_ACTION_RETURN_VALUE,
((TemplateScalarModel) action.execute(
- Constants.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
+ _CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
.getAsString());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core-test/src/test/java/org/apache/freemarker/core/TemplateConfigurationTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/TemplateConfigurationTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/TemplateConfigurationTest.java
index 6d16893..2c85fc4 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/TemplateConfigurationTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/TemplateConfigurationTest.java
@@ -139,7 +139,6 @@ public class TemplateConfigurationTest {
NON_DEFAULT_TZ = tz;
}
-
private static final TimeZone NON_DEFAULT_SQL_TZ;
static {
TimeZone defaultTZ = DEFAULT_CFG.getSQLDateAndTimeTimeZone();
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/AbstractParallelIntrospectionTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/AbstractParallelIntrospectionTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/AbstractParallelIntrospectionTest.java
index 7d2b3fc..cbccd66 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/AbstractParallelIntrospectionTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/AbstractParallelIntrospectionTest.java
@@ -22,7 +22,7 @@ package org.apache.freemarker.core.model.impl;
import org.apache.freemarker.core.Configuration;
import org.apache.freemarker.core.NonTemplateCallPlace;
import org.apache.freemarker.core.TemplateException;
-import org.apache.freemarker.core.model.Constants;
+import org.apache.freemarker.core._CallableUtils;
import org.apache.freemarker.core.model.TemplateHashModel;
import org.apache.freemarker.core.model.TemplateModelException;
import org.apache.freemarker.core.model.TemplateNumberModel;
@@ -117,7 +117,7 @@ public abstract class AbstractParallelIntrospectionTest extends TestCase {
JavaMethodModel pv = (JavaMethodModel) h.get("m" + mIdx);
final int expected = objIdx * 1000 + mIdx;
final int got = ((TemplateNumberModel) pv.execute(
- Constants.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
+ _CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
.getAsNumber().intValue();
if (got != expected) {
throw new AssertionError("Method assertion failed; " +
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
index 9ac550c..a1dfba6 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
@@ -45,9 +45,9 @@ import org.apache.freemarker.core.NonTemplateCallPlace;
import org.apache.freemarker.core.Template;
import org.apache.freemarker.core.TemplateException;
import org.apache.freemarker.core.Version;
+import org.apache.freemarker.core._CallableUtils;
import org.apache.freemarker.core._CoreAPI;
import org.apache.freemarker.core.model.AdapterTemplateModel;
-import org.apache.freemarker.core.model.Constants;
import org.apache.freemarker.core.model.ObjectWrapper;
import org.apache.freemarker.core.model.TemplateBooleanModel;
import org.apache.freemarker.core.model.TemplateCollectionModel;
@@ -193,7 +193,7 @@ public class DefaultObjectWrapperTest {
{
// Check method calls, and also if the return value is wrapped with the overidden "wrap".
final TemplateModel mr = ((JavaMethodModel) bean.get("m")).execute(
- Constants.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE);
+ _CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE);
assertEquals(Collections.singletonList(1), ow.unwrap(mr));
assertTrue(DefaultListAdapter.class.isInstance(mr));
}
@@ -586,7 +586,7 @@ public class DefaultObjectWrapperTest {
TemplateHashModel api = (TemplateHashModel) iteratorAdapter.getAPI();
assertFalse(((TemplateBooleanModel) ((JavaMethodModel)
- api.get("hasNext")).execute(Constants.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
+ api.get("hasNext")).execute(_CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
.getAsBoolean());
}
@@ -677,7 +677,7 @@ public class DefaultObjectWrapperTest {
TemplateHashModel api = (TemplateHashModel) enumAdapter.getAPI();
assertFalse(((TemplateBooleanModel) ((JavaMethodModel) api.get("hasMoreElements"))
- .execute(Constants.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE)).getAsBoolean());
+ .execute(_CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE)).getAsBoolean());
}
@Test
@@ -734,7 +734,7 @@ public class DefaultObjectWrapperTest {
TemplateHashModel apiModel = (TemplateHashModel) ((TemplateModelWithAPISupport) normalModel).getAPI();
JavaMethodModel sizeMethod = (JavaMethodModel) apiModel.get("size");
TemplateNumberModel r = (TemplateNumberModel) sizeMethod.execute(
- Constants.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE);
+ _CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE);
assertEquals(expectedSize, r.getAsNumber().intValue());
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/EnumModelsTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/EnumModelsTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/EnumModelsTest.java
index 9336388..7dc7879 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/EnumModelsTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/EnumModelsTest.java
@@ -23,7 +23,7 @@ import static org.junit.Assert.*;
import org.apache.freemarker.core.Configuration;
import org.apache.freemarker.core.NonTemplateCallPlace;
-import org.apache.freemarker.core.model.Constants;
+import org.apache.freemarker.core._CallableUtils;
import org.apache.freemarker.core.model.TemplateHashModel;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateModelException;
@@ -59,7 +59,7 @@ public class EnumModelsTest {
assertEquals(((TemplateScalarModel) a).getAsString(), "ts:A");
JavaMethodModel nameMethod = (JavaMethodModel) ((TemplateHashModel) a).get("name");
assertEquals(((TemplateScalarModel) nameMethod.execute(
- Constants.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE)).getAsString(),
+ _CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE)).getAsString(),
"A");
assertSame(e, enums.get(E.class.getName()));
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/StaticModelsTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/StaticModelsTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/StaticModelsTest.java
index f888b2c..2487105 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/StaticModelsTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/StaticModelsTest.java
@@ -24,7 +24,7 @@ import static org.junit.Assert.*;
import org.apache.freemarker.core.Configuration;
import org.apache.freemarker.core.NonTemplateCallPlace;
-import org.apache.freemarker.core.model.Constants;
+import org.apache.freemarker.core._CallableUtils;
import org.apache.freemarker.core.model.TemplateHashModel;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateModelException;
@@ -66,7 +66,7 @@ public class StaticModelsTest {
TemplateModel m = s.get("m");
assertTrue(m instanceof JavaMethodModel);
assertEquals(((TemplateScalarModel) ((JavaMethodModel) m).execute(
- Constants.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE)).getAsString(),
+ _CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE)).getAsString(),
"m OK");
assertSame(s, statics.get(S.class.getName()));
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/org/apache/freemarker/core/model/ConstantsTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/org/apache/freemarker/core/model/ConstantsTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/org/apache/freemarker/core/model/ConstantsTest.java
index 0817bf9..032adf1 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/org/apache/freemarker/core/model/ConstantsTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/org/apache/freemarker/core/model/ConstantsTest.java
@@ -3,7 +3,7 @@ package org.apache.freemarker.core.model.impl.org.apache.freemarker.core.model;
import java.io.IOException;
import org.apache.freemarker.core.TemplateException;
-import org.apache.freemarker.core.model.Constants;
+import org.apache.freemarker.core.model.TemplateHashModel;
import org.apache.freemarker.test.TemplateTest;
import org.junit.Test;
@@ -11,7 +11,7 @@ public final class ConstantsTest extends TemplateTest {
@Test
public void testEmptyHash() throws IOException, TemplateException {
- addToDataModel("h", Constants.EMPTY_HASH);
+ addToDataModel("h", TemplateHashModel.EMPTY_HASH);
assertOutput("{<#list h as k ,v>x</#list>}", "{}");
assertOutput("{<#list h?keys as k>x</#list>}", "{}");
assertOutput("{<#list h?values as k>x</#list>}", "{}");
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TwoNestedContentParamsDirective.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TwoNestedContentParamsDirective.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TwoNestedContentParamsDirective.java
index e2d7ffb..c6bc49e 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TwoNestedContentParamsDirective.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TwoNestedContentParamsDirective.java
@@ -26,9 +26,9 @@ import org.apache.freemarker.core.Environment;
import org.apache.freemarker.core.TemplateException;
import org.apache.freemarker.core.model.ArgumentArrayLayout;
import org.apache.freemarker.core.CallPlace;
-import org.apache.freemarker.core.model.Constants;
import org.apache.freemarker.core.model.TemplateDirectiveModel;
import org.apache.freemarker.core.model.TemplateModel;
+import org.apache.freemarker.core.model.TemplateNumberModel;
import org.apache.freemarker.core.model.impl.SimpleNumber;
public class TwoNestedContentParamsDirective extends TestTemplateCallableModel implements TemplateDirectiveModel {
@@ -43,7 +43,7 @@ public class TwoNestedContentParamsDirective extends TestTemplateCallableModel i
public void execute(TemplateModel[] args, CallPlace callPlace, Writer out, Environment env)
throws TemplateException, IOException {
callPlace.executeNestedContent(
- new TemplateModel[] { Constants.ONE, new SimpleNumber(2) },
+ new TemplateModel[] { TemplateNumberModel.ONE, new SimpleNumber(2) },
out, env);
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDefault.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDefault.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDefault.java
index 35b7816..fe1e842 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDefault.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDefault.java
@@ -20,7 +20,6 @@
package org.apache.freemarker.core;
-import org.apache.freemarker.core.model.Constants;
import org.apache.freemarker.core.model.TemplateCollectionModel;
import org.apache.freemarker.core.model.TemplateHashModelEx;
import org.apache.freemarker.core.model.TemplateModel;
@@ -54,11 +53,11 @@ class ASTExpDefault extends ASTExpression {
}
@Override
public TemplateCollectionModel keys() {
- return Constants.EMPTY_COLLECTION;
+ return TemplateCollectionModel.EMPTY_COLLECTION;
}
@Override
public TemplateCollectionModel values() {
- return Constants.EMPTY_COLLECTION;
+ return TemplateCollectionModel.EMPTY_COLLECTION;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDynamicKeyName.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDynamicKeyName.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDynamicKeyName.java
index c6dae95..416019c 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDynamicKeyName.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpDynamicKeyName.java
@@ -19,7 +19,6 @@
package org.apache.freemarker.core;
-import org.apache.freemarker.core.model.Constants;
import org.apache.freemarker.core.model.TemplateHashModel;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateNumberModel;
@@ -238,7 +237,7 @@ final class ASTExpDynamicKeyName extends ASTExpression {
}
private TemplateModel emptyResult(boolean seq) {
- return seq ? Constants.EMPTY_SEQUENCE : TemplateScalarModel.EMPTY_STRING;
+ return seq ? TemplateSequenceModel.EMPTY_SEQUENCE : TemplateScalarModel.EMPTY_STRING;
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java
index d8cfc91..6757998 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java
@@ -28,7 +28,6 @@ import java.util.Date;
import org.apache.freemarker.core.arithmetic.ArithmeticEngine;
import org.apache.freemarker.core.model.ArgumentArrayLayout;
-import org.apache.freemarker.core.model.Constants;
import org.apache.freemarker.core.model.TemplateBooleanModel;
import org.apache.freemarker.core.model.TemplateCollectionModel;
import org.apache.freemarker.core.model.TemplateDateModel;
@@ -429,7 +428,7 @@ class BuiltInsForSequences {
? findInSeq(target)
: findInCol(target);
}
- return foundAtIdx == -1 ? Constants.MINUS_ONE : new SimpleNumber(foundAtIdx);
+ return foundAtIdx == -1 ? TemplateNumberModel.MINUS_ONE : new SimpleNumber(foundAtIdx);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/_CallableUtils.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/_CallableUtils.java b/freemarker-core/src/main/java/org/apache/freemarker/core/_CallableUtils.java
index 89bf91b..b1e02ab 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_CallableUtils.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_CallableUtils.java
@@ -26,7 +26,7 @@ import java.util.Collection;
import java.util.List;
import org.apache.freemarker.core.model.ArgumentArrayLayout;
-import org.apache.freemarker.core.model.Constants;
+import org.apache.freemarker.core.model.TemplateHashModel;
import org.apache.freemarker.core.model.TemplateCallableModel;
import org.apache.freemarker.core.model.TemplateDirectiveModel;
import org.apache.freemarker.core.model.TemplateFunctionModel;
@@ -45,6 +45,8 @@ import org.apache.freemarker.core.util._CollectionUtil;
// methods for this functionality (checking arguments). Need to clean this up.
public final class _CallableUtils {
+ public static final TemplateModel[] EMPTY_TEMPLATE_MODEL_ARRAY = new TemplateModel[0];
+
private _CallableUtils() {
//
}
@@ -66,18 +68,18 @@ public final class _CallableUtils {
private static TemplateModel[] getArgumentArrayWithNoArguments(ArgumentArrayLayout argsLayout) {
int totalLength = argsLayout != null ? argsLayout.getTotalLength() : 0;
if (totalLength == 0) {
- return Constants.EMPTY_TEMPLATE_MODEL_ARRAY;
+ return EMPTY_TEMPLATE_MODEL_ARRAY;
} else {
TemplateModel[] args = new TemplateModel[totalLength];
int positionalVarargsArgumentIndex = argsLayout.getPositionalVarargsArgumentIndex();
if (positionalVarargsArgumentIndex != -1) {
- args[positionalVarargsArgumentIndex] = Constants.EMPTY_SEQUENCE;
+ args[positionalVarargsArgumentIndex] = TemplateSequenceModel.EMPTY_SEQUENCE;
}
int namedVarargsArgumentIndex = argsLayout.getNamedVarargsArgumentIndex();
if (namedVarargsArgumentIndex != -1) {
- args[namedVarargsArgumentIndex] = Constants.EMPTY_SEQUENCE;
+ args[namedVarargsArgumentIndex] = TemplateSequenceModel.EMPTY_SEQUENCE;
}
return args;
@@ -197,7 +199,7 @@ public final class _CallableUtils {
execArgs[i] = positionalArg.eval(env);
}
} else {
- execArgs = Constants.EMPTY_TEMPLATE_MODEL_ARRAY;
+ execArgs = EMPTY_TEMPLATE_MODEL_ARRAY;
}
return execArgs;
}
@@ -223,7 +225,7 @@ public final class _CallableUtils {
int posVarargsLength = positionalArgs != null ? positionalArgs.length - predefPosArgCnt : 0;
TemplateSequenceModel varargsSeq;
if (posVarargsLength <= 0) {
- varargsSeq = Constants.EMPTY_SEQUENCE;
+ varargsSeq = TemplateSequenceModel.EMPTY_SEQUENCE;
} else {
NativeSequence nativeSeq = new NativeSequence(posVarargsLength);
varargsSeq = nativeSeq;
@@ -299,7 +301,7 @@ public final class _CallableUtils {
}
}
if (namedVarargsArgumentIndex != -1) {
- execArgs[namedVarargsArgumentIndex] = namedVarargsHash != null ? namedVarargsHash : Constants.EMPTY_HASH;
+ execArgs[namedVarargsArgumentIndex] = namedVarargsHash != null ? namedVarargsHash : TemplateHashModel.EMPTY_HASH;
}
return execArgs;
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/ArgumentArrayLayout.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/ArgumentArrayLayout.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/ArgumentArrayLayout.java
index cc63aaf..78e7d46 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/ArgumentArrayLayout.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/ArgumentArrayLayout.java
@@ -54,12 +54,12 @@ import org.apache.freemarker.core.util.StringToIndexMap;
* If there's a positional varargs argument, then 1 element for the positional varargs parameter (whose value
* will be a {@link TemplateSequenceModel}), at index {@link #getPositionalVarargsArgumentIndex()}. This must not
* be left {@code null} in the argument array. In case there are 0 positional varargs, the caller must set it to
- * an empty {@link TemplateSequenceModel} (like {@link Constants#EMPTY_SEQUENCE}).
+ * an empty {@link TemplateSequenceModel} (like {@link TemplateSequenceModel#EMPTY_SEQUENCE}).
* <li>
* If there's a named varargs argument, then 1 element for the positional varargs parameter (whose value will be
* a {@link TemplateHashModelEx2}), at index {@link #getNamedVarargsArgumentIndex()}. This must not be left
* {@code null} in the argument array. In case there are 0 named varargs, the caller must set it to an empty
- * {@link TemplateHashModelEx2} (like {@link Constants#EMPTY_HASH}).
+ * {@link TemplateHashModelEx2} (like {@link TemplateHashModel#EMPTY_HASH}).
* </ol>
* <p>
* The length of the argument array (allocated by the caller of {@code execute}) is {@link #getTotalLength()}}, or
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/Constants.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/Constants.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/Constants.java
deleted file mode 100644
index 5e29b6d..0000000
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/Constants.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.freemarker.core.model;
-
-import java.io.Serializable;
-import java.util.NoSuchElementException;
-
-import org.apache.freemarker.core.model.TemplateHashModelEx2.KeyValuePairIterator;
-import org.apache.freemarker.core.model.impl.SimpleNumber;
-
-/**
- * Frequently used constant {@link TemplateModel} values.
- *
- * <p>These constants should be stored in the {@link TemplateModel}
- * sub-interfaces, but for bacward compatibility they are stored here instead.
- * Starting from FreeMarker 2.4 they should be copyed (not moved!) into the
- * {@link TemplateModel} sub-interfaces, and this class should be marked as
- * deprecated.</p>
- */
-public class Constants {
-
- public static final TemplateBooleanModel TRUE = TemplateBooleanModel.TRUE;
-
- public static final TemplateBooleanModel FALSE = TemplateBooleanModel.FALSE;
-
- public static final TemplateScalarModel EMPTY_STRING = (TemplateScalarModel) TemplateScalarModel.EMPTY_STRING;
-
- public static final TemplateNumberModel ZERO = new SimpleNumber(0);
-
- public static final TemplateNumberModel ONE = new SimpleNumber(1);
-
- public static final TemplateNumberModel MINUS_ONE = new SimpleNumber(-1);
-
- public static final TemplateModelIterator EMPTY_ITERATOR = new EmptyIteratorModel();
-
- public static final TemplateModel[] EMPTY_TEMPLATE_MODEL_ARRAY = new TemplateModel[0];
-
- private static class EmptyIteratorModel implements TemplateModelIterator, Serializable {
-
- @Override
- public TemplateModel next() throws TemplateModelException {
- throw new TemplateModelException("The collection has no more elements.");
- }
-
- @Override
- public boolean hasNext() throws TemplateModelException {
- return false;
- }
-
- }
-
- public static final TemplateCollectionModelEx EMPTY_COLLECTION = new EmptyCollectionExModel();
-
- private static class EmptyCollectionExModel implements TemplateCollectionModelEx, Serializable {
-
- @Override
- public int size() throws TemplateModelException {
- return 0;
- }
-
- @Override
- public boolean isEmpty() throws TemplateModelException {
- return true;
- }
-
- @Override
- public TemplateModelIterator iterator() throws TemplateModelException {
- return EMPTY_ITERATOR;
- }
-
- }
-
- public static final TemplateSequenceModel EMPTY_SEQUENCE = new EmptySequenceModel();
-
- private static class EmptySequenceModel implements TemplateSequenceModel, Serializable {
-
- @Override
- public TemplateModel get(int index) throws TemplateModelException {
- return null;
- }
-
- @Override
- public int size() throws TemplateModelException {
- return 0;
- }
-
- }
-
- public static final TemplateHashModelEx EMPTY_HASH = new EmptyHashModel();
-
- private static class EmptyHashModel implements TemplateHashModelEx2, Serializable {
-
- @Override
- public int size() throws TemplateModelException {
- return 0;
- }
-
- @Override
- public TemplateCollectionModel keys() throws TemplateModelException {
- return EMPTY_COLLECTION;
- }
-
- @Override
- public TemplateCollectionModel values() throws TemplateModelException {
- return EMPTY_COLLECTION;
- }
-
- @Override
- public TemplateModel get(String key) throws TemplateModelException {
- return null;
- }
-
- @Override
- public boolean isEmpty() throws TemplateModelException {
- return true;
- }
-
- @Override
- public KeyValuePairIterator keyValuePairIterator() throws TemplateModelException {
- return EMPTY_KEY_VALUE_PAIR_ITERATOR;
- }
- }
-
- public static final KeyValuePairIterator EMPTY_KEY_VALUE_PAIR_ITERATOR = EmptyKeyValuePairIterator.INSTANCE;
-
- private static class EmptyKeyValuePairIterator implements TemplateHashModelEx2.KeyValuePairIterator {
-
- static final EmptyKeyValuePairIterator INSTANCE = new EmptyKeyValuePairIterator();
-
- private EmptyKeyValuePairIterator() {
- //
- }
-
- @Override
- public boolean hasNext() throws TemplateModelException {
- return false;
- }
-
- @Override
- public TemplateHashModelEx2.KeyValuePair next() throws TemplateModelException {
- throw new NoSuchElementException("Can't retrieve element from empty key-value pair iterator.");
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyCollectionExModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyCollectionExModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyCollectionExModel.java
new file mode 100644
index 0000000..06f3366
--- /dev/null
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyCollectionExModel.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.freemarker.core.model;
+
+import java.io.Serializable;
+
+class EmptyCollectionExModel implements TemplateCollectionModelEx, Serializable {
+
+ @Override
+ public int size() throws TemplateModelException {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() throws TemplateModelException {
+ return true;
+ }
+
+ @Override
+ public TemplateModelIterator iterator() throws TemplateModelException {
+ return TemplateModelIterator.EMPTY_ITERATOR;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyHashModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyHashModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyHashModel.java
new file mode 100644
index 0000000..a8aa2b7
--- /dev/null
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyHashModel.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.freemarker.core.model;
+
+import java.io.Serializable;
+
+class EmptyHashModel implements TemplateHashModelEx2, Serializable {
+
+ @Override
+ public int size() throws TemplateModelException {
+ return 0;
+ }
+
+ @Override
+ public TemplateCollectionModel keys() throws TemplateModelException {
+ return TemplateCollectionModel.EMPTY_COLLECTION;
+ }
+
+ @Override
+ public TemplateCollectionModel values() throws TemplateModelException {
+ return TemplateCollectionModel.EMPTY_COLLECTION;
+ }
+
+ @Override
+ public TemplateModel get(String key) throws TemplateModelException {
+ return null;
+ }
+
+ @Override
+ public boolean isEmpty() throws TemplateModelException {
+ return true;
+ }
+
+ @Override
+ public KeyValuePairIterator keyValuePairIterator() throws TemplateModelException {
+ return EmptyKeyValuePairIterator.EMPTY_KEY_VALUE_PAIR_ITERATOR;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyIteratorModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyIteratorModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyIteratorModel.java
new file mode 100644
index 0000000..be0f0ea
--- /dev/null
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyIteratorModel.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.freemarker.core.model;
+
+import java.io.Serializable;
+
+class EmptyIteratorModel implements TemplateModelIterator, Serializable {
+
+ @Override
+ public TemplateModel next() throws TemplateModelException {
+ throw new TemplateModelException("The collection has no more elements.");
+ }
+
+ @Override
+ public boolean hasNext() throws TemplateModelException {
+ return false;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyKeyValuePairIterator.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyKeyValuePairIterator.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyKeyValuePairIterator.java
new file mode 100644
index 0000000..37073a3
--- /dev/null
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptyKeyValuePairIterator.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.freemarker.core.model;
+
+import java.util.NoSuchElementException;
+
+class EmptyKeyValuePairIterator implements TemplateHashModelEx2.KeyValuePairIterator {
+
+ @Override
+ public boolean hasNext() throws TemplateModelException {
+ return false;
+ }
+
+ @Override
+ public TemplateHashModelEx2.KeyValuePair next() throws TemplateModelException {
+ throw new NoSuchElementException("Can't retrieve element from empty key-value pair iterator.");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptySequenceModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptySequenceModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptySequenceModel.java
new file mode 100644
index 0000000..5f352af
--- /dev/null
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/EmptySequenceModel.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.freemarker.core.model;
+
+import java.io.Serializable;
+
+class EmptySequenceModel implements TemplateSequenceModel, Serializable {
+
+ @Override
+ public TemplateModel get(int index) throws TemplateModelException {
+ return null;
+ }
+
+ @Override
+ public int size() throws TemplateModelException {
+ return 0;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/GeneralPurposeNothing.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/GeneralPurposeNothing.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/GeneralPurposeNothing.java
index ffc2ad2..285021c 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/GeneralPurposeNothing.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/GeneralPurposeNothing.java
@@ -82,17 +82,17 @@ implements TemplateBooleanModel, TemplateScalarModel, TemplateSequenceModel, Tem
@Override
public TemplateCollectionModel keys() {
- return Constants.EMPTY_COLLECTION;
+ return TemplateCollectionModel.EMPTY_COLLECTION;
}
@Override
public TemplateCollectionModel values() {
- return Constants.EMPTY_COLLECTION;
+ return TemplateCollectionModel.EMPTY_COLLECTION;
}
@Override
public KeyValuePairIterator keyValuePairIterator() throws TemplateModelException {
- return Constants.EMPTY_KEY_VALUE_PAIR_ITERATOR;
+ return EmptyKeyValuePairIterator.EMPTY_KEY_VALUE_PAIR_ITERATOR;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateCollectionModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateCollectionModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateCollectionModel.java
index e870c2f..705f82a 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateCollectionModel.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateCollectionModel.java
@@ -40,6 +40,8 @@ import java.util.Collection;
*/
public interface TemplateCollectionModel extends TemplateModel {
+ TemplateCollectionModelEx EMPTY_COLLECTION = new EmptyCollectionExModel();
+
/**
* Retrieves a template model iterator that is used to iterate over the elements in this collection.
*/
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateHashModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateHashModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateHashModel.java
index 647055a..f60ce79 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateHashModel.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateHashModel.java
@@ -26,7 +26,9 @@ package org.apache.freemarker.core.model;
* <p>In templates they are used like {@code myHash.myKey} or {@code myHash[myDynamicKey]}.
*/
public interface TemplateHashModel extends TemplateModel {
-
+
+ TemplateHashModelEx2 EMPTY_HASH = new EmptyHashModel();
+
/**
* Gets a <tt>TemplateModel</tt> from the hash.
*
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateHashModelEx2.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateHashModelEx2.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateHashModelEx2.java
index ef62f86..b3807f2 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateHashModelEx2.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateHashModelEx2.java
@@ -55,7 +55,9 @@ public interface TemplateHashModelEx2 extends TemplateHashModelEx {
* type, can throw {@link TemplateModelException}-s, and has no {@code remove()} method.
*/
interface KeyValuePairIterator {
-
+
+ TemplateHashModelEx2.KeyValuePairIterator EMPTY_KEY_VALUE_PAIR_ITERATOR = new EmptyKeyValuePairIterator();
+
/**
* Similar to {@link Iterator#hasNext()}.
*/
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateModelIterator.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateModelIterator.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateModelIterator.java
index 9d1e241..04c8de1 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateModelIterator.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateModelIterator.java
@@ -25,6 +25,8 @@ package org.apache.freemarker.core.model;
*/
public interface TemplateModelIterator {
+ TemplateModelIterator EMPTY_ITERATOR = new EmptyIteratorModel();
+
/**
* Returns the next model.
* @throws TemplateModelException if the next model can not be retrieved
@@ -36,4 +38,5 @@ public interface TemplateModelIterator {
* @return whether there are any more items to iterate over.
*/
boolean hasNext() throws TemplateModelException;
+
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateNumberModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateNumberModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateNumberModel.java
index ba1240d..c1df97f 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateNumberModel.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateNumberModel.java
@@ -20,6 +20,7 @@
package org.apache.freemarker.core.model;
import org.apache.freemarker.core.arithmetic.ArithmeticEngine;
+import org.apache.freemarker.core.model.impl.SimpleNumber;
/**
* "number" template language data type; an object that stores a number. There's only one numerical type as far as the
@@ -32,6 +33,10 @@ import org.apache.freemarker.core.arithmetic.ArithmeticEngine;
*/
public interface TemplateNumberModel extends TemplateModel {
+ TemplateNumberModel ZERO = new SimpleNumber(0);
+ TemplateNumberModel ONE = new SimpleNumber(1);
+ TemplateNumberModel MINUS_ONE = new SimpleNumber(-1);
+
/**
* Returns the numeric value. The return value must not be {@code null}.
*
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateSequenceModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateSequenceModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateSequenceModel.java
index 8ca3944..0533fcf 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateSequenceModel.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateSequenceModel.java
@@ -30,6 +30,8 @@ package org.apache.freemarker.core.model;
*/
public interface TemplateSequenceModel extends TemplateModel {
+ TemplateSequenceModel EMPTY_SEQUENCE = new EmptySequenceModel();
+
/**
* Retrieves the i-th template model in this sequence.
*
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/OverloadedFixArgsMethods.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/OverloadedFixArgsMethods.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/OverloadedFixArgsMethods.java
index 4a8b69b..2f1a506 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/OverloadedFixArgsMethods.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/OverloadedFixArgsMethods.java
@@ -18,7 +18,7 @@
*/
package org.apache.freemarker.core.model.impl;
-import org.apache.freemarker.core.model.Constants;
+import org.apache.freemarker.core._CallableUtils;
import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateModelException;
@@ -47,7 +47,7 @@ class OverloadedFixArgsMethods extends OverloadedMethodsSubset {
throws TemplateModelException {
if (tmArgs == null) {
// null is treated as empty args
- tmArgs = Constants.EMPTY_TEMPLATE_MODEL_ARRAY;
+ tmArgs = _CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY;
}
final int argCount = tmArgs.length;
final Class<?>[][] unwrappingHintsByParamCount = getUnwrappingHintsByParamCount();
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/OverloadedVarArgsMethods.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/OverloadedVarArgsMethods.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/OverloadedVarArgsMethods.java
index 8085693..8b325ed 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/OverloadedVarArgsMethods.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/OverloadedVarArgsMethods.java
@@ -20,7 +20,7 @@ package org.apache.freemarker.core.model.impl;
import java.lang.reflect.Array;
-import org.apache.freemarker.core.model.Constants;
+import org.apache.freemarker.core._CallableUtils;
import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateModelException;
@@ -139,7 +139,7 @@ class OverloadedVarArgsMethods extends OverloadedMethodsSubset {
throws TemplateModelException {
if (tmArgs == null) {
// null is treated as empty args
- tmArgs = Constants.EMPTY_TEMPLATE_MODEL_ARRAY;
+ tmArgs = _CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY;
}
final int argsLen = tmArgs.length;
final Class<?>[][] unwrappingHintsByParamCount = getUnwrappingHintsByParamCount();
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cfd37960/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleMethod.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleMethod.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleMethod.java
index 678b9ed..cebcaf8 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleMethod.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleMethod.java
@@ -21,11 +21,11 @@ package org.apache.freemarker.core.model.impl;
import java.lang.reflect.Array;
import java.lang.reflect.Member;
+import org.apache.freemarker.core._CallableUtils;
import org.apache.freemarker.core._DelayedFTLTypeDescription;
import org.apache.freemarker.core._DelayedOrdinal;
import org.apache.freemarker.core._ErrorDescriptionBuilder;
import org.apache.freemarker.core._TemplateModelException;
-import org.apache.freemarker.core.model.Constants;
import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper;
import org.apache.freemarker.core.model.TemplateMarkupOutputModel;
import org.apache.freemarker.core.model.TemplateModel;
@@ -52,7 +52,7 @@ class SimpleMethod {
Object[] unwrapArguments(TemplateModel[] args, DefaultObjectWrapper wrapper) throws TemplateModelException {
if (args == null) {
- args = Constants.EMPTY_TEMPLATE_MODEL_ARRAY;
+ args = _CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY;
}
boolean isVarArg = _MethodUtil.isVarargs(member);
int typesLen = argTypes.length;