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/07 22:41:28 UTC
[2/8] incubator-freemarker git commit: FREEMARKER-64: TemplateModel
and TemplateModelEx changes (but they will be probably replaced by
TemplateFunctionModel later): Removed FM2 `TemplateMethodModel`,
then renamed `TemplateMethodModelEx` to `TemplateMetho
FREEMARKER-64: TemplateModel and TemplateModelEx changes (but they will be probably replaced by TemplateFunctionModel later): Removed FM2 `TemplateMethodModel`, then renamed `TemplateMethodModelEx` to `TemplateMethodModel`. Then changed it further to return `TemplateModel` (instead of `Object`, which allowed returning a non-wrapped value by design in FM2), changed the parameter `List` to `List<? extends TemplateModel>` (which it was earlier too, but there were no generic paramters back then), and allowed throwing `TemplateException` instead of the more restrictive `TemplateModelException`.
Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/1333a715
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/1333a715
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/1333a715
Branch: refs/heads/3
Commit: 1333a715f2a305391907eefd74fcb8ad7a48db5f
Parents: 3cacd9e
Author: ddekany <dd...@apache.org>
Authored: Fri Aug 4 23:04:19 2017 +0200
Committer: ddekany <dd...@apache.org>
Committed: Fri Aug 4 23:33:34 2017 +0200
----------------------------------------------------------------------
FM3-CHANGE-LOG.txt | 10 +-
...a8DefaultObjectWrapperBridgeMethodsTest.java | 23 ++-
.../impl/Java8DefaultObjectWrapperTest.java | 33 ++--
.../impl/AbstractParallelIntrospectionTest.java | 7 +-
.../model/impl/DefaultObjectWrapperTest.java | 55 ++++---
.../core/model/impl/EnumModelsTest.java | 6 +-
.../core/model/impl/ErrorMessagesTest.java | 22 +--
.../impl/FineTuneMethodAppearanceTest.java | 4 +-
.../core/model/impl/StaticModelsTest.java | 6 +-
.../core/templatesuite/models/MultiModel2.java | 17 +-
.../templatesuite/models/SimpleTestMethod.java | 13 +-
.../core/templatesuite/models/TestMethod.java | 8 +-
.../core/userpkg/AllFeaturesDirective.java | 19 ++-
.../core/userpkg/AllFeaturesFunction.java | 20 ++-
.../core/userpkg/TestTemplateCallableModel.java | 14 +-
.../templatesuite/expected/stringbimethods.txt | 2 -
.../templatesuite/templates/stringbimethods.ftl | 4 -
.../freemarker/core/ASTExpListLiteral.java | 27 +---
.../freemarker/core/ASTExpMethodCall.java | 8 +-
.../freemarker/core/BuiltInsForDates.java | 25 ++-
.../core/BuiltInsForExistenceHandling.java | 14 +-
.../core/BuiltInsForMultipleTypes.java | 32 ++--
.../BuiltInsForNestedContentParameters.java | 6 +-
.../freemarker/core/BuiltInsForNodes.java | 4 +-
.../freemarker/core/BuiltInsForSequences.java | 62 ++++----
.../core/BuiltInsForStringsBasic.java | 78 +++++-----
.../core/BuiltInsForStringsEncoding.java | 6 +-
.../freemarker/core/BuiltInsForStringsMisc.java | 22 +--
.../core/BuiltInsForStringsRegexp.java | 18 ++-
.../org/apache/freemarker/core/Environment.java | 4 +-
.../freemarker/core/NonStringException.java | 14 +-
.../apache/freemarker/core/_CallableUtils.java | 156 +++++++++++++++++++
.../core/_ObjectBuilderSettingEvaluator.java | 8 +-
.../core/_TemplateCallableModelUtils.java | 112 -------------
.../freemarker/core/debug/DebugModel.java | 1 -
.../core/debug/RmiDebugModelImpl.java | 6 +-
.../core/model/GeneralPurposeNothing.java | 4 +-
.../core/model/TemplateMethodModel.java | 41 ++---
.../core/model/TemplateMethodModelEx.java | 54 -------
.../freemarker/core/model/impl/BeanModel.java | 3 +-
.../core/model/impl/DefaultObjectWrapper.java | 8 +-
.../core/model/impl/JavaMethodModel.java | 11 +-
.../core/model/impl/OverloadedMethodsModel.java | 8 +-
.../core/model/impl/ResourceBundleModel.java | 20 +--
.../freemarker/core/model/impl/StaticModel.java | 3 +-
.../model/impl/TemplateModelListSequence.java | 4 +-
.../jsp/CustomTagAndELFunctionCombiner.java | 26 ++--
.../freemarker/servlet/jsp/TaglibFactory.java | 8 +-
.../freemarker/servlet/jsp/TLDParsingTest.java | 12 +-
49 files changed, 521 insertions(+), 547 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/FM3-CHANGE-LOG.txt
----------------------------------------------------------------------
diff --git a/FM3-CHANGE-LOG.txt b/FM3-CHANGE-LOG.txt
index aab66b7..d38866b 100644
--- a/FM3-CHANGE-LOG.txt
+++ b/FM3-CHANGE-LOG.txt
@@ -135,7 +135,10 @@ Node: Changes already mentioned above aren't repeated here!
- When parameter default expressions are evaluated, only the parameters defined earlier are already set.
So `<#macro m a b=a>` works, but `<#macro m a=b b>` won't work anymore (unless there's `b` outside the
parameter list), as `b` is not yet set when the default of `a` is calculated.
-
+- Built-ins don't convert their parameters to tring anymore; in FM some (not all) of them did, because they
+ were based on the TemplateMethod interface (deprecated even in FM2) that required String paramteters and
+ was auto-converted by FM2.
+
Java API changes
================
@@ -372,6 +375,11 @@ Core / Models and Object wrapping
get method (`get(String)`) had priority over methods of similar name. The generic get method is only recognized from its
name and parameter type, so it's a quite consfusing feature, and might will be removed alltogether.
- Renamed TemplateDateModel.DATETIME to DATE_TIME (to be consistent with "dateTime" used elsewhere).
+- TemplateModel and TemplateModelEx changes (but they will be probably replaced by TemplateFunctionModel later):
+ Removed FM2 `TemplateMethodModel`, then renamed `TemplateMethodModelEx` to `TemplateMethodModel`. Then changed it further to return
+ `TemplateModel` (instead of `Object`, which allowed returning a non-wrapped value by design in FM2), changed the parameter `List` to
+ `List<? extends TemplateModel>` (which it was earlier too, but there were no generic paramters back then), and allowed throwing
+ `TemplateException` instead of the more restrictive `TemplateModelException`.
Core / Template loading and caching
...................................
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/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 495f3f9..abb373e 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
@@ -22,31 +22,30 @@ import static org.junit.Assert.*;
import java.util.Collections;
-import org.junit.Test;
-
import org.apache.freemarker.core.Configuration;
+import org.apache.freemarker.core.TemplateException;
import org.apache.freemarker.core.model.TemplateHashModel;
-import org.apache.freemarker.core.model.TemplateMethodModelEx;
-import org.apache.freemarker.core.model.TemplateModelException;
+import org.apache.freemarker.core.model.TemplateMethodModel;
+import org.junit.Test;
public class Java8DefaultObjectWrapperBridgeMethodsTest {
@Test
- public void testWithoutDefaultMethod() throws TemplateModelException {
+ public void testWithoutDefaultMethod() throws TemplateException {
test(BridgeMethodsBean.class);
}
@Test
- public void testWithDefaultMethod() throws TemplateModelException {
+ public void testWithDefaultMethod() throws TemplateException {
test(Java8BridgeMethodsWithDefaultMethodBean.class);
}
@Test
- public void testWithDefaultMethod2() throws TemplateModelException {
+ public void testWithDefaultMethod2() throws TemplateException {
test(Java8BridgeMethodsWithDefaultMethodBean2.class);
}
- private void test(Class<?> pClass) throws TemplateModelException {
+ private void test(Class<?> pClass) throws TemplateException {
DefaultObjectWrapper ow = new DefaultObjectWrapper.Builder(Configuration.VERSION_3_0_0).build();
TemplateHashModel wrapped;
try {
@@ -55,11 +54,11 @@ public class Java8DefaultObjectWrapperBridgeMethodsTest {
throw new IllegalStateException(e);
}
- TemplateMethodModelEx m1 = (TemplateMethodModelEx) wrapped.get("m1");
- assertEquals(BridgeMethodsBean.M1_RETURN_VALUE, "" + m1.exec(Collections.emptyList()));
+ TemplateMethodModel m1 = (TemplateMethodModel) wrapped.get("m1");
+ assertEquals(BridgeMethodsBean.M1_RETURN_VALUE, "" + m1.execute(Collections.emptyList()));
- TemplateMethodModelEx m2 = (TemplateMethodModelEx) wrapped.get("m2");
- assertNull(m2.exec(Collections.emptyList()));
+ TemplateMethodModel m2 = (TemplateMethodModel) wrapped.get("m2");
+ assertNull(m2.execute(Collections.emptyList()));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/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 905d536..08dc5b1 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
@@ -22,20 +22,19 @@ import static org.junit.Assert.*;
import java.util.Collections;
-import org.junit.Test;
-
import org.apache.freemarker.core.Configuration;
+import org.apache.freemarker.core.TemplateException;
import org.apache.freemarker.core.model.TemplateHashModel;
-import org.apache.freemarker.core.model.TemplateMethodModelEx;
-import org.apache.freemarker.core.model.TemplateModelException;
+import org.apache.freemarker.core.model.TemplateMethodModel;
import org.apache.freemarker.core.model.TemplateNumberModel;
import org.apache.freemarker.core.model.TemplateScalarModel;
import org.apache.freemarker.core.model.TemplateSequenceModel;
+import org.junit.Test;
public class Java8DefaultObjectWrapperTest {
@Test
- public void testDefaultMethodRecognized() throws TemplateModelException {
+ public void testDefaultMethodRecognized() throws TemplateException {
DefaultObjectWrapper.Builder owb = new DefaultObjectWrapper.Builder(Configuration.VERSION_3_0_0);
DefaultObjectWrapper ow = owb.build();
TemplateHashModel wrappedBean = (TemplateHashModel) ow.wrap(new Java8DefaultMethodsBean());
@@ -62,11 +61,11 @@ public class Java8DefaultObjectWrapperTest {
// Has only indexed read method, so it's not exposed as a property
assertNull(wrappedBean.get(Java8DefaultMethodsBeanBase.DEFAULT_METHOD_INDEXED_PROP));
- TemplateMethodModelEx indexedReadMethod = (TemplateMethodModelEx) wrappedBean.get(
+ TemplateMethodModel indexedReadMethod = (TemplateMethodModel) wrappedBean.get(
Java8DefaultMethodsBeanBase.DEFAULT_METHOD_INDEXED_PROP_GETTER);
assertNotNull(indexedReadMethod);
assertEquals(Java8DefaultMethodsBeanBase.DEFAULT_METHOD_INDEXED_PROP_VALUE,
- ((TemplateScalarModel) indexedReadMethod.exec(Collections.singletonList(new SimpleNumber(0))))
+ ((TemplateScalarModel) indexedReadMethod.execute(Collections.singletonList(new SimpleNumber(0))))
.getAsString
());
}
@@ -115,45 +114,45 @@ public class Java8DefaultObjectWrapperTest {
// Has only indexed read method, so it's not exposed as a property
assertNull(wrappedBean.get(Java8DefaultMethodsBean.INDEXED_PROP_4));
- TemplateMethodModelEx indexedReadMethod = (TemplateMethodModelEx) wrappedBean.get(
+ TemplateMethodModel indexedReadMethod = (TemplateMethodModel) wrappedBean.get(
Java8DefaultMethodsBean.INDEXED_PROP_GETTER_4);
assertNotNull(indexedReadMethod);
assertEquals(Java8DefaultMethodsBean.INDEXED_PROP_4_VALUE,
- ((TemplateScalarModel) indexedReadMethod.exec(Collections.singletonList(new SimpleNumber(0))))
+ ((TemplateScalarModel) indexedReadMethod.execute(Collections.singletonList(new SimpleNumber(0))))
.getAsString());
}
{
- TemplateMethodModelEx action = (TemplateMethodModelEx) wrappedBean.get(
+ TemplateMethodModel action = (TemplateMethodModel) wrappedBean.get(
Java8DefaultMethodsBean.NORMAL_ACTION);
assertNotNull(action);
assertEquals(
Java8DefaultMethodsBean.NORMAL_ACTION_RETURN_VALUE,
- ((TemplateScalarModel) action.exec(Collections.emptyList())).getAsString());
+ ((TemplateScalarModel) action.execute(Collections.emptyList())).getAsString());
}
{
- TemplateMethodModelEx action = (TemplateMethodModelEx) wrappedBean.get(
+ TemplateMethodModel action = (TemplateMethodModel) wrappedBean.get(
Java8DefaultMethodsBean.NORMAL_ACTION);
assertNotNull(action);
assertEquals(
Java8DefaultMethodsBean.NORMAL_ACTION_RETURN_VALUE,
- ((TemplateScalarModel) action.exec(Collections.emptyList())).getAsString());
+ ((TemplateScalarModel) action.execute(Collections.emptyList())).getAsString());
}
{
- TemplateMethodModelEx action = (TemplateMethodModelEx) wrappedBean.get(
+ TemplateMethodModel action = (TemplateMethodModel) wrappedBean.get(
Java8DefaultMethodsBean.DEFAULT_METHOD_ACTION);
assertNotNull(action);
assertEquals(
Java8DefaultMethodsBean.DEFAULT_METHOD_ACTION_RETURN_VALUE,
- ((TemplateScalarModel) action.exec(Collections.emptyList())).getAsString());
+ ((TemplateScalarModel) action.execute(Collections.emptyList())).getAsString());
}
{
- TemplateMethodModelEx action = (TemplateMethodModelEx) wrappedBean.get(
+ TemplateMethodModel action = (TemplateMethodModel) wrappedBean.get(
Java8DefaultMethodsBean.OVERRIDDEN_DEFAULT_METHOD_ACTION);
assertNotNull(action);
assertEquals(
Java8DefaultMethodsBean.OVERRIDDEN_DEFAULT_METHOD_ACTION_RETURN_VALUE,
- ((TemplateScalarModel) action.exec(Collections.emptyList())).getAsString());
+ ((TemplateScalarModel) action.execute(Collections.emptyList())).getAsString());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/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 bdb9a56..aac56b3 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
@@ -20,6 +20,7 @@
package org.apache.freemarker.core.model.impl;
import org.apache.freemarker.core.Configuration;
+import org.apache.freemarker.core.TemplateException;
import org.apache.freemarker.core.model.TemplateHashModel;
import org.apache.freemarker.core.model.TemplateMethodModel;
import org.apache.freemarker.core.model.TemplateModelException;
@@ -111,12 +112,12 @@ public abstract class AbstractParallelIntrospectionTest extends TestCase {
}
private void testMethod(TemplateHashModel h, int objIdx, int mIdx)
- throws TemplateModelException, AssertionError {
+ throws TemplateException, AssertionError {
TemplateMethodModel pv = (TemplateMethodModel) h.get("m" + mIdx);
final int expected = objIdx * 1000 + mIdx;
- final int got = ((TemplateNumberModel) pv.exec(null)).getAsNumber().intValue();
+ final int got = ((TemplateNumberModel) pv.execute(null)).getAsNumber().intValue();
if (got != expected) {
- throw new AssertionError("Method assertation failed; " +
+ throw new AssertionError("Method assertion failed; " +
"expected " + expected + ", but got " + got);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/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 41acce3..dd1c841 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
@@ -52,7 +52,7 @@ import org.apache.freemarker.core.model.TemplateCollectionModel;
import org.apache.freemarker.core.model.TemplateCollectionModelEx;
import org.apache.freemarker.core.model.TemplateHashModel;
import org.apache.freemarker.core.model.TemplateHashModelEx;
-import org.apache.freemarker.core.model.TemplateMethodModelEx;
+import org.apache.freemarker.core.model.TemplateMethodModel;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateModelException;
import org.apache.freemarker.core.model.TemplateModelIterator;
@@ -167,7 +167,7 @@ public class DefaultObjectWrapperTest {
@Test
- public void testCustomization() throws TemplateModelException {
+ public void testCustomization() throws TemplateException {
CustomizedDefaultObjectWrapper ow = new CustomizedDefaultObjectWrapper(Configuration.VERSION_3_0_0);
assertEquals(Configuration.VERSION_3_0_0, ow.getIncompatibleImprovements());
@@ -191,16 +191,15 @@ public class DefaultObjectWrapperTest {
assertEquals(1, ow.unwrap(bean.get("x")));
{
// Check method calls, and also if the return value is wrapped with the overidden "wrap".
- final TemplateModel mr = (TemplateModel) ((TemplateMethodModelEx) bean.get("m")).exec(Collections.emptyList());
- assertEquals(
- Collections.singletonList(1),
- ow.unwrap(mr));
+ final TemplateModel mr = ((TemplateMethodModel) bean.get("m")).execute(
+ Collections.<TemplateModel>emptyList());
+ assertEquals(Collections.singletonList(1), ow.unwrap(mr));
assertTrue(DefaultListAdapter.class.isInstance(mr));
}
{
// Check custom TM usage and round trip:
- final TemplateModel mr = (TemplateModel) ((TemplateMethodModelEx) bean.get("incTupple"))
- .exec(Collections.singletonList(ow.wrap(new Tupple<>(1, 2))));
+ final TemplateModel mr = ((TemplateMethodModel) bean.get("incTupple"))
+ .execute(Collections.singletonList(ow.wrap(new Tupple<>(1, 2))));
assertEquals(new Tupple<>(2, 3), ow.unwrap(mr));
assertTrue(TuppleAdapter.class.isInstance(mr));
}
@@ -208,7 +207,7 @@ public class DefaultObjectWrapperTest {
@SuppressWarnings("boxing")
@Test
- public void testCompositeValueWrapping() throws TemplateModelException, ClassNotFoundException {
+ public void testCompositeValueWrapping() throws TemplateException, ClassNotFoundException {
DefaultObjectWrapper ow = new DefaultObjectWrapper.Builder(Configuration.VERSION_3_0_0).build();
final Map hashMap = new HashMap();
@@ -246,7 +245,7 @@ public class DefaultObjectWrapperTest {
@SuppressWarnings("boxing")
@Test
- public void testMapAdapter() throws TemplateModelException {
+ public void testMapAdapter() throws TemplateException {
HashMap<String, Object> testMap = new LinkedHashMap<>();
testMap.put("a", 1);
testMap.put("b", null);
@@ -303,7 +302,7 @@ public class DefaultObjectWrapperTest {
@SuppressWarnings("boxing")
@Test
- public void testListAdapter() throws TemplateModelException {
+ public void testListAdapter() throws TemplateException {
{
List testList = new ArrayList<>();
testList.add(1);
@@ -326,7 +325,7 @@ public class DefaultObjectWrapperTest {
}
{
- List testList = new LinkedList<>();
+ List<Object> testList = new LinkedList<>();
testList.add(1);
testList.add(null);
testList.add("c");
@@ -442,29 +441,29 @@ public class DefaultObjectWrapperTest {
private void assertRoundtrip(DefaultObjectWrapper dow, Object obj, Class expectedTMClass,
Class expectedPojoClass,
String expectedPojoToString)
- throws TemplateModelException {
+ throws TemplateException {
final TemplateModel objTM = dow.wrap(obj);
assertThat(objTM.getClass(), typeCompatibleWith(expectedTMClass));
final TemplateHashModel testBeanTM = (TemplateHashModel) dow.wrap(new RoundtripTesterBean());
{
- TemplateMethodModelEx getClassM = (TemplateMethodModelEx) testBeanTM.get("getClass");
- Object r = getClassM.exec(Collections.singletonList(objTM));
+ TemplateMethodModel getClassM = (TemplateMethodModel) testBeanTM.get("getClass");
+ TemplateModel r = getClassM.execute(Collections.singletonList(objTM));
final Class rClass = (Class) ((WrapperTemplateModel) r).getWrappedObject();
assertThat(rClass, typeCompatibleWith(expectedPojoClass));
}
if (expectedPojoToString != null) {
- TemplateMethodModelEx getToStringM = (TemplateMethodModelEx) testBeanTM.get("toString");
- Object r = getToStringM.exec(Collections.singletonList(objTM));
+ TemplateMethodModel getToStringM = (TemplateMethodModel) testBeanTM.get("toString");
+ TemplateModel r = getToStringM.execute(Collections.singletonList(objTM));
assertEquals(expectedPojoToString, ((TemplateScalarModel) r).getAsString());
}
}
@SuppressWarnings("boxing")
@Test
- public void testCollectionAdapterBasics() throws TemplateModelException {
+ public void testCollectionAdapterBasics() throws TemplateException {
{
Set set = new TreeSet();
set.add("a");
@@ -538,7 +537,7 @@ public class DefaultObjectWrapperTest {
}
@Test
- public void testIteratorWrapping() throws TemplateModelException, ClassNotFoundException {
+ public void testIteratorWrapping() throws TemplateException, ClassNotFoundException {
final List<String> list = ImmutableList.of("a", "b", "c");
Iterator<String> it = list.iterator();
TemplateCollectionModel coll = (TemplateCollectionModel) OW.wrap(it);
@@ -578,14 +577,14 @@ public class DefaultObjectWrapperTest {
}
@Test
- public void testIteratorApiSupport() throws TemplateModelException {
+ public void testIteratorApiSupport() throws TemplateException {
TemplateModel wrappedIterator = OW.wrap(Collections.emptyIterator());
assertThat(wrappedIterator, instanceOf(DefaultIteratorAdapter.class));
DefaultIteratorAdapter iteratorAdapter = (DefaultIteratorAdapter) wrappedIterator;
TemplateHashModel api = (TemplateHashModel) iteratorAdapter.getAPI();
- assertFalse(((TemplateBooleanModel) ((TemplateMethodModelEx)
- api.get("hasNext")).exec(Collections.emptyList())).getAsBoolean());
+ assertFalse(((TemplateBooleanModel) ((TemplateMethodModel)
+ api.get("hasNext")).execute(Collections.<TemplateModel>emptyList())).getAsBoolean());
}
@SuppressWarnings("boxing")
@@ -651,7 +650,7 @@ public class DefaultObjectWrapperTest {
}
@Test
- public void testEnumerationAdapter() throws TemplateModelException {
+ public void testEnumerationAdapter() throws TemplateException {
Vector<String> vector = new Vector<String>();
vector.add("a");
vector.add("b");
@@ -674,8 +673,8 @@ public class DefaultObjectWrapperTest {
}
TemplateHashModel api = (TemplateHashModel) enumAdapter.getAPI();
- assertFalse(((TemplateBooleanModel) ((TemplateMethodModelEx)
- api.get("hasMoreElements")).exec(Collections.emptyList())).getAsBoolean());
+ assertFalse(((TemplateBooleanModel) ((TemplateMethodModel) api.get("hasMoreElements"))
+ .execute(Collections.<TemplateModel>emptyList())).getAsBoolean());
}
@Test
@@ -725,13 +724,13 @@ public class DefaultObjectWrapperTest {
.wrap(bean);
}
- private void assertSizeThroughAPIModel(int expectedSize, TemplateModel normalModel) throws TemplateModelException {
+ private void assertSizeThroughAPIModel(int expectedSize, TemplateModel normalModel) throws TemplateException {
if (!(normalModel instanceof TemplateModelWithAPISupport)) {
fail();
}
TemplateHashModel apiModel = (TemplateHashModel) ((TemplateModelWithAPISupport) normalModel).getAPI();
- TemplateMethodModelEx sizeMethod = (TemplateMethodModelEx) apiModel.get("size");
- TemplateNumberModel r = (TemplateNumberModel) sizeMethod.exec(Collections.emptyList());
+ TemplateMethodModel sizeMethod = (TemplateMethodModel) apiModel.get("size");
+ TemplateNumberModel r = (TemplateNumberModel) sizeMethod.execute(Collections.<TemplateModel>emptyList());
assertEquals(expectedSize, r.getAsNumber().intValue());
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/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 fc19bb7..9373cf5 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
@@ -25,7 +25,7 @@ import java.util.ArrayList;
import org.apache.freemarker.core.Configuration;
import org.apache.freemarker.core.model.TemplateHashModel;
-import org.apache.freemarker.core.model.TemplateMethodModelEx;
+import org.apache.freemarker.core.model.TemplateMethodModel;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateModelException;
import org.apache.freemarker.core.model.TemplateScalarModel;
@@ -58,8 +58,8 @@ public class EnumModelsTest {
assertTrue(a instanceof TemplateScalarModel);
assertTrue(a instanceof TemplateHashModel);
assertEquals(((TemplateScalarModel) a).getAsString(), "ts:A");
- TemplateMethodModelEx nameMethod = (TemplateMethodModelEx) ((TemplateHashModel) a).get("name");
- assertEquals(((TemplateScalarModel) nameMethod.exec(new ArrayList())).getAsString(), "A");
+ TemplateMethodModel nameMethod = (TemplateMethodModel) ((TemplateHashModel) a).get("name");
+ assertEquals(((TemplateScalarModel) nameMethod.execute(new ArrayList())).getAsString(), "A");
assertSame(e, enums.get(E.class.getName()));
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/ErrorMessagesTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/ErrorMessagesTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/ErrorMessagesTest.java
index 29e8b9b..dcb8cf6 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/ErrorMessagesTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/ErrorMessagesTest.java
@@ -27,7 +27,7 @@ import java.util.Date;
import org.apache.freemarker.core.Configuration;
import org.apache.freemarker.core.model.TemplateHashModel;
-import org.apache.freemarker.core.model.TemplateMethodModelEx;
+import org.apache.freemarker.core.model.TemplateMethodModel;
import org.apache.freemarker.core.model.TemplateModelException;
import org.apache.freemarker.core.model.TemplateScalarModel;
import org.apache.freemarker.core.outputformat.impl.HTMLOutputFormat;
@@ -60,9 +60,9 @@ public class ErrorMessagesTest {
TemplateHashModel thm = (TemplateHashModel) ow.wrap(new TestBean());
{
- TemplateMethodModelEx m = (TemplateMethodModelEx) thm.get("m1");
+ TemplateMethodModel m = (TemplateMethodModel) thm.get("m1");
try {
- m.exec(Collections.singletonList(html));
+ m.execute(Collections.singletonList(html));
fail();
} catch (TemplateModelException e) {
assertThat(e.getMessage(), allOf(
@@ -72,9 +72,9 @@ public class ErrorMessagesTest {
}
{
- TemplateMethodModelEx m = (TemplateMethodModelEx) thm.get("m2");
+ TemplateMethodModel m = (TemplateMethodModel) thm.get("m2");
try {
- m.exec(Collections.singletonList(html));
+ m.execute(Collections.singletonList(html));
fail();
} catch (TemplateModelException e) {
assertThat(e.getMessage(), allOf(
@@ -84,9 +84,9 @@ public class ErrorMessagesTest {
}
for (String methodName : new String[] { "mOverloaded", "mOverloaded3" }) {
- TemplateMethodModelEx m = (TemplateMethodModelEx) thm.get(methodName);
+ TemplateMethodModel m = (TemplateMethodModel) thm.get(methodName);
try {
- m.exec(Collections.singletonList(html));
+ m.execute(Collections.singletonList(html));
fail();
} catch (TemplateModelException e) {
assertThat(e.getMessage(), allOf(
@@ -97,9 +97,9 @@ public class ErrorMessagesTest {
}
{
- TemplateMethodModelEx m = (TemplateMethodModelEx) thm.get("mOverloaded2");
+ TemplateMethodModel m = (TemplateMethodModel) thm.get("mOverloaded2");
try {
- m.exec(Collections.singletonList(html));
+ m.execute(Collections.singletonList(html));
fail();
} catch (TemplateModelException e) {
assertThat(e.getMessage(), allOf(
@@ -110,8 +110,8 @@ public class ErrorMessagesTest {
}
{
- TemplateMethodModelEx m = (TemplateMethodModelEx) thm.get("mOverloaded4");
- Object r = m.exec(Collections.singletonList(html));
+ TemplateMethodModel m = (TemplateMethodModel) thm.get("mOverloaded4");
+ Object r = m.execute(Collections.singletonList(html));
if (r instanceof TemplateScalarModel) {
r = ((TemplateScalarModel) r).getAsString();
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/FineTuneMethodAppearanceTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/FineTuneMethodAppearanceTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/FineTuneMethodAppearanceTest.java
index 92f59fb..eb4d807 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/FineTuneMethodAppearanceTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/FineTuneMethodAppearanceTest.java
@@ -23,7 +23,7 @@ import static org.junit.Assert.*;
import org.apache.freemarker.core.Configuration;
import org.apache.freemarker.core.model.TemplateHashModel;
-import org.apache.freemarker.core.model.TemplateMethodModelEx;
+import org.apache.freemarker.core.model.TemplateMethodModel;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateModelException;
import org.apache.freemarker.core.model.TemplateScalarModel;
@@ -48,7 +48,7 @@ public class FineTuneMethodAppearanceTest {
assertEquals("v1", ((TemplateScalarModel) thm.get("v1")).getAsString());
assertEquals("v2()", ((TemplateScalarModel) thm.get("v2")).getAsString());
assertEquals("getV3()", ((TemplateScalarModel) thm.get("v3")).getAsString());
- assertTrue(thm.get("getV3") instanceof TemplateMethodModelEx);
+ assertTrue(thm.get("getV3") instanceof TemplateMethodModel);
}
static public class C {
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/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 609d632..44da42a 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
@@ -26,7 +26,7 @@ import java.util.ArrayList;
import org.apache.freemarker.core.Configuration;
import org.apache.freemarker.core.model.TemplateHashModel;
-import org.apache.freemarker.core.model.TemplateMethodModelEx;
+import org.apache.freemarker.core.model.TemplateMethodModel;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateModelException;
import org.apache.freemarker.core.model.TemplateScalarModel;
@@ -65,8 +65,8 @@ public class StaticModelsTest {
assertEquals(((TemplateScalarModel) f).getAsString(), "F OK");
TemplateModel m = s.get("m");
- assertTrue(m instanceof TemplateMethodModelEx);
- assertEquals(((TemplateScalarModel) ((TemplateMethodModelEx) m).exec(new ArrayList())).getAsString(), "m OK");
+ assertTrue(m instanceof TemplateMethodModel);
+ assertEquals(((TemplateScalarModel) ((TemplateMethodModel) m).execute(new ArrayList())).getAsString(), "m OK");
assertSame(s, statics.get(S.class.getName()));
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel2.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel2.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel2.java
index e264936..3223652 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel2.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel2.java
@@ -19,10 +19,12 @@
package org.apache.freemarker.core.templatesuite.models;
-import java.util.Iterator;
import java.util.List;
+import org.apache.freemarker.core.TemplateException;
+import org.apache.freemarker.core._CallableUtils;
import org.apache.freemarker.core.model.TemplateMethodModel;
+import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateScalarModel;
import org.apache.freemarker.core.model.impl.SimpleScalar;
@@ -44,18 +46,17 @@ public class MultiModel2 implements TemplateScalarModel, TemplateMethodModel {
/**
* Executes a method call.
*
- * @param arguments a <tt>List</tt> of <tt>String</tt> objects containing the values
+ * @param args a <tt>List</tt> of <tt>String</tt> objects containing the values
* of the arguments passed to the method.
* @return the <tt>TemplateModel</tt> produced by the method, or null.
*/
@Override
- public Object exec(List arguments) {
+ public TemplateModel execute(List<? extends TemplateModel> args) throws TemplateException {
StringBuilder aResults = new StringBuilder( "Arguments are:<br />" );
- Iterator iList = arguments.iterator();
-
- while ( iList.hasNext() ) {
- aResults.append( (String) iList.next() );
- aResults.append( "<br />" );
+ for (int i = 0; i < args.size(); i++) {
+ TemplateModel arg = args.get(i);
+ aResults.append(_CallableUtils.castArgToString(arg, i));
+ aResults.append("<br />");
}
return new SimpleScalar( aResults.toString() );
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/SimpleTestMethod.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/SimpleTestMethod.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/SimpleTestMethod.java
index 21fc5c0..48352a0 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/SimpleTestMethod.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/SimpleTestMethod.java
@@ -22,6 +22,7 @@ package org.apache.freemarker.core.templatesuite.models;
import java.util.List;
import org.apache.freemarker.core.model.TemplateMethodModel;
+import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.impl.SimpleScalar;
/**
@@ -32,18 +33,18 @@ public class SimpleTestMethod implements TemplateMethodModel {
/**
* Executes a method call.
*
- * @param arguments a <tt>List</tt> of <tt>String</tt> objects containing
+ * @param args a <tt>List</tt> of <tt>String</tt> objects containing
* the values of the arguments passed to the method.
* @return the <tt>TemplateModel</tt> produced by the method, or null.
*/
@Override
- public Object exec(List arguments) {
- if ( arguments.size() == 0 ) {
+ public TemplateModel execute(List<? extends TemplateModel> args) {
+ if ( args.size() == 0 ) {
return new SimpleScalar( "Empty list provided" );
- } else if ( arguments.size() > 1 ) {
- return new SimpleScalar( "Argument size is: " + arguments.size() );
+ } else if ( args.size() > 1 ) {
+ return new SimpleScalar( "Argument size is: " + args.size() );
} else {
- return new SimpleScalar( "Single argument value is: " + arguments.get(0) );
+ return new SimpleScalar( "Single argument value is: " + args.get(0) );
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/TestMethod.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/TestMethod.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/TestMethod.java
index d9087a3..ed97f9e 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/TestMethod.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/TestMethod.java
@@ -3,10 +3,14 @@ package org.apache.freemarker.core.templatesuite.models;
import java.util.List;
import org.apache.freemarker.core.model.TemplateMethodModel;
+import org.apache.freemarker.core.model.TemplateModel;
+import org.apache.freemarker.core.model.impl.SimpleScalar;
public class TestMethod implements TemplateMethodModel {
+
@Override
- public Object exec(List arguments) {
- return "x";
+ public TemplateModel execute(List<? extends TemplateModel> args) {
+ return new SimpleScalar("x");
}
+
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/AllFeaturesDirective.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/AllFeaturesDirective.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/AllFeaturesDirective.java
index 3509b78..d9bb394 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/AllFeaturesDirective.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/AllFeaturesDirective.java
@@ -19,19 +19,18 @@
package org.apache.freemarker.core.userpkg;
-import static org.apache.freemarker.core._TemplateCallableModelUtils.*;
+import static org.apache.freemarker.core._CallableUtils.*;
import java.io.IOException;
import java.io.Writer;
+import org.apache.freemarker.core.CallPlace;
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.TemplateDirectiveModel;
import org.apache.freemarker.core.model.TemplateHashModelEx2;
import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateNumberModel;
import org.apache.freemarker.core.model.TemplateSequenceModel;
import org.apache.freemarker.core.model.impl.SimpleNumber;
import org.apache.freemarker.core.util.StringToIndexMap;
@@ -79,17 +78,17 @@ public class AllFeaturesDirective extends TestTemplateCallableModel implements T
@Override
public void execute(TemplateModel[] args, CallPlace callPlace, Writer out, Environment env)
throws TemplateException, IOException {
- execute(castArgumentToNumber(args, P1_ARG_IDX, p1AllowNull, env),
- castArgumentToNumber(args, P2_ARG_IDX, p2AllowNull, env),
+ execute(castArgToNumber(args, P1_ARG_IDX, p1AllowNull),
+ castArgToNumber(args, P2_ARG_IDX, p2AllowNull),
(TemplateSequenceModel) args[P_VARARGS_ARG_IDX],
- castArgumentToNumber(args[N1_ARG_IDX], N1_ARG_NAME, n1AllowNull, env),
- castArgumentToNumber(args[N2_ARG_IDX], N2_ARG_NAME, n2AllowNull, env),
+ castArgToNumber(args[N1_ARG_IDX], N1_ARG_NAME, n1AllowNull),
+ castArgToNumber(args[N2_ARG_IDX], N2_ARG_NAME, n2AllowNull),
(TemplateHashModelEx2) args[N_VARARGS_ARG_IDX],
out, env, callPlace);
}
- private void execute(TemplateNumberModel p1, TemplateNumberModel p2, TemplateSequenceModel pOthers,
- TemplateNumberModel n1, TemplateNumberModel n2, TemplateHashModelEx2 nOthers,
+ private void execute(Number p1, Number p2, TemplateSequenceModel pOthers,
+ Number n1, Number n2, TemplateHashModelEx2 nOthers,
Writer out, Environment env, CallPlace callPlace) throws IOException, TemplateException {
out.write("#a(");
printParam("p1", p1, out, true);
@@ -107,7 +106,7 @@ public class AllFeaturesDirective extends TestTemplateCallableModel implements T
if (callPlace.hasNestedContent()) {
out.write(" {");
if (p1 != null) {
- int intP1 = p1.getAsNumber().intValue();
+ int intP1 = p1.intValue();
for (int i = 0; i < intP1; i++) {
// We dynamically set as many nested content parameters as many the caller has declared; this is
// unusual, and is for testing purposes only.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/AllFeaturesFunction.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/AllFeaturesFunction.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/AllFeaturesFunction.java
index 7f1f6c1..5825745 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/AllFeaturesFunction.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/AllFeaturesFunction.java
@@ -19,7 +19,7 @@
package org.apache.freemarker.core.userpkg;
-import static org.apache.freemarker.core._TemplateCallableModelUtils.*;
+import static org.apache.freemarker.core._CallableUtils.*;
import java.io.IOException;
import java.io.StringWriter;
@@ -31,7 +31,6 @@ import org.apache.freemarker.core.model.ArgumentArrayLayout;
import org.apache.freemarker.core.model.TemplateFunctionModel;
import org.apache.freemarker.core.model.TemplateHashModelEx2;
import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateNumberModel;
import org.apache.freemarker.core.model.TemplateSequenceModel;
import org.apache.freemarker.core.model.impl.SimpleScalar;
import org.apache.freemarker.core.util.StringToIndexMap;
@@ -78,18 +77,17 @@ public class AllFeaturesFunction extends TestTemplateCallableModel implements Te
@Override
public TemplateModel execute(TemplateModel[] args, CallPlace callPlace, Environment env) throws TemplateException {
- return execute(castArgumentToNumber(args, P1_ARG_IDX, p1AllowNull, env),
- castArgumentToNumber(args, P2_ARG_IDX, p2AllowNull, env),
+ return execute(
+ castArgToNumber(args, P1_ARG_IDX, p1AllowNull),
+ castArgToNumber(args, P2_ARG_IDX, p2AllowNull),
(TemplateSequenceModel) args[P_VARARGS_ARG_IDX],
- castArgumentToNumber(args[N1_ARG_IDX], N1_ARG_NAME, n1AllowNull, env),
- castArgumentToNumber(args[N2_ARG_IDX], N2_ARG_NAME, n2AllowNull, env),
- (TemplateHashModelEx2) args[N_VARARGS_ARG_IDX],
- env);
+ castArgToNumber(args[N1_ARG_IDX], N1_ARG_NAME, n1AllowNull),
+ castArgToNumber(args[N2_ARG_IDX], N2_ARG_NAME, n2AllowNull),
+ (TemplateHashModelEx2) args[N_VARARGS_ARG_IDX]);
}
- private TemplateModel execute(TemplateNumberModel p1, TemplateNumberModel p2, TemplateSequenceModel pOthers,
- TemplateNumberModel n1, TemplateNumberModel n2, TemplateHashModelEx2 nOthers,
- Environment env) throws TemplateException {
+ private TemplateModel execute(Number p1, Number p2, TemplateSequenceModel pOthers,
+ Number n1, Number n2, TemplateHashModelEx2 nOthers) throws TemplateException {
StringWriter out = new StringWriter();
try {
out.write("fa(");
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TestTemplateCallableModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TestTemplateCallableModel.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TestTemplateCallableModel.java
index 9dd34ba..f0a15d7 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TestTemplateCallableModel.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/TestTemplateCallableModel.java
@@ -24,20 +24,20 @@ import java.io.Writer;
import org.apache.freemarker.core.model.TemplateCallableModel;
import org.apache.freemarker.core.model.TemplateHashModelEx2;
-import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateModelException;
import org.apache.freemarker.core.model.TemplateNumberModel;
import org.apache.freemarker.core.model.TemplateScalarModel;
import org.apache.freemarker.core.model.TemplateSequenceModel;
import org.apache.freemarker.core.util.FTLUtil;
+import org.apache.freemarker.core.util._StringUtil;
public abstract class TestTemplateCallableModel implements TemplateCallableModel {
- protected void printParam(String name, TemplateModel value, Writer out) throws IOException, TemplateModelException {
+ protected void printParam(String name, Object value, Writer out) throws IOException, TemplateModelException {
printParam(name, value, out, false);
}
- protected void printParam(String name, TemplateModel value, Writer out, boolean first)
+ protected void printParam(String name, Object value, Writer out, boolean first)
throws IOException, TemplateModelException {
if (!first) {
out.write(", ");
@@ -47,7 +47,7 @@ public abstract class TestTemplateCallableModel implements TemplateCallableModel
printValue(value, out);
}
- private void printValue(TemplateModel value, Writer out) throws IOException, TemplateModelException {
+ private void printValue(Object value, Writer out) throws IOException, TemplateModelException {
if (value == null) {
out.write("null");
} else if (value instanceof TemplateNumberModel) {
@@ -79,6 +79,12 @@ public abstract class TestTemplateCallableModel implements TemplateCallableModel
}
}
out.write('}');
+ } else if (value instanceof String) {
+ out.write(_StringUtil.jQuote(value));
+ } else if (value instanceof Number) {
+ out.write(value.toString());
+ } else if (value instanceof Boolean) {
+ out.write(value.toString());
} else {
throw new IllegalArgumentException("Unsupported value class: " + value.getClass().getName());
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/stringbimethods.txt
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/stringbimethods.txt b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/stringbimethods.txt
index 8ef415d..1d4a314 100644
--- a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/stringbimethods.txt
+++ b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/stringbimethods.txt
@@ -25,5 +25,3 @@ de
true false
yes no
igen nem
-0.0 1.0
-true true
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/stringbimethods.ftl
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/stringbimethods.ftl b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/stringbimethods.ftl
index 94954f9..c3bd460 100644
--- a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/stringbimethods.ftl
+++ b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/stringbimethods.ftl
@@ -30,7 +30,3 @@ ${a?string} ${b?string}
${a?string("yes", "no")} ${b?string("yes", "no")}
<#setting booleanFormat="igen,nem"/>
${a?string} ${b?string}
-<#setting numberFormat="0.0">
-${a?string(0, 1)} ${b?string(0, 1)}
-<#setting booleanFormat="true,false"/>
-${a?string(0, 1)?isString?string} ${b?string(0, 1)?isString?string}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpListLiteral.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpListLiteral.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpListLiteral.java
index e5dc679..0fc27da 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpListLiteral.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpListLiteral.java
@@ -26,7 +26,6 @@ import java.util.List;
import java.util.ListIterator;
import org.apache.freemarker.core.model.TemplateMethodModel;
-import org.apache.freemarker.core.model.TemplateMethodModelEx;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateSequenceModel;
@@ -55,31 +54,7 @@ final class ASTExpListLiteral extends ASTExpression {
}
/**
- * For {@link TemplateMethodModel} calls, but not for {@link TemplateMethodModelEx}-es, returns the list of
- * arguments as {@link String}-s.
- */
- List/*<String>*/ getValueList(Environment env) throws TemplateException {
- int size = items.size();
- switch(size) {
- case 0: {
- return Collections.EMPTY_LIST;
- }
- case 1: {
- return Collections.singletonList(((ASTExpression) items.get(0)).evalAndCoerceToPlainText(env));
- }
- default: {
- List result = new ArrayList(items.size());
- for (ListIterator iterator = items.listIterator(); iterator.hasNext(); ) {
- ASTExpression exp = (ASTExpression) iterator.next();
- result.add(exp.evalAndCoerceToPlainText(env));
- }
- return result;
- }
- }
- }
-
- /**
- * For {@link TemplateMethodModelEx} calls, returns the list of arguments as {@link TemplateModel}-s.
+ * For {@link TemplateMethodModel} calls, returns the list of arguments as {@link TemplateModel}-s.
*/
List<TemplateModel> getModelList(Environment env) throws TemplateException {
int size = items.size();
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpMethodCall.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpMethodCall.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpMethodCall.java
index dc8f3ff..581726e 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpMethodCall.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpMethodCall.java
@@ -32,7 +32,6 @@ import org.apache.freemarker.core.model.ArgumentArrayLayout;
import org.apache.freemarker.core.model.Constants;
import org.apache.freemarker.core.model.TemplateFunctionModel;
import org.apache.freemarker.core.model.TemplateMethodModel;
-import org.apache.freemarker.core.model.TemplateMethodModelEx;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateSequenceModel;
import org.apache.freemarker.core.util.CommonSupplier;
@@ -61,11 +60,8 @@ final class ASTExpMethodCall extends ASTExpression implements CallPlace {
TemplateModel targetModel = target.eval(env);
if (targetModel instanceof TemplateMethodModel) {
TemplateMethodModel targetMethod = (TemplateMethodModel) targetModel;
- List argumentStrings =
- targetMethod instanceof TemplateMethodModelEx
- ? arguments.getModelList(env)
- : arguments.getValueList(env);
- Object result = targetMethod.exec(argumentStrings);
+ List<TemplateModel> argumentStrings = arguments.getModelList(env);
+ Object result = targetMethod.execute(argumentStrings);
return env.getObjectWrapper().wrap(result);
} else if (targetModel instanceof TemplateFunctionModel) {
TemplateFunctionModel func = (TemplateFunctionModel) targetModel;
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForDates.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForDates.java b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForDates.java
index ad11b37..434578d 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForDates.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForDates.java
@@ -25,7 +25,7 @@ import java.util.TimeZone;
import org.apache.freemarker.core.model.AdapterTemplateModel;
import org.apache.freemarker.core.model.TemplateDateModel;
-import org.apache.freemarker.core.model.TemplateMethodModelEx;
+import org.apache.freemarker.core.model.TemplateMethodModel;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateModelException;
import org.apache.freemarker.core.model.TemplateScalarModel;
@@ -63,11 +63,6 @@ class BuiltInsForDates {
}
}
- protected TemplateModel calculateResult(Date date, int dateType, Environment env) throws TemplateException {
- // TODO Auto-generated method stub
- return null;
- }
-
}
/**
@@ -75,7 +70,7 @@ class BuiltInsForDates {
*/
static class iso_BI extends AbstractISOBI {
- class Result implements TemplateMethodModelEx {
+ class Result implements TemplateMethodModel {
private final Date date;
private final int dateType;
private final Environment env;
@@ -87,10 +82,10 @@ class BuiltInsForDates {
}
@Override
- public Object exec(List args) throws TemplateModelException {
+ public TemplateModel execute(List<? extends TemplateModel> args) throws TemplateModelException {
checkMethodArgCount(args, 1);
- TemplateModel tzArgTM = (TemplateModel) args.get(0);
+ TemplateModel tzArgTM = args.get(0);
TimeZone tzArg;
Object adaptedObj;
if (tzArgTM instanceof AdapterTemplateModel
@@ -178,15 +173,15 @@ class BuiltInsForDates {
private BuiltInsForDates() { }
static abstract class AbstractISOBI extends BuiltInForDate {
- protected final Boolean showOffset;
- protected final int accuracy;
+ final Boolean showOffset;
+ final int accuracy;
- protected AbstractISOBI(Boolean showOffset, int accuracy) {
+ AbstractISOBI(Boolean showOffset, int accuracy) {
this.showOffset = showOffset;
this.accuracy = accuracy;
}
- protected void checkDateTypeNotUnknown(int dateType)
+ void checkDateTypeNotUnknown(int dateType)
throws TemplateException {
if (dateType == TemplateDateModel.UNKNOWN) {
throw new _MiscTemplateException(new _ErrorDescriptionBuilder(
@@ -196,11 +191,11 @@ class BuiltInsForDates {
}
}
- protected boolean shouldShowOffset(Date date, int dateType, Environment env) {
+ boolean shouldShowOffset(Date date, int dateType, Environment env) {
if (dateType == TemplateDateModel.DATE) {
return false; // ISO 8061 doesn't allow zone for date-only values
} else if (showOffset != null) {
- return showOffset.booleanValue();
+ return showOffset;
} else {
// java.sql.Time values meant to carry calendar field values only, so we don't show offset for them.
return !(date instanceof java.sql.Time);
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForExistenceHandling.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForExistenceHandling.java b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForExistenceHandling.java
index 6e7cce0..c0d6164 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForExistenceHandling.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForExistenceHandling.java
@@ -22,7 +22,7 @@ package org.apache.freemarker.core;
import java.util.List;
import org.apache.freemarker.core.model.TemplateBooleanModel;
-import org.apache.freemarker.core.model.TemplateMethodModelEx;
+import org.apache.freemarker.core.model.TemplateMethodModel;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateModelException;
@@ -63,7 +63,7 @@ class BuiltInsForExistenceHandling {
return model == null ? FIRST_NON_NULL_METHOD : new ConstantMethod(model);
}
- private static class ConstantMethod implements TemplateMethodModelEx {
+ private static class ConstantMethod implements TemplateMethodModel {
private final TemplateModel constant;
ConstantMethod(TemplateModel constant) {
@@ -71,7 +71,7 @@ class BuiltInsForExistenceHandling {
}
@Override
- public Object exec(List args) {
+ public TemplateModel execute(List<? extends TemplateModel> args) {
return constant;
}
}
@@ -80,14 +80,14 @@ class BuiltInsForExistenceHandling {
* A method that goes through the arguments one by one and returns
* the first one that is non-null. If all args are null, returns null.
*/
- private static final TemplateMethodModelEx FIRST_NON_NULL_METHOD =
- new TemplateMethodModelEx() {
+ private static final TemplateMethodModel FIRST_NON_NULL_METHOD =
+ new TemplateMethodModel() {
@Override
- public Object exec(List args) throws TemplateModelException {
+ public TemplateModel execute(List<? extends TemplateModel> args) throws TemplateModelException {
int argCnt = args.size();
if (argCnt == 0) throw MessageUtil.newArgCntError("?default", argCnt, 1, Integer.MAX_VALUE);
for (int i = 0; i < argCnt; i++ ) {
- TemplateModel result = (TemplateModel) args.get(i);
+ TemplateModel result = args.get(i);
if (result != null) return result;
}
return null;
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java
index 74f7c15..5e85262 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java
@@ -19,6 +19,7 @@
package org.apache.freemarker.core;
+import java.io.Serializable;
import java.util.Date;
import java.util.List;
@@ -110,7 +111,7 @@ class BuiltInsForMultipleTypes {
private class DateParser
implements
TemplateDateModel,
- TemplateMethodModel,
+ TemplateMethodModel,
TemplateHashModel {
private final String text;
private final Environment env;
@@ -125,9 +126,9 @@ class BuiltInsForMultipleTypes {
}
@Override
- public Object exec(List args) throws TemplateModelException {
+ public TemplateModel execute(List<? extends TemplateModel> args) throws TemplateException {
checkMethodArgCount(args, 0, 1);
- return args.size() == 0 ? getAsDateModel() : get((String) args.get(0));
+ return args.size() == 0 ? getAsDateModel() : get(_CallableUtils.castArgToString(args, 0));
}
@Override
@@ -470,8 +471,8 @@ class BuiltInsForMultipleTypes {
private class BooleanFormatter
implements
- TemplateScalarModel,
- TemplateMethodModel {
+ TemplateScalarModel,
+ TemplateMethodModel {
private final TemplateBooleanModel bool;
private final Environment env;
@@ -481,9 +482,14 @@ class BuiltInsForMultipleTypes {
}
@Override
- public Object exec(List args) throws TemplateModelException {
+ public TemplateModel execute(List<? extends TemplateModel> args) throws TemplateException {
checkMethodArgCount(args, 2);
- return new SimpleScalar((String) args.get(bool.getAsBoolean() ? 0 : 1));
+ int argIdx = bool.getAsBoolean() ? 0 : 1;
+ TemplateModel result = args.get(argIdx);
+ if (!(result instanceof TemplateScalarModel)) {
+ throw new NonStringException((Serializable) argIdx, result, null, null);
+ }
+ return result;
}
@Override
@@ -505,7 +511,7 @@ class BuiltInsForMultipleTypes {
implements
TemplateScalarModel,
TemplateHashModel,
- TemplateMethodModel {
+ TemplateMethodModel {
private final TemplateDateModel dateModel;
private final Environment env;
private final TemplateDateFormat defaultFormat;
@@ -524,9 +530,9 @@ class BuiltInsForMultipleTypes {
}
@Override
- public Object exec(List args) throws TemplateModelException {
+ public TemplateModel execute(List<? extends TemplateModel> args) throws TemplateException {
checkMethodArgCount(args, 1);
- return formatWith((String) args.get(0));
+ return formatWith(_CallableUtils.castArgToString(args, 0));
}
@Override
@@ -580,7 +586,7 @@ class BuiltInsForMultipleTypes {
implements
TemplateScalarModel,
TemplateHashModel,
- TemplateMethodModel {
+ TemplateMethodModel {
private final TemplateNumberModel numberModel;
private final Number number;
private final Environment env;
@@ -602,9 +608,9 @@ class BuiltInsForMultipleTypes {
}
@Override
- public Object exec(List args) throws TemplateModelException {
+ public TemplateModel execute(List<? extends TemplateModel> args) throws TemplateException {
checkMethodArgCount(args, 1);
- return get((String) args.get(0));
+ return get(_CallableUtils.castArgToString(args, 0));
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNestedContentParameters.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNestedContentParameters.java b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNestedContentParameters.java
index a4c4d8f..89593cd 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNestedContentParameters.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNestedContentParameters.java
@@ -22,7 +22,7 @@ import java.util.List;
import org.apache.freemarker.core.ASTDirList.IterationContext;
import org.apache.freemarker.core.model.TemplateBooleanModel;
-import org.apache.freemarker.core.model.TemplateMethodModelEx;
+import org.apache.freemarker.core.model.TemplateMethodModel;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateModelException;
import org.apache.freemarker.core.model.impl.SimpleNumber;
@@ -131,7 +131,7 @@ class BuiltInsForNestedContentParameters {
static class item_cycleBI extends BuiltInForNestedContentParameter {
- private class BIMethod implements TemplateMethodModelEx {
+ private class BIMethod implements TemplateMethodModel {
private final IterationContext iterCtx;
@@ -140,7 +140,7 @@ class BuiltInsForNestedContentParameters {
}
@Override
- public Object exec(List args) throws TemplateModelException {
+ public TemplateModel execute(List<? extends TemplateModel> args) throws TemplateModelException {
checkMethodArgCount(args, 1, Integer.MAX_VALUE);
return args.get(iterCtx.getIndex() % args.size());
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNodes.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNodes.java b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNodes.java
index 39bc546..d5dfe93 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNodes.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForNodes.java
@@ -126,7 +126,7 @@ class BuiltInsForNodes {
}
@Override
- public Object exec(List names) throws TemplateModelException {
+ public TemplateModel execute(List<? extends TemplateModel> names) throws TemplateException {
if (names == null || names.isEmpty()) {
return this;
}
@@ -141,7 +141,7 @@ class BuiltInsForNodes {
}
} else {
for (int j = 0; j < names.size(); j++) {
- if (_StringUtil.matchesQName((String) names.get(j), nodeName, nsURI, env)) {
+ if (_StringUtil.matchesQName(_CallableUtils.castArgToString(names, j), nodeName, nsURI, env)) {
result.add(tnm);
break;
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/1333a715/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 e131406..9406d33 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
@@ -33,7 +33,7 @@ import org.apache.freemarker.core.model.TemplateBooleanModel;
import org.apache.freemarker.core.model.TemplateCollectionModel;
import org.apache.freemarker.core.model.TemplateDateModel;
import org.apache.freemarker.core.model.TemplateHashModel;
-import org.apache.freemarker.core.model.TemplateMethodModelEx;
+import org.apache.freemarker.core.model.TemplateMethodModel;
import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateModelException;
import org.apache.freemarker.core.model.TemplateModelIterator;
@@ -54,7 +54,7 @@ class BuiltInsForSequences {
static class chunkBI extends BuiltInForSequence {
- private class BIMethod implements TemplateMethodModelEx {
+ private class BIMethod implements TemplateMethodModel {
private final TemplateSequenceModel tsm;
@@ -63,7 +63,7 @@ class BuiltInsForSequences {
}
@Override
- public Object exec(List args) throws TemplateModelException {
+ public TemplateModel execute(List<? extends TemplateModel> args) throws TemplateModelException {
checkMethodArgCount(args, 1, 2);
int chunkSize = getNumberMethodArg(args, 0).intValue();
@@ -182,7 +182,7 @@ class BuiltInsForSequences {
static class joinBI extends ASTExpBuiltIn {
- private class BIMethodForCollection implements TemplateMethodModelEx {
+ private class BIMethodForCollection implements TemplateMethodModel {
private final Environment env;
private final TemplateCollectionModel coll;
@@ -193,7 +193,7 @@ class BuiltInsForSequences {
}
@Override
- public Object exec(List args)
+ public TemplateModel execute(List<? extends TemplateModel> args)
throws TemplateModelException {
checkMethodArgCount(args, 1, 3);
final String separator = getStringMethodArg(args, 0);
@@ -218,7 +218,7 @@ class BuiltInsForSequences {
sb.append(_EvalUtil.coerceModelToStringOrUnsupportedMarkup(item, null, null, env));
} catch (TemplateException e) {
throw new _TemplateModelException(e,
- "\"?", key, "\" failed at index ", Integer.valueOf(idx), " with this error:\n\n",
+ "\"?", key, "\" failed at index ", idx, " with this error:\n\n",
MessageUtil.EMBEDDED_MESSAGE_BEGIN,
new _DelayedGetMessageWithoutStackTop(e),
MessageUtil.EMBEDDED_MESSAGE_END);
@@ -295,7 +295,7 @@ class BuiltInsForSequences {
}
static class seq_containsBI extends ASTExpBuiltIn {
- private class BIMethodForCollection implements TemplateMethodModelEx {
+ private class BIMethodForCollection implements TemplateMethodModel {
private TemplateCollectionModel m_coll;
private Environment m_env;
@@ -305,10 +305,10 @@ class BuiltInsForSequences {
}
@Override
- public Object exec(List args)
+ public TemplateModel execute(List<? extends TemplateModel> args)
throws TemplateModelException {
checkMethodArgCount(args, 1);
- TemplateModel arg = (TemplateModel) args.get(0);
+ TemplateModel arg = args.get(0);
TemplateModelIterator it = m_coll.iterator();
int idx = 0;
while (it.hasNext()) {
@@ -321,7 +321,7 @@ class BuiltInsForSequences {
}
- private class BIMethodForSequence implements TemplateMethodModelEx {
+ private class BIMethodForSequence implements TemplateMethodModel {
private TemplateSequenceModel m_seq;
private Environment m_env;
@@ -331,10 +331,10 @@ class BuiltInsForSequences {
}
@Override
- public Object exec(List args)
+ public TemplateModel execute(List<? extends TemplateModel> args)
throws TemplateModelException {
checkMethodArgCount(args, 1);
- TemplateModel arg = (TemplateModel) args.get(0);
+ TemplateModel arg = args.get(0);
int size = m_seq.size();
for (int i = 0; i < size; i++) {
if (modelsEqual(i, m_seq.get(i), arg, m_env))
@@ -364,11 +364,11 @@ class BuiltInsForSequences {
static class seq_index_ofBI extends ASTExpBuiltIn {
- private class BIMethod implements TemplateMethodModelEx {
+ private class BIMethod implements TemplateMethodModel {
- protected final TemplateSequenceModel m_seq;
- protected final TemplateCollectionModel m_col;
- protected final Environment m_env;
+ final TemplateSequenceModel m_seq;
+ final TemplateCollectionModel m_col;
+ final Environment m_env;
private BIMethod(Environment env)
throws TemplateException {
@@ -395,12 +395,12 @@ class BuiltInsForSequences {
}
@Override
- public final Object exec(List args)
+ public final TemplateModel execute(List<? extends TemplateModel> args)
throws TemplateModelException {
int argCnt = args.size();
checkMethodArgCount(argCnt, 1, 2);
- TemplateModel target = (TemplateModel) args.get(0);
+ TemplateModel target = args.get(0);
int foundAtIdx;
if (argCnt > 1) {
int startIndex = getNumberMethodArg(args, 1).intValue();
@@ -423,7 +423,7 @@ class BuiltInsForSequences {
return findInCol(target, 0, Integer.MAX_VALUE);
}
- protected int findInCol(TemplateModel target, int startIndex)
+ int findInCol(TemplateModel target, int startIndex)
throws TemplateModelException {
if (m_dir == 1) {
return findInCol(target, startIndex, Integer.MAX_VALUE);
@@ -432,7 +432,7 @@ class BuiltInsForSequences {
}
}
- protected int findInCol(TemplateModel target,
+ int findInCol(TemplateModel target,
final int allowedRangeStart, final int allowedRangeEnd)
throws TemplateModelException {
if (allowedRangeEnd < 0) return -1;
@@ -525,7 +525,7 @@ class BuiltInsForSequences {
}
static class sort_byBI extends sortBI {
- class BIMethod implements TemplateMethodModelEx {
+ class BIMethod implements TemplateMethodModel {
TemplateSequenceModel seq;
BIMethod(TemplateSequenceModel seq) {
@@ -533,7 +533,7 @@ class BuiltInsForSequences {
}
@Override
- public Object exec(List args)
+ public TemplateModel execute(List<? extends TemplateModel> args)
throws TemplateModelException {
// Should be:
// checkMethodArgCount(args, 1);
@@ -549,18 +549,14 @@ class BuiltInsForSequences {
int ln = seq.size();
subvars = new String[ln];
for (int i = 0; i < ln; i++) {
- Object item = seq.get(i);
- try {
- subvars[i] = ((TemplateScalarModel) item)
- .getAsString();
- } catch (ClassCastException e) {
- if (!(item instanceof TemplateScalarModel)) {
- throw new _TemplateModelException(
- "The argument to ?", key, "(key), when it's a sequence, must be a "
- + "sequence of strings, but the item at index ", Integer.valueOf(i),
- " is not a string.");
- }
+ TemplateModel item = seq.get(i);
+ if (!(item instanceof TemplateScalarModel)) {
+ throw new _TemplateModelException(
+ "The argument to ?", key, "(key), when it's a sequence, must be a "
+ + "sequence of strings, but the item at index ", i,
+ " is not a string.");
}
+ subvars[i] = ((TemplateScalarModel) item).getAsString();
}
} else {
throw new _TemplateModelException(