craigmcc    02/03/11 21:36:18

  Modified:    src/share/org/apache/struts/taglib/logic Tag:
                        STRUTS_1_0_BRANCH IterateTag.java
               web/exercise-taglib Tag: STRUTS_1_0_BRANCH logic-iterate.jsp
  Log:
  Port fix for <logic:iterate> to iterate over arrays of primitives.
  
  PR: Bugzilla #6553
  Submitted by: Martin Rose <martin.rose at gsullivan.com>
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.11.2.2  +15 -9     
jakarta-struts/src/share/org/apache/struts/taglib/logic/IterateTag.java
  
  Index: IterateTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/logic/IterateTag.java,v
  retrieving revision 1.11.2.1
  retrieving revision 1.11.2.2
  diff -u -r1.11.2.1 -r1.11.2.2
  --- IterateTag.java   14 Jun 2001 04:24:27 -0000      1.11.2.1
  +++ IterateTag.java   12 Mar 2002 05:36:18 -0000      1.11.2.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/logic/IterateTag.java,v 
1.11.2.1 2001/06/14 04:24:27 martinc Exp $
  - * $Revision: 1.11.2.1 $
  - * $Date: 2001/06/14 04:24:27 $
  + * $Header: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/logic/IterateTag.java,v 
1.11.2.2 2002/03/12 05:36:18 craigmcc Exp $
  + * $Revision: 1.11.2.2 $
  + * $Date: 2002/03/12 05:36:18 $
    *
    * ====================================================================
    *
  @@ -63,7 +63,8 @@
   package org.apache.struts.taglib.logic;
   
   
  -import java.util.Arrays;
  +import java.lang.reflect.Array;
  +import java.util.ArrayList;
   import java.util.Collection;
   import java.util.Enumeration;
   import java.util.Iterator;
  @@ -88,7 +89,7 @@
    * or a Map (which includes Hashtables) whose elements will be iterated over.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.11.2.1 $ $Date: 2001/06/14 04:24:27 $
  + * @version $Revision: 1.11.2.2 $ $Date: 2002/03/12 05:36:18 $
    */
   
   public class IterateTag extends BodyTagSupport {
  @@ -310,15 +311,20 @@
   
   
        // Construct an iterator for this collection
  -     if (collection.getClass().isArray())
  -         collection = Arrays.asList((Object[]) collection);
  -     if (collection instanceof Collection)
  +     if (collection.getClass().isArray()) {
  +            int length = Array.getLength(collection);
  +            ArrayList c = new ArrayList(length);
  +            for (int i = 0; i < length; i++) {
  +                c.add(Array.get(collection, i));
  +            }
  +            iterator = c.iterator();
  +     } else if (collection instanceof Collection)
            iterator = ((Collection) collection).iterator();
        else if (collection instanceof Iterator)
            iterator = (Iterator) collection;
        else if (collection instanceof Map)
            iterator = ((Map) collection).entrySet().iterator();
  -    else if (collection instanceof Enumeration)
  +        else if (collection instanceof Enumeration)
            iterator = new IteratorAdapter((Enumeration)collection);
        else {
            JspException e = new JspException
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.3.2.2   +31 -0     jakarta-struts/web/exercise-taglib/logic-iterate.jsp
  
  Index: logic-iterate.jsp
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/web/exercise-taglib/logic-iterate.jsp,v
  retrieving revision 1.3.2.1
  retrieving revision 1.3.2.2
  diff -u -r1.3.2.1 -r1.3.2.2
  --- logic-iterate.jsp 15 Jun 2001 21:48:46 -0000      1.3.2.1
  +++ logic-iterate.jsp 12 Mar 2002 05:36:18 -0000      1.3.2.2
  @@ -16,6 +16,11 @@
       list.add("Fourth");
       list.add("Fifth");
       pageContext.setAttribute("list", list, PageContext.PAGE_SCOPE);
  +
  +
  +    int intArray[] = new int[]
  +     { 0, 10, 20, 30, 40 };
  +    pageContext.setAttribute("intArray", intArray, PageContext.PAGE_SCOPE);
     }
   %>
   
  @@ -83,6 +88,32 @@
   <ol>
   <logic:iterate id="item" name="list" indexId="index"
          offset="2" length="3">
  +  <li><em><bean:write name="item"/></em>&nbsp;[<bean:write name="index"/>]</li>
  +</logic:iterate>
  +</ol>
  +
  +<h3>Test 8 - Iterate Over an int array</h3>
  +
  +<ol>
  +<logic:iterate id="item" name="intArray" indexId="index">
  +  <li><em><bean:write name="item"/></em>&nbsp;[<bean:write name="index"/>]</li>
  +</logic:iterate>
  +</ol>
  +
  +<h3>Test 9 - Iterate Over an int array [0..2]</h3>
  +
  +<ol>
  +<logic:iterate id="item" name="intArray" indexId="index"
  +           length="3">
  +  <li><em><bean:write name="item"/></em>&nbsp;[<bean:write name="index"/>]</li>
  +</logic:iterate>
  +</ol>
  +
  +<h3>Test 10 - Iterate Over an int array [2..4]</h3>
  +
  +<ol>
  +<logic:iterate id="item" name="intArray" indexId="index"
  +           offset="2" length="3">
     <li><em><bean:write name="item"/></em>&nbsp;[<bean:write name="index"/>]</li>
   </logic:iterate>
   </ol>
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to