Return-Path: X-Original-To: apmail-tomcat-dev-archive@www.apache.org Delivered-To: apmail-tomcat-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 490F41037A for ; Sun, 14 Jul 2013 21:21:06 +0000 (UTC) Received: (qmail 26462 invoked by uid 500); 14 Jul 2013 21:21:05 -0000 Delivered-To: apmail-tomcat-dev-archive@tomcat.apache.org Received: (qmail 26395 invoked by uid 500); 14 Jul 2013 21:21:05 -0000 Mailing-List: contact dev-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Developers List" Delivered-To: mailing list dev@tomcat.apache.org Received: (qmail 26386 invoked by uid 99); 14 Jul 2013 21:21:05 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 14 Jul 2013 21:21:05 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 14 Jul 2013 21:21:04 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 1ECF1238888A for ; Sun, 14 Jul 2013 21:20:44 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1503060 - in /tomcat/trunk: java/org/apache/el/parser/AstLambdaExpression.java java/org/apache/el/parser/AstLambdaExpressionOrInvocation.java test/org/apache/el/parser/TestAstLambdaExpression.java Date: Sun, 14 Jul 2013 21:20:43 -0000 To: dev@tomcat.apache.org From: markt@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20130714212044.1ECF1238888A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: markt Date: Sun Jul 14 21:20:43 2013 New Revision: 1503060 URL: http://svn.apache.org/r1503060 Log: More lambda expression implementation. Handle the case of an expression without any formal parameters. Modified: tomcat/trunk/java/org/apache/el/parser/AstLambdaExpression.java tomcat/trunk/java/org/apache/el/parser/AstLambdaExpressionOrInvocation.java tomcat/trunk/test/org/apache/el/parser/TestAstLambdaExpression.java 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=1503060&r1=1503059&r2=1503060&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/el/parser/AstLambdaExpression.java (original) +++ tomcat/trunk/java/org/apache/el/parser/AstLambdaExpression.java Sun Jul 14 21:20:43 2013 @@ -40,7 +40,10 @@ public class AstLambdaExpression extends AstLambdaParameters formalParameters = (AstLambdaParameters) children[0]; - int paramCount = formalParameters.children.length; + int paramCount = 0; + if (formalParameters.children != null) { + paramCount = formalParameters.children.length; + } int argCount = 0; if (paramValues != null) { argCount = paramValues.length; @@ -52,7 +55,7 @@ public class AstLambdaExpression extends // Build the argument map Map lambdaArgumnents = new HashMap<>(); - for (int i = 0; i < formalParameters.children.length; i++) { + for (int i = 0; i < paramCount; i++) { lambdaArgumnents.put(formalParameters.children[i].getImage(), paramValues[i]); } Modified: tomcat/trunk/java/org/apache/el/parser/AstLambdaExpressionOrInvocation.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstLambdaExpressionOrInvocation.java?rev=1503060&r1=1503059&r2=1503060&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/el/parser/AstLambdaExpressionOrInvocation.java (original) +++ tomcat/trunk/java/org/apache/el/parser/AstLambdaExpressionOrInvocation.java Sun Jul 14 21:20:43 2013 @@ -31,19 +31,17 @@ public class AstLambdaExpressionOrInvoca @Override public Object getValue(EvaluationContext ctx) throws ELException { - if (children.length == 2) { - AstLambdaExpression lambdaExpression = - (AstLambdaExpression) children[0]; - - - Object[] args = - ((AstMethodParameters) children[1]).getParameters(ctx); + AstLambdaExpression lambdaExpression = + (AstLambdaExpression) children[0]; - return lambdaExpression.invoke(ctx, null, args); + Object[] args; + if (children.length == 2) { + args = ((AstMethodParameters) children[1]).getParameters(ctx); + } else { + // No parameters - just the expression + args = null; } - - // TODO Auto-generated method stub - return super.getValue(ctx); + return lambdaExpression.invoke(ctx, null, args); } } /* JavaCC - OriginalChecksum=6b3dd15b31540457a41bd55974037ed9 (do not edit this line) */ Modified: tomcat/trunk/test/org/apache/el/parser/TestAstLambdaExpression.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/parser/TestAstLambdaExpression.java?rev=1503060&r1=1503059&r2=1503060&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/el/parser/TestAstLambdaExpression.java (original) +++ tomcat/trunk/test/org/apache/el/parser/TestAstLambdaExpression.java Sun Jul 14 21:20:43 2013 @@ -29,4 +29,20 @@ public class TestAstLambdaExpression { Object result = processor.getValue("(x->x+1)(1)", Integer.class); Assert.assertEquals(Integer.valueOf(2), result); } + + + @Test + public void testSpec02() { + ELProcessor processor = new ELProcessor(); + Object result = processor.getValue("((x,y)->x+y)(1,2)", Integer.class); + Assert.assertEquals(Integer.valueOf(3), result); + } + + + @Test + public void testSpec03() { + ELProcessor processor = new ELProcessor(); + Object result = processor.getValue("(()->64)", Integer.class); + Assert.assertEquals(Integer.valueOf(64), result); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org For additional commands, e-mail: dev-help@tomcat.apache.org