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 2019/02/03 22:40:58 UTC

[freemarker] branch 3 updated: (Forward ported from 2.3-gae: Some code cleanup around BuiltInWithParseTimeParameters.)

This is an automated email from the ASF dual-hosted git repository.

ddekany pushed a commit to branch 3
in repository https://gitbox.apache.org/repos/asf/freemarker.git


The following commit(s) were added to refs/heads/3 by this push:
     new 5786e60  (Forward ported from 2.3-gae: Some code cleanup around BuiltInWithParseTimeParameters.)
5786e60 is described below

commit 5786e601d7990d8a7bb7190d3d8dd4196f1acfc9
Author: ddekany <dd...@apache.org>
AuthorDate: Sun Feb 3 17:15:08 2019 +0100

    (Forward ported from 2.3-gae: Some code cleanup around BuiltInWithParseTimeParameters.)
---
 .../org/apache/freemarker/core/ast-builtins.ast    |  4 +--
 .../org/apache/freemarker/core/ASTExpBuiltIn.java  |  4 +--
 .../core/BuiltInWithParseTimeParameters.java       | 12 +++++---
 ...ters.java => BuiltInsWithLazyConditionals.java} | 36 +++++++++++-----------
 freemarker-core/src/main/javacc/FTL.jj             |  2 +-
 5 files changed, 31 insertions(+), 27 deletions(-)

diff --git a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/ast-builtins.ast b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/ast-builtins.ast
index b1d073e..aac9f4b 100644
--- a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/ast-builtins.ast
+++ b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/ast-builtins.ast
@@ -41,7 +41,7 @@
     #text  // o.a.f.c.ASTStaticText
         - content: "\n"  // String
     ${...}  // o.a.f.c.ASTInterpolation
-        - content: ?then(...)  // o.a.f.c.BuiltInsWithParseTimeParameters$then_BI
+        - content: ?then(...)  // o.a.f.c.BuiltInsWithLazyConditionals$then_BI
             - left-hand operand: x  // o.a.f.c.ASTExpVariable
             - right-hand operand: "then"  // String
             - argument value: "y"  // o.a.f.c.ASTExpStringLiteral
@@ -49,7 +49,7 @@
     #text  // o.a.f.c.ASTStaticText
         - content: "\n"  // String
     ${...}  // o.a.f.c.ASTInterpolation
-        - content: ?switch(...)  // o.a.f.c.BuiltInsWithParseTimeParameters$switch_BI
+        - content: ?switch(...)  // o.a.f.c.BuiltInsWithLazyConditionals$switch_BI
             - left-hand operand: x  // o.a.f.c.ASTExpVariable
             - right-hand operand: "switch"  // String
             - argument value: 1  // o.a.f.c.ASTExpNumberLiteral
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltIn.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltIn.java
index 958be29..4102f3e 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltIn.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltIn.java
@@ -256,11 +256,11 @@ abstract class ASTExpBuiltIn extends ASTExpression implements Cloneable {
         putBI("sortBy", new sort_byBI());
         putBI("sort", new sortBI());
         putBI("split", new BuiltInsForStringsBasic.split_BI());
-        putBI("switch", new BuiltInsWithParseTimeParameters.switch_BI());
+        putBI("switch", new BuiltInsWithLazyConditionals.switch_BI());
         putBI("startsWith", new BuiltInsForStringsBasic.starts_withBI());
         putBI("string", new BuiltInsForMultipleTypes.stringBI());
         putBI("substring", new BuiltInsForStringsBasic.substringBI());
-        putBI("then", new BuiltInsWithParseTimeParameters.then_BI());
+        putBI("then", new BuiltInsWithLazyConditionals.then_BI());
         putBI("time", new BuiltInsForMultipleTypes.dateBI(TemplateDateModel.TIME));
         putBI("timeIfUnknown", new BuiltInsForDates.dateType_if_unknownBI(TemplateDateModel.TIME));
         putBI("trim", new BuiltInsForStringsBasic.trimBI());
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInWithParseTimeParameters.java b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInWithParseTimeParameters.java
index 31aeb00..3766978 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInWithParseTimeParameters.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInWithParseTimeParameters.java
@@ -21,9 +21,13 @@ package org.apache.freemarker.core;
 import java.util.List;
 
 
+/**
+ * Built-in like {@code ?foo(params)}, where the parameter list must be present on parsing time, so that it can
+ * be processed on parsing time.
+ */
 abstract class BuiltInWithParseTimeParameters extends SpecialBuiltIn {
 
-    abstract void bindToParameters(List/*<ASTExpression>*/ parameters, Token openParen, Token closeParen)
+    abstract void bindToParameters(List<ASTExpression> parameters, Token openParen, Token closeParen)
             throws ParseException;
 
     @Override
@@ -33,13 +37,13 @@ abstract class BuiltInWithParseTimeParameters extends SpecialBuiltIn {
         buf.append(super.getCanonicalForm());
         
         buf.append("(");
-        List/*<ASTExpression>*/args = getArgumentsAsList();
+        List<ASTExpression>args = getArgumentsAsList();
         int size = args.size();
         for (int i = 0; i < size; i++) {
             if (i != 0) {
                 buf.append(", ");
             }
-            ASTExpression arg = (ASTExpression) args.get(i);
+            ASTExpression arg = args.get(i);
             buf.append(arg.getCanonicalForm());
         }
         buf.append(")");
@@ -97,7 +101,7 @@ abstract class BuiltInWithParseTimeParameters extends SpecialBuiltIn {
         return clone;
     }
 
-    protected abstract List getArgumentsAsList();
+    protected abstract List<ASTExpression> getArgumentsAsList();
     
     protected abstract int getArgumentsCount();
 
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsWithParseTimeParameters.java b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsWithLazyConditionals.java
similarity index 80%
rename from freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsWithParseTimeParameters.java
rename to freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsWithLazyConditionals.java
index 0aa7338..757d901 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsWithParseTimeParameters.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsWithLazyConditionals.java
@@ -24,7 +24,7 @@ import java.util.List;
 import org.apache.freemarker.core.model.TemplateModel;
 
 
-final class BuiltInsWithParseTimeParameters {
+final class BuiltInsWithLazyConditionals {
     
     /**
      * Behaves similarly to the ternary operator of Java.
@@ -41,12 +41,12 @@ final class BuiltInsWithParseTimeParameters {
         }
 
         @Override
-        void bindToParameters(List parameters, Token openParen, Token closeParen) throws ParseException {
+        void bindToParameters(List<ASTExpression> parameters, Token openParen, Token closeParen) throws ParseException {
             if (parameters.size() != 2) {
                 throw newArgumentCountException("requires exactly 2", openParen, closeParen);
             }
-            whenTrueExp = (ASTExpression) parameters.get(0);
-            whenFalseExp = (ASTExpression) parameters.get(1);
+            whenTrueExp = parameters.get(0);
+            whenFalseExp = parameters.get(1);
         }
         
         @Override
@@ -64,8 +64,8 @@ final class BuiltInsWithParseTimeParameters {
         }
         
         @Override
-        protected List getArgumentsAsList() {
-            ArrayList args = new ArrayList(2);
+        protected List<ASTExpression> getArgumentsAsList() {
+            ArrayList<ASTExpression> args = new ArrayList<>(2);
             args.add(whenTrueExp);
             args.add(whenFalseExp);
             return args;
@@ -81,16 +81,16 @@ final class BuiltInsWithParseTimeParameters {
         
     }
     
-    private BuiltInsWithParseTimeParameters() {
+    private BuiltInsWithLazyConditionals() {
         // Not to be instantiated
     }
 
     static class switch_BI extends BuiltInWithParseTimeParameters {
         
-        private List/*<ASTExpression>*/ parameters;
+        private List<ASTExpression> parameters;
 
         @Override
-        void bindToParameters(List parameters, Token openParen, Token closeParen) throws ParseException {
+        void bindToParameters(List<ASTExpression> parameters, Token openParen, Token closeParen) throws ParseException {
             if (parameters.size() < 2) {
                 throw newArgumentCountException("must have at least 2", openParen, closeParen);
             }
@@ -98,7 +98,7 @@ final class BuiltInsWithParseTimeParameters {
         }
 
         @Override
-        protected List getArgumentsAsList() {
+        protected List<ASTExpression> getArgumentsAsList() {
             return parameters;
         }
 
@@ -109,15 +109,15 @@ final class BuiltInsWithParseTimeParameters {
 
         @Override
         protected ASTExpression getArgumentParameterValue(int argIdx) {
-            return (ASTExpression) parameters.get(argIdx);
+            return parameters.get(argIdx);
         }
 
         @Override
         protected void cloneArguments(ASTExpression clone, String replacedIdentifier, ASTExpression replacement,
                 ReplacemenetState replacementState) {
-            ArrayList parametersClone = new ArrayList(parameters.size());
-            for (int i = 0; i < parameters.size(); i++) {
-                parametersClone.add(((ASTExpression) parameters.get(i))
+            ArrayList<ASTExpression> parametersClone = new ArrayList<>(parameters.size());
+            for (ASTExpression parameter : parameters) {
+                parametersClone.add(parameter
                         .deepCloneWithIdentifierReplaced(replacedIdentifier, replacement, replacementState));
             }
             ((switch_BI) clone).parameters = parametersClone;
@@ -127,10 +127,10 @@ final class BuiltInsWithParseTimeParameters {
         TemplateModel _eval(Environment env) throws TemplateException {
             TemplateModel targetValue = target.evalToNonMissing(env);
             
-            List parameters = this.parameters;
+            List<ASTExpression> parameters = this.parameters;
             int paramCnt = parameters.size();
             for (int i = 0; i + 1 < paramCnt; i += 2) {
-                ASTExpression caseExp = (ASTExpression) parameters.get(i);
+                ASTExpression caseExp = parameters.get(i);
                 TemplateModel caseValue = caseExp.evalToNonMissing(env);
                 if (_EvalUtils.compare(
                         targetValue, target,
@@ -139,7 +139,7 @@ final class BuiltInsWithParseTimeParameters {
                         this, true,
                         false, false, false,
                         env)) {
-                    return ((ASTExpression) parameters.get(i + 1)).evalToNonMissing(env);
+                    return parameters.get(i + 1).evalToNonMissing(env);
                 }
             }
             
@@ -149,7 +149,7 @@ final class BuiltInsWithParseTimeParameters {
                         + "case parameters, and there was no default value parameter (an additional last parameter) "
                         + "eithter. ");
             }
-            return ((ASTExpression) parameters.get(paramCnt - 1)).evalToNonMissing(env);
+            return parameters.get(paramCnt - 1).evalToNonMissing(env);
         }
         
     }
diff --git a/freemarker-core/src/main/javacc/FTL.jj b/freemarker-core/src/main/javacc/FTL.jj
index 11e7ed2..837d769 100644
--- a/freemarker-core/src/main/javacc/FTL.jj
+++ b/freemarker-core/src/main/javacc/FTL.jj
@@ -1901,7 +1901,7 @@ ASTExpression BuiltIn(ASTExpression lhoExp) :
 {
     Token t = null;
     ASTExpBuiltIn result;
-    ArrayList/*<ASTExpression>*/ args = null;
+    ArrayList<ASTExpression> args = null;
     Token openParen;
     Token closeParen;
 }