Author: rahul Date: Mon Aug 10 20:58:32 2009 New Revision: 802926 URL: http://svn.apache.org/viewvc?rev=802926&view=rev Log: Change foreach syntax -- now aligned with enhanced for. Add note that 1.1 syntax is deprecated. Based on patch by Henri Biestro <hbiestro at gmail dot com>. JEXL-82
Modified: commons/proper/jexl/branches/2.0/src/main/java/org/apache/commons/jexl/parser/Parser.jjt commons/proper/jexl/branches/2.0/src/test/java/org/apache/commons/jexl/ForEachTest.java commons/proper/jexl/branches/2.0/xdocs/reference/syntax.xml Modified: commons/proper/jexl/branches/2.0/src/main/java/org/apache/commons/jexl/parser/Parser.jjt URL: http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0/src/main/java/org/apache/commons/jexl/parser/Parser.jjt?rev=802926&r1=802925&r2=802926&view=diff ============================================================================== --- commons/proper/jexl/branches/2.0/src/main/java/org/apache/commons/jexl/parser/Parser.jjt (original) +++ commons/proper/jexl/branches/2.0/src/main/java/org/apache/commons/jexl/parser/Parser.jjt Mon Aug 10 20:58:32 2009 @@ -415,6 +415,8 @@ void ForeachStatement() : {} { + "for" "(" Reference() ":" Reference() ")" Statement() +| "foreach" "(" Reference() "in" Reference() ")" Statement() } Modified: commons/proper/jexl/branches/2.0/src/test/java/org/apache/commons/jexl/ForEachTest.java URL: http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0/src/test/java/org/apache/commons/jexl/ForEachTest.java?rev=802926&r1=802925&r2=802926&view=diff ============================================================================== --- commons/proper/jexl/branches/2.0/src/test/java/org/apache/commons/jexl/ForEachTest.java (original) +++ commons/proper/jexl/branches/2.0/src/test/java/org/apache/commons/jexl/ForEachTest.java Mon Aug 10 20:58:32 2009 @@ -36,7 +36,7 @@ } public void testForEachWithEmptyStatement() throws Exception { - Expression e = JEXL.createExpression("foreach (item in list) ;"); + Expression e = JEXL.createExpression("for(item : list) ;"); JexlContext jc = JexlHelper.createContext(); Object o = e.evaluate(jc); @@ -44,7 +44,7 @@ } public void testForEachWithEmptyList() throws Exception { - Expression e = JEXL.createExpression("foreach (item in list) 1+1"); + Expression e = JEXL.createExpression("for(item : list) 1+1"); JexlContext jc = JexlHelper.createContext(); Object o = e.evaluate(jc); @@ -52,7 +52,7 @@ } public void testForEachWithArray() throws Exception { - Expression e = JEXL.createExpression("foreach (item in list) item"); + Expression e = JEXL.createExpression("for(item : list) item"); JexlContext jc = JexlHelper.createContext(); jc.getVars().put("list", new Object[] {"Hello", "World"}); Object o = e.evaluate(jc); @@ -60,7 +60,7 @@ } public void testForEachWithCollection() throws Exception { - Expression e = JEXL.createExpression("foreach (item in list) item"); + Expression e = JEXL.createExpression("for(item : list) item"); JexlContext jc = JexlHelper.createContext(); jc.getVars().put("list", Arrays.asList(new Object[] {"Hello", "World"})); Object o = e.evaluate(jc); @@ -68,7 +68,7 @@ } public void testForEachWithEnumeration() throws Exception { - Expression e = JEXL.createExpression("foreach (item in list) item"); + Expression e = JEXL.createExpression("for(item : list) item"); JexlContext jc = JexlHelper.createContext(); jc.getVars().put("list", new StringTokenizer("Hello,World", ",")); Object o = e.evaluate(jc); @@ -76,7 +76,7 @@ } public void testForEachWithIterator() throws Exception { - Expression e = JEXL.createExpression("foreach (item in list) item"); + Expression e = JEXL.createExpression("for(item : list) item"); JexlContext jc = JexlHelper.createContext(); jc.getVars().put("list", Arrays.asList(new Object[] {"Hello", "World"}).iterator()); Object o = e.evaluate(jc); @@ -84,7 +84,7 @@ } public void testForEachWithMap() throws Exception { - Expression e = JEXL.createExpression("foreach (item in list) item"); + Expression e = JEXL.createExpression("for(item : list) item"); JexlContext jc = JexlHelper.createContext(); Map<?, ?> map = System.getProperties(); String lastProperty = (String) new ArrayList<Object>(map.values()).get(System.getProperties().size() - 1); @@ -94,7 +94,7 @@ } public void testForEachWithBlock() throws Exception { - Expression e = JEXL.createExpression("foreach (item in list) { x = x + item; }"); + Expression e = JEXL.createExpression("for(item : list) { x = x + item; }"); JexlContext jc = JexlHelper.createContext(); jc.getVars().put("list", new Object[] {"1", "1"}); jc.getVars().put("x", new Integer(0)); @@ -104,7 +104,7 @@ } public void testForEachWithListExpression() throws Exception { - Expression e = JEXL.createExpression("foreach (item in list.keySet()) item"); + Expression e = JEXL.createExpression("for(item : list.keySet()) item"); JexlContext jc = JexlHelper.createContext(); Map<?, ?> map = System.getProperties(); String lastKey = (String) new ArrayList<Object>(map.keySet()).get(System.getProperties().size() - 1); @@ -114,7 +114,7 @@ } public void testForEachWithProperty() throws Exception { - Expression e = JEXL.createExpression("foreach (item in list.cheeseList) item"); + Expression e = JEXL.createExpression("for(item : list.cheeseList) item"); JexlContext jc = JexlHelper.createContext(); jc.getVars().put("list", new Foo()); Object o = e.evaluate(jc); Modified: commons/proper/jexl/branches/2.0/xdocs/reference/syntax.xml URL: http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0/xdocs/reference/syntax.xml?rev=802926&r1=802925&r2=802926&view=diff ============================================================================== --- commons/proper/jexl/branches/2.0/xdocs/reference/syntax.xml (original) +++ commons/proper/jexl/branches/2.0/xdocs/reference/syntax.xml Mon Aug 10 20:58:32 2009 @@ -449,11 +449,12 @@ </td> </tr> <tr> - <td>foreach</td> + <td>for</td> <td> Loop through items of an Array, Collection, Map, Iterator or Enumeration, e.g. - <code>foreach (item in list) { x = x + item; }</code> + <code>for(item : list) { x = x + item; }</code> Where <code>item</code> and <code>list</code> are variables. + The JEXL 1.1 syntax using <code>foreach(item in list)</code> is now <strong>deprecated</strong>. </td> </tr> <tr>