Author: lgawron Date: Fri May 6 14:52:29 2005 New Revision: 168667 URL: http://svn.apache.org/viewcvs?rev=168667&view=rev Log: fixed backward incompatibility with old JXTG added another test case for jx:forEach
Modified: cocoon/blocks/unsupported/template/trunk/java/org/apache/cocoon/template/jxtg/expression/JXTExpression.java cocoon/blocks/unsupported/template/trunk/java/org/apache/cocoon/template/jxtg/instruction/StartForEach.java cocoon/blocks/unsupported/template/trunk/test/org/apache/cocoon/template/jxtg/jxForEach-output.xml cocoon/blocks/unsupported/template/trunk/test/org/apache/cocoon/template/jxtg/jxForEach.xml Modified: cocoon/blocks/unsupported/template/trunk/java/org/apache/cocoon/template/jxtg/expression/JXTExpression.java URL: http://svn.apache.org/viewcvs/cocoon/blocks/unsupported/template/trunk/java/org/apache/cocoon/template/jxtg/expression/JXTExpression.java?rev=168667&r1=168666&r2=168667&view=diff ============================================================================== --- cocoon/blocks/unsupported/template/trunk/java/org/apache/cocoon/template/jxtg/expression/JXTExpression.java (original) +++ cocoon/blocks/unsupported/template/trunk/java/org/apache/cocoon/template/jxtg/expression/JXTExpression.java Fri May 6 14:52:29 2005 @@ -58,7 +58,7 @@ public static JXTExpression compileBoolean(String val, String msg, Locator location) throws SAXException { JXTExpression res = compileExpr(val, msg, location); - if (res.getCompiledExpression() == null && res.getRaw() != null) { + if (res != null && res.getCompiledExpression() == null && res.getRaw() != null) { res.setCompiledExpression(Boolean.valueOf(res.getRaw())); } return res; @@ -71,7 +71,7 @@ public static JXTExpression compileInt(String val, String msg, Locator location) throws SAXException { JXTExpression res = compileExpr(val, msg, location); - if (res.getCompiledExpression() == null && res.getRaw() != null) { + if (res != null && res.getCompiledExpression() == null && res.getRaw() != null) { res.setCompiledExpression(Integer.valueOf(res.getRaw())); } return res; @@ -80,7 +80,7 @@ public static JXTExpression compileExpr(String inStr) throws Exception { try { if (inStr == null) { - return new JXTExpression(null, null); + return null; } StringReader in = new StringReader(inStr.trim()); int ch; @@ -257,7 +257,7 @@ ((Expression)this.compiledExpression).setProperty(JXPathExpression.LENIENT, lenient); } - private static final Iterator EMPTY_ITER = new Iterator() { + public static final Iterator EMPTY_ITER = new Iterator() { public boolean hasNext() { return false; } @@ -271,7 +271,7 @@ } }; - private static final Iterator NULL_ITER = new Iterator() { + static public final Iterator NULL_ITER = new Iterator() { public boolean hasNext() { return true; } Modified: cocoon/blocks/unsupported/template/trunk/java/org/apache/cocoon/template/jxtg/instruction/StartForEach.java URL: http://svn.apache.org/viewcvs/cocoon/blocks/unsupported/template/trunk/java/org/apache/cocoon/template/jxtg/instruction/StartForEach.java?rev=168667&r1=168666&r2=168667&view=diff ============================================================================== --- cocoon/blocks/unsupported/template/trunk/java/org/apache/cocoon/template/jxtg/instruction/StartForEach.java (original) +++ cocoon/blocks/unsupported/template/trunk/java/org/apache/cocoon/template/jxtg/instruction/StartForEach.java Fri May 6 14:52:29 2005 @@ -72,6 +72,7 @@ throw new SAXParseException("forEach: only one of \"select\" or \"items\" may be specified", locator, null); } + this.items = JXTExpression.compileExpr(items == null ? select : items, null, locator); } @@ -81,9 +82,11 @@ throws SAXException { Iterator iter = null; int begin, end, step; - String var, varStatus; + String var = null, varStatus = null; try { - iter = this.items.getIterator(expressionContext); + iter = (this.items != null ) + ? this.items.getIterator(expressionContext) + : JXTExpression.NULL_ITER; begin = this.begin == null ? 0 : this.begin.getIntValue(expressionContext); @@ -93,13 +96,12 @@ step = this.step == null ? 1 : this.step.getIntValue(expressionContext); + + if ( this.var != null ) + var = this.var.getStringValue(expressionContext); - // FIXME: why is this needed? - if ( step == 0 ) - step = 1; - - var = this.var.getStringValue(expressionContext); - varStatus = this.varStatus.getStringValue(expressionContext); + if ( this.varStatus != null ) + varStatus = this.varStatus.getStringValue(expressionContext); } catch (Exception exc) { throw new SAXParseException(exc.getMessage(), getLocation(), exc); Modified: cocoon/blocks/unsupported/template/trunk/test/org/apache/cocoon/template/jxtg/jxForEach-output.xml URL: http://svn.apache.org/viewcvs/cocoon/blocks/unsupported/template/trunk/test/org/apache/cocoon/template/jxtg/jxForEach-output.xml?rev=168667&r1=168666&r2=168667&view=diff ============================================================================== --- cocoon/blocks/unsupported/template/trunk/test/org/apache/cocoon/template/jxtg/jxForEach-output.xml (original) +++ cocoon/blocks/unsupported/template/trunk/test/org/apache/cocoon/template/jxtg/jxForEach-output.xml Fri May 6 14:52:29 2005 @@ -4,4 +4,12 @@ <forEach>one</forEach> <forEach>two</forEach> <forEach>three</forEach> + + <loop> + <forEach>1</forEach> + <forEach>2</forEach> + <forEach>3</forEach> + <forEach>4</forEach> + <forEach>5</forEach> + </loop> </root> Modified: cocoon/blocks/unsupported/template/trunk/test/org/apache/cocoon/template/jxtg/jxForEach.xml URL: http://svn.apache.org/viewcvs/cocoon/blocks/unsupported/template/trunk/test/org/apache/cocoon/template/jxtg/jxForEach.xml?rev=168667&r1=168666&r2=168667&view=diff ============================================================================== --- cocoon/blocks/unsupported/template/trunk/test/org/apache/cocoon/template/jxtg/jxForEach.xml (original) +++ cocoon/blocks/unsupported/template/trunk/test/org/apache/cocoon/template/jxtg/jxForEach.xml Fri May 6 14:52:29 2005 @@ -4,4 +4,10 @@ <jx:forEach var="i" items="${test}"> <forEach>${i}</forEach> </jx:forEach> + + <loop> + <jx:forEach varStatus="status" begin="1" end="5"> + <forEach>${status.index}</forEach> + </jx:forEach> + </loop> </root>