dion 2004/08/11 21:58:04 Modified: jelly/src/java/org/apache/commons/jelly/tags/core BreakTag.java Added: jelly/src/test/org/apache/commons/jelly/core testBreakTag.jelly TestBreakTag.java Log: Apply JELLY-115 Revision Changes Path 1.1 jakarta-commons/jelly/src/test/org/apache/commons/jelly/core/testBreakTag.jelly Index: testBreakTag.jelly =================================================================== <!--
Copyright 2002,2004 The Apache Software Foundation. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <j:jelly xmlns:j="jelly:core"> <j:set var="simpleResult" value=""/> <j:forEach var="counter" begin="1" end="10"> <j:set var="simpleResult" value="${simpleResult}${counter}"/> <j:if test="${counter==5}"> <j:break/> </j:if> </j:forEach> <j:set var="conditionalResult" value=""/> <j:forEach var="counter" begin="1" end="10"> <j:set var="conditionalResult" value="${conditionalResult}${counter}"/> <j:break test="${counter==5}"/> </j:forEach> <j:set var="varBreaksResult" value=""/> <j:forEach var="counter" begin="1" end="10"> <j:set var="varBreaksResult" value="${varBreaksResult}${counter}"/> <j:break var="varBroken" test="${counter==5}"/> </j:forEach> <j:set var="varNoBreaksResult" value=""/> <j:forEach var="counter" begin="1" end="10"> <j:set var="varNoBreaksResult" value="${varNoBreaksResult}${counter}"/> <j:break var="varNotBroken" test="${counter==11}"/> </j:forEach> </j:jelly> 1.1 jakarta-commons/jelly/src/test/org/apache/commons/jelly/core/TestBreakTag.java Index: TestBreakTag.java =================================================================== /* * Copyright 2002,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.commons.jelly.core; import junit.framework.TestSuite; import org.apache.commons.jelly.Script; public class TestBreakTag extends BaseJellyTest { public TestBreakTag(String name) { super(name); } public static TestSuite suite() throws Exception { return new TestSuite(TestBreakTag.class); } public void testSimpleBreakTag() throws Exception { setUpScript("testBreakTag.jelly"); Script script = getJelly().compileScript(); script.run(getJellyContext(), getXMLOutput()); String simpleResult = (String) getJellyContext().getVariable("simpleResult"); assertEquals("simpleResult", "12345", simpleResult); } public void testConditionalBreakTag() throws Exception { setUpScript("testBreakTag.jelly"); Script script = getJelly().compileScript(); script.run(getJellyContext(), getXMLOutput()); String simpleResult = (String) getJellyContext().getVariable("conditionalResult"); assertEquals("conditionalResult", "12345", simpleResult); } public void testVarBreakTag() throws Exception { setUpScript("testBreakTag.jelly"); Script script = getJelly().compileScript(); script.run(getJellyContext(), getXMLOutput()); String varBroken = (String) getJellyContext().getVariable("varBroken"); assertEquals("varBroken", "true", varBroken); } public void testVarNoBreakTag() throws Exception { setUpScript("testBreakTag.jelly"); Script script = getJelly().compileScript(); script.run(getJellyContext(), getXMLOutput()); String varNotBroken = (String) getJellyContext().getVariable("varNotBroken"); assertEquals("varNotBroken", "false", varNotBroken); } } 1.8 +23 -1 jakarta-commons/jelly/src/java/org/apache/commons/jelly/tags/core/BreakTag.java Index: BreakTag.java =================================================================== RCS file: /home/cvs/jakarta-commons/jelly/src/java/org/apache/commons/jelly/tags/core/BreakTag.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- BreakTag.java 24 Feb 2004 14:10:38 -0000 1.7 +++ BreakTag.java 12 Aug 2004 04:58:04 -0000 1.8 @@ -33,14 +33,27 @@ /** The expression to evaluate. */ private Expression test; + /** + * If specified, the given variable will hold a true/false value + * indicating if the loop was broken. + */ + private String var; + public BreakTag() { } // Tag interface //------------------------------------------------------------------------- public void doTag(XMLOutput output) throws BreakException { + boolean broken = false; if (test == null || test.evaluateAsBoolean(context)) { - throw new BreakException(); + broken = true; + } + if ( var != null ) { + context.setVariable( this.var, String.valueOf(broken)); + } + if ( broken ) { + throw new BreakException(); } } @@ -54,4 +67,13 @@ public void setTest(Expression test) { this.test = test; } + + /** + * Sets the variable name to export indicating if the item was broken + * @param var name of the variable to be exported + */ + public void setVar(String var) { + this.var = var; + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]