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:29 UTC
[3/8] incubator-freemarker git commit: FREEMARKER-64: Removed
TemplateMethodModel,
using TemplateFunctionModel everywhere instead. Some refinement of existing
TemplateCallableModel API-s, most importantly,
the support for null argumenArrayLayout. Removed
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/8d5263f2/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/IncludePage.java
----------------------------------------------------------------------
diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/IncludePage.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/IncludePage.java
index c500c8c..0f2a061 100644
--- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/IncludePage.java
+++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/IncludePage.java
@@ -185,7 +185,7 @@ public class IncludePage implements TemplateDirectiveModel {
}
@Override
- public ArgumentArrayLayout getArgumentArrayLayout() {
+ public ArgumentArrayLayout getDirectiveArgumentArrayLayout() {
return ARGS_LAYOUT;
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/8d5263f2/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/CustomTagAndELFunctionCombiner.java
----------------------------------------------------------------------
diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/CustomTagAndELFunctionCombiner.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/CustomTagAndELFunctionCombiner.java
deleted file mode 100644
index ff9db12..0000000
--- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/CustomTagAndELFunctionCombiner.java
+++ /dev/null
@@ -1,157 +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.servlet.jsp;
-
-import java.io.IOException;
-import java.io.Writer;
-import java.util.List;
-
-import org.apache.freemarker.core.Environment;
-import org.apache.freemarker.core.TemplateException;
-import org.apache.freemarker.core._UnexpectedTypeErrorExplainerTemplateModel;
-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.TemplateMethodModel;
-import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateModelException;
-import org.apache.freemarker.core.model.impl.JavaMethodModel;
-import org.apache.freemarker.core.util.BugException;
-import org.apache.freemarker.core.util._ClassUtil;
-
-/**
- * Used when a custom JSP tag and an EL function uses the same name in a tag library, to invoke a single FTL value from
- * the two. As FTL as no separate namespace for "tags" and functions, both aspect has to be implemented by the same
- * value.
- */
-@SuppressWarnings("rawtypes")
-class CustomTagAndELFunctionCombiner {
-
- /**
- * @param customTag
- * A {@link TemplateDirectiveModel}.
- */
- static TemplateModel combine(TemplateModel customTag, TemplateMethodModel elFunction) {
- if (customTag instanceof TemplateDirectiveModel) {
- return elFunction instanceof JavaMethodModel //
- ? new TemplateDirectiveModelAndSimpleMethodModel( //
- (TemplateDirectiveModel) customTag, (JavaMethodModel) elFunction) //
- : new TemplateDirectiveModelAndTemplateMethodModelEx( //
- (TemplateDirectiveModel) customTag, elFunction);
- } else {
- throw new BugException(
- "Unexpected custom JSP tag class: " + _ClassUtil.getShortClassNameOfObject(customTag));
- }
- }
-
- /**
- * Tells if the value can be used as the "custom tag" parameter to
- * {@link #combine(TemplateModel, TemplateMethodModel)}.
- */
- static boolean canBeCombinedAsCustomTag(TemplateModel tm) {
- return (tm instanceof TemplateDirectiveModel) && !(tm instanceof CombinedTemplateModel);
- }
-
- /**
- * Tells if the value can be used as the "EL function" parameter to
- * {@link #combine(TemplateModel, TemplateMethodModel)}.
- */
- static boolean canBeCombinedAsELFunction(TemplateModel tm) {
- return tm instanceof TemplateMethodModel && !(tm instanceof CombinedTemplateModel);
- }
-
- private static class CombinedTemplateModel {
- // Marker only
- }
-
- private static class TemplateDirectiveModelAndSimpleMethodModel extends CombinedTemplateModel
- implements TemplateDirectiveModel, TemplateMethodModel,
- _UnexpectedTypeErrorExplainerTemplateModel {
-
- private final TemplateDirectiveModel templateDirectiveModel;
- private final JavaMethodModel simpleMethodModel;
-
- public TemplateDirectiveModelAndSimpleMethodModel( //
- TemplateDirectiveModel templateDirectiveModel, JavaMethodModel simpleMethodModel) {
- this.templateDirectiveModel = templateDirectiveModel;
- this.simpleMethodModel = simpleMethodModel;
- }
-
- @Override
- public TemplateModel execute(List<? extends TemplateModel> args) throws TemplateModelException {
- return simpleMethodModel.execute(args);
- }
-
- @Override
- public Object[] explainTypeError(Class[] expectedClasses) {
- return simpleMethodModel.explainTypeError(expectedClasses);
- }
-
- @Override
- public void execute(TemplateModel[] args, CallPlace callPlace, Writer out, Environment env)
- throws TemplateException, IOException {
- templateDirectiveModel.execute(args, callPlace, out, env);
- }
-
- @Override
- public ArgumentArrayLayout getArgumentArrayLayout() {
- return templateDirectiveModel.getArgumentArrayLayout();
- }
-
- @Override
- public boolean isNestedContentSupported() {
- return templateDirectiveModel.isNestedContentSupported();
- }
- }
-
- private static class TemplateDirectiveModelAndTemplateMethodModelEx extends CombinedTemplateModel
- implements TemplateDirectiveModel, TemplateMethodModel {
-
- private final TemplateDirectiveModel templateDirectiveModel;
- private final TemplateMethodModel templateMethodModelEx;
-
- public TemplateDirectiveModelAndTemplateMethodModelEx( //
- TemplateDirectiveModel templateDirectiveModel, TemplateMethodModel templateMethodModelEx) {
- this.templateDirectiveModel = templateDirectiveModel;
- this.templateMethodModelEx = templateMethodModelEx;
- }
-
- @Override
- public TemplateModel execute(List<? extends TemplateModel> args) throws TemplateException {
- return templateMethodModelEx.execute(args);
- }
-
- @Override
- public void execute(TemplateModel[] args, CallPlace callPlace, Writer out, Environment env)
- throws TemplateException, IOException {
- templateDirectiveModel.execute(args, callPlace, out, env);
- }
-
- @Override
- public ArgumentArrayLayout getArgumentArrayLayout() {
- return templateDirectiveModel.getArgumentArrayLayout();
- }
-
- @Override
- public boolean isNestedContentSupported() {
- return templateDirectiveModel.isNestedContentSupported();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/8d5263f2/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/JspTagModelBase.java
----------------------------------------------------------------------
diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/JspTagModelBase.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/JspTagModelBase.java
index 99e8272..01418ba 100644
--- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/JspTagModelBase.java
+++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/JspTagModelBase.java
@@ -29,10 +29,16 @@ import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.DynamicAttributes;
+import javax.servlet.jsp.tagext.JspTag;
+
import org.apache.freemarker.core.Template;
+import org.apache.freemarker.core.TemplateException;
import org.apache.freemarker.core._DelayedJQuote;
import org.apache.freemarker.core._DelayedShortClassName;
import org.apache.freemarker.core._ErrorDescriptionBuilder;
+import org.apache.freemarker.core._MiscTemplateException;
import org.apache.freemarker.core._TemplateModelException;
import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper;
import org.apache.freemarker.core.model.TemplateHashModelEx2;
@@ -45,7 +51,6 @@ import org.apache.freemarker.servlet.jsp.SimpleTagDirectiveModel.TemplateExcepti
class JspTagModelBase {
protected final String tagName;
private final Class tagClass;
- private final Method dynaSetter;
private final Map propertySetters = new HashMap();
protected JspTagModelBase(String tagName, Class tagClass) throws IntrospectionException {
@@ -59,24 +64,14 @@ class JspTagModelBase {
propertySetters.put(pd.getName(), m);
}
}
- // Check to see if the tag implements the JSP2.0 DynamicAttributes
- // interface, to allow setting of arbitrary attributes
- Method dynaSetter;
- try {
- dynaSetter = tagClass.getMethod("setDynamicAttribute",
- String.class, String.class, Object.class);
- } catch (NoSuchMethodException nsme) {
- dynaSetter = null;
- }
- this.dynaSetter = dynaSetter;
}
Object getTagInstance() throws IllegalAccessException, InstantiationException {
return tagClass.newInstance();
}
- void setupTag(Object tag, TemplateHashModelEx2 args, ObjectWrapperAndUnwrapper wrapper)
- throws TemplateModelException,
+ void setupTag(JspTag tag, TemplateHashModelEx2 args, ObjectWrapperAndUnwrapper wrapper)
+ throws TemplateException,
InvocationTargetException,
IllegalAccessException {
if (args != null && !args.isEmpty()) {
@@ -88,12 +83,18 @@ class JspTagModelBase {
final String paramName = ((TemplateScalarModel) entry.getKey()).getAsString();
Method setterMethod = (Method) propertySetters.get(paramName);
if (setterMethod == null) {
- if (dynaSetter == null) {
+ if (tag instanceof DynamicAttributes) {
+ try {
+ ((DynamicAttributes) tag).setDynamicAttribute(null, paramName, argArray[0]);
+ } catch (JspException e) {
+ throw new _MiscTemplateException(
+ "Failed to set JSP tag dynamic attribute ", new _DelayedJQuote(paramName), ".",
+ e);
+ }
+ } else {
throw new TemplateModelException("Unknown property "
+ _StringUtil.jQuote(paramName.toString())
+ " on instance of " + tagClass.getName());
- } else {
- dynaSetter.invoke(tag, null, paramName, argArray[0]);
}
} else {
if (arg instanceof BigDecimal) {
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/8d5263f2/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/SimpleTagDirectiveModel.java
----------------------------------------------------------------------
diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/SimpleTagDirectiveModel.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/SimpleTagDirectiveModel.java
index 6035a1f..b4f4a15 100644
--- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/SimpleTagDirectiveModel.java
+++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/SimpleTagDirectiveModel.java
@@ -107,7 +107,7 @@ class SimpleTagDirectiveModel extends JspTagModelBase implements TemplateDirecti
}
@Override
- public ArgumentArrayLayout getArgumentArrayLayout() {
+ public ArgumentArrayLayout getDirectiveArgumentArrayLayout() {
return ARGS_LAYOUT;
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/8d5263f2/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TagDirectiveModel.java
----------------------------------------------------------------------
diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TagDirectiveModel.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TagDirectiveModel.java
index ff5b435..15db96d 100644
--- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TagDirectiveModel.java
+++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TagDirectiveModel.java
@@ -117,7 +117,7 @@ class TagDirectiveModel extends JspTagModelBase implements TemplateDirectiveMode
}
@Override
- public ArgumentArrayLayout getArgumentArrayLayout() {
+ public ArgumentArrayLayout getDirectiveArgumentArrayLayout() {
return ARGS_LAYOUT;
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/8d5263f2/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
----------------------------------------------------------------------
diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
index 98634bd..a1525af 100644
--- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
+++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
@@ -65,8 +65,8 @@ import org.apache.freemarker.core.ConfigurationException;
import org.apache.freemarker.core.Environment;
import org.apache.freemarker.core.model.ObjectWrapper;
import org.apache.freemarker.core.model.TemplateDirectiveModel;
+import org.apache.freemarker.core.model.TemplateFunctionModel;
import org.apache.freemarker.core.model.TemplateHashModel;
-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.DefaultObjectWrapper;
@@ -233,7 +233,7 @@ public class TaglibFactory implements TemplateHashModel {
*
* @return a {@link TemplateHashModel} representing the JSP taglib. Each element of this hash represents a single
* custom tag or EL function from the library, implemented as a {@link TemplateDirectiveModel} or
- * {@link TemplateMethodModel}, respectively.
+ * {@link TemplateFunctionModel}, respectively.
*/
@Override
public TemplateModel get(final String taglibUri) throws TemplateModelException {
@@ -1759,7 +1759,7 @@ public class TaglibFactory implements TemplateHashModel {
final Class<?> tagClass = resoveClassFromTLD(tagClassCData, "custom tag", tagNameCData);
- final TemplateModel customTagModel;
+ final TemplateDirectiveModel customTagModel;
try {
if (Tag.class.isAssignableFrom(tagClass)) {
customTagModel = new TagDirectiveModel(tagNameCData, tagClass);
@@ -1775,9 +1775,10 @@ public class TaglibFactory implements TemplateHashModel {
TemplateModel replacedTagOrFunction = tagsAndFunctions.put(tagNameCData, customTagModel);
if (replacedTagOrFunction != null) {
- if (CustomTagAndELFunctionCombiner.canBeCombinedAsELFunction(replacedTagOrFunction)) {
- tagsAndFunctions.put(tagNameCData, CustomTagAndELFunctionCombiner.combine(
- customTagModel, (TemplateMethodModel) replacedTagOrFunction));
+ if (replacedTagOrFunction instanceof TemplateFunctionModel
+ && !(replacedTagOrFunction instanceof TemplateDirectiveModelAndTemplateFunctionModel)) {
+ tagsAndFunctions.put(tagNameCData, new TemplateDirectiveModelAndTemplateFunctionModel(
+ customTagModel, (TemplateFunctionModel) replacedTagOrFunction));
} else {
if (LOG.isWarnEnabled()) {
LOG.warn("TLD contains multiple tags with name " + _StringUtil.jQuote(tagNameCData)
@@ -1816,7 +1817,7 @@ public class TaglibFactory implements TemplateHashModel {
locator);
}
- final TemplateMethodModel elFunctionModel;
+ final TemplateFunctionModel elFunctionModel;
try {
elFunctionModel = defaultObjectWrapper.wrap(null, functionMethod);
} catch (Exception e) {
@@ -1827,9 +1828,10 @@ public class TaglibFactory implements TemplateHashModel {
TemplateModel replacedTagOrFunction = tagsAndFunctions.put(functionNameCData, elFunctionModel);
if (replacedTagOrFunction != null) {
- if (CustomTagAndELFunctionCombiner.canBeCombinedAsCustomTag(replacedTagOrFunction)) {
- tagsAndFunctions.put(functionNameCData, CustomTagAndELFunctionCombiner.combine(
- replacedTagOrFunction, elFunctionModel));
+ if (replacedTagOrFunction instanceof TemplateDirectiveModel
+ && !(replacedTagOrFunction instanceof TemplateDirectiveModelAndTemplateFunctionModel)) {
+ tagsAndFunctions.put(functionNameCData, new TemplateDirectiveModelAndTemplateFunctionModel(
+ (TemplateDirectiveModel) replacedTagOrFunction, elFunctionModel));
} else {
if (LOG.isWarnEnabled()) {
LOG.warn("TLD contains multiple functions with name "
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/8d5263f2/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TemplateDirectiveModelAndTemplateFunctionModel.java
----------------------------------------------------------------------
diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TemplateDirectiveModelAndTemplateFunctionModel.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TemplateDirectiveModelAndTemplateFunctionModel.java
new file mode 100644
index 0000000..e4d74d1
--- /dev/null
+++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TemplateDirectiveModelAndTemplateFunctionModel.java
@@ -0,0 +1,77 @@
+/*
+ * 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.servlet.jsp;
+
+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.model.TemplateDirectiveModel;
+import org.apache.freemarker.core.model.TemplateFunctionModel;
+import org.apache.freemarker.core.model.TemplateModel;
+
+/**
+ * Used when a custom JSP tag and an EL function uses the same name in a tag library, to invoke a single FTL value from
+ * the two. As FTL as no separate namespace for "tags" and functions, both aspect has to be implemented by the same
+ * value.
+ */
+class TemplateDirectiveModelAndTemplateFunctionModel
+ implements TemplateDirectiveModel, TemplateFunctionModel {
+
+ private final TemplateDirectiveModel templateDirectiveModel;
+ private final TemplateFunctionModel templateFunctionModel;
+
+ TemplateDirectiveModelAndTemplateFunctionModel( //
+ TemplateDirectiveModel templateDirectiveModel, TemplateFunctionModel templateMethodModelEx) {
+ this.templateDirectiveModel = templateDirectiveModel;
+ this.templateFunctionModel = templateMethodModelEx;
+ }
+
+ @Override
+ public void execute(TemplateModel[] args, CallPlace callPlace, Writer out, Environment env)
+ throws TemplateException, IOException {
+ templateDirectiveModel.execute(args, callPlace, out, env);
+ }
+
+ @Override
+ public ArgumentArrayLayout getDirectiveArgumentArrayLayout() {
+ return templateDirectiveModel.getDirectiveArgumentArrayLayout();
+ }
+
+ @Override
+ public boolean isNestedContentSupported() {
+ return templateDirectiveModel.isNestedContentSupported();
+ }
+
+ @Override
+ public ArgumentArrayLayout getFunctionArgumentArrayLayout() {
+ return templateFunctionModel.getFunctionArgumentArrayLayout();
+ }
+
+ @Override
+ public TemplateModel execute(TemplateModel[] args, CallPlace callPlace, Environment env)
+ throws TemplateException {
+ return templateFunctionModel.execute(args, callPlace, env);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/8d5263f2/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/TLDParsingTest.java
----------------------------------------------------------------------
diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/TLDParsingTest.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/TLDParsingTest.java
index 43285c5..3cc6993 100644
--- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/TLDParsingTest.java
+++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/TLDParsingTest.java
@@ -23,7 +23,6 @@ import static org.junit.Assert.*;
import java.io.InputStream;
import java.net.URL;
-import java.util.Arrays;
import java.util.Map;
import javax.servlet.ServletContextEvent;
@@ -33,9 +32,11 @@ import javax.servlet.jsp.tagext.TagSupport;
import javax.xml.parsers.SAXParserFactory;
import org.apache.freemarker.core.Configuration;
-import org.apache.freemarker.core.model.TemplateMethodModel;
+import org.apache.freemarker.core.NonTemplateCallPlace;
+import org.apache.freemarker.core.model.TemplateModel;
import org.apache.freemarker.core.model.TemplateScalarModel;
import org.apache.freemarker.core.model.impl.DefaultObjectWrapper;
+import org.apache.freemarker.core.model.impl.JavaMethodModel;
import org.apache.freemarker.core.model.impl.SimpleScalar;
import org.junit.Before;
import org.junit.Test;
@@ -74,7 +75,7 @@ public class TLDParsingTest {
assertEquals(1, tldParser.getListeners().size());
assertTrue(tldParser.getListeners().get(0) instanceof ExampleContextListener);
- Map tagsAndFunctions = tldParser.getTagsAndFunctions();
+ Map<String, TemplateModel> tagsAndFunctions = tldParser.getTagsAndFunctions();
assertEquals(4, tagsAndFunctions.size());
JspTagModelBase tag = (JspTagModelBase) tagsAndFunctions.get("setStringAttributeTag");
@@ -82,13 +83,15 @@ public class TLDParsingTest {
tag = (JspTagModelBase) tagsAndFunctions.get("setStringAttributeTag2");
assertNotNull(tag);
- TemplateMethodModel function = (TemplateMethodModel) tagsAndFunctions.get("toUpperCase");
+ JavaMethodModel function = (JavaMethodModel) tagsAndFunctions.get("toUpperCase");
assertNotNull(function);
- TemplateScalarModel result = (TemplateScalarModel) function.execute(Arrays.asList(new SimpleScalar("abc")));
+ TemplateScalarModel result = (TemplateScalarModel) function.execute(
+ new TemplateModel[] { new SimpleScalar("abc") }, NonTemplateCallPlace.INSTANCE);
assertEquals("ABC", result.getAsString());
- function = (TemplateMethodModel) tagsAndFunctions.get("toUpperCase2");
+ function = (JavaMethodModel) tagsAndFunctions.get("toUpperCase2");
assertNotNull(function);
- result = (TemplateScalarModel) function.execute(Arrays.asList(new SimpleScalar("abc")));
+ result = (TemplateScalarModel) function.execute(
+ new TemplateModel[] { new SimpleScalar("abc") }, NonTemplateCallPlace.INSTANCE);
assertEquals("ABC", result.getAsString());
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/8d5263f2/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertDirective.java
----------------------------------------------------------------------
diff --git a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertDirective.java b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertDirective.java
index 2e7ecfc..eb6930b 100644
--- a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertDirective.java
+++ b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertDirective.java
@@ -56,7 +56,7 @@ public class AssertDirective implements TemplateDirectiveModel {
}
@Override
- public ArgumentArrayLayout getArgumentArrayLayout() {
+ public ArgumentArrayLayout getDirectiveArgumentArrayLayout() {
return ArgumentArrayLayout.SINGLE_POSITIONAL_PARAMETER;
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/8d5263f2/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertEqualsDirective.java
----------------------------------------------------------------------
diff --git a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertEqualsDirective.java b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertEqualsDirective.java
index 6734fbc..51baeb4 100644
--- a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertEqualsDirective.java
+++ b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertEqualsDirective.java
@@ -78,7 +78,7 @@ public class AssertEqualsDirective implements TemplateDirectiveModel {
}
@Override
- public ArgumentArrayLayout getArgumentArrayLayout() {
+ public ArgumentArrayLayout getDirectiveArgumentArrayLayout() {
return ARGS_LAYOUT;
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/8d5263f2/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertFailsDirective.java
----------------------------------------------------------------------
diff --git a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertFailsDirective.java b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertFailsDirective.java
index e8120fc..6fe1505 100644
--- a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertFailsDirective.java
+++ b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertFailsDirective.java
@@ -136,7 +136,7 @@ public class AssertFailsDirective implements TemplateDirectiveModel {
}
@Override
- public ArgumentArrayLayout getArgumentArrayLayout() {
+ public ArgumentArrayLayout getDirectiveArgumentArrayLayout() {
return ARGS_LAYOUT;
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/8d5263f2/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/NoOutputDirective.java
----------------------------------------------------------------------
diff --git a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/NoOutputDirective.java b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/NoOutputDirective.java
index a8a7bee..1e33dab 100644
--- a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/NoOutputDirective.java
+++ b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/NoOutputDirective.java
@@ -45,7 +45,7 @@ public class NoOutputDirective implements TemplateDirectiveModel {
}
@Override
- public ArgumentArrayLayout getArgumentArrayLayout() {
+ public ArgumentArrayLayout getDirectiveArgumentArrayLayout() {
return ArgumentArrayLayout.PARAMETERLESS;
}