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]

Reply via email to