Author: markt Date: Thu Jul 18 14:12:49 2013 New Revision: 1504483 URL: http://svn.apache.org/r1504483 Log: Simplify. Update comments.
Modified: tomcat/trunk/java/org/apache/el/parser/AstFunction.java tomcat/trunk/java/org/apache/el/parser/AstLambdaExpression.java Modified: tomcat/trunk/java/org/apache/el/parser/AstFunction.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstFunction.java?rev=1504483&r1=1504482&r2=1504483&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/el/parser/AstFunction.java (original) +++ tomcat/trunk/java/org/apache/el/parser/AstFunction.java Thu Jul 18 14:12:49 2013 @@ -97,14 +97,11 @@ public final class AstFunction extends S if (obj instanceof LambdaExpression) { // Build arguments int i = 0; - while (obj instanceof LambdaExpression && i < this.jjtGetNumChildren()) { - Node parameters = jjtGetChild(i); - int numArgs = parameters.jjtGetNumChildren(); - Object[] args = new Object[numArgs]; - for (int j = 0; j < numArgs; j++) { - args[j] = parameters.jjtGetChild(j).getValue(ctx); - } - obj = ((LambdaExpression) obj).invoke(args); + while (obj instanceof LambdaExpression && + i < this.jjtGetNumChildren()) { + Node args = jjtGetChild(i); + obj = ((LambdaExpression) obj).invoke( + ((AstMethodParameters) args).getParameters(ctx)); i++; } return obj; Modified: tomcat/trunk/java/org/apache/el/parser/AstLambdaExpression.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstLambdaExpression.java?rev=1504483&r1=1504482&r2=1504483&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/el/parser/AstLambdaExpression.java (original) +++ tomcat/trunk/java/org/apache/el/parser/AstLambdaExpression.java Thu Jul 18 14:12:49 2013 @@ -29,8 +29,6 @@ import org.apache.el.util.MessageFactory public class AstLambdaExpression extends SimpleNode { - private int methodParameterIndex = 0; - public AstLambdaExpression(int id) { super(id); } @@ -76,23 +74,21 @@ public class AstLambdaExpression extends le.setELContext(ctx); if (jjtGetNumChildren() == 2) { - if (formalParameters.isEmpty() && !(parent instanceof AstLambdaExpression)) { - // No formal parameters or method parameters so invoke the - // expression. If this is a nested expression inform the outer - // expression that an invocation has occurred so the correct set - // of method parameters are used for the next invocation. - incMethodParameterIndex(); + if (formalParameters.isEmpty() && + !(parent instanceof AstLambdaExpression)) { + // No formal parameters or method parameters and not a nested + // expression so invoke the expression. return le.invoke(ctx, (Object[]) null); } else { - // Has formal parameters but no method parameters so return the - // expression for later evaluation + // Has formal parameters but no method parameters or is a nested + // expression so return the expression for later evaluation return le; } } // Always have to invoke the outer-most expression - methodParameterIndex = 2; + int methodParameterIndex = 2; Object result = le.invoke(((AstMethodParameters) children[methodParameterIndex]).getParameters(ctx)); methodParameterIndex++; @@ -111,11 +107,6 @@ public class AstLambdaExpression extends * If the inner most expression(s) do not require parameters then a * value will be returned once the outermost expression that does * require a parameter has been evaluated. - * - * When invoking an expression if it has nested expressions that do not - * have formal parameters then they will be evaluated as as part of that - * invocation. In this case the method parameters associated with those - * nested expressions need to be skipped. */ while (result instanceof LambdaExpression && methodParameterIndex < jjtGetNumChildren()) { @@ -128,17 +119,6 @@ public class AstLambdaExpression extends } - public void incMethodParameterIndex() { - Node parent = jjtGetParent(); - if (parent instanceof LambdaExpression) { - // Method parameter index is maintained by outermost lambda - // expressions as that is where the parameters are - ((AstLambdaExpression) parent).incMethodParameterIndex(); - } else { - methodParameterIndex++; - } - } - @Override public String toString() { // Purely for debug purposes. May not be complete or correct. Certainly --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org