webwork/src/main/webwork/view/taglib IteratorTag.java,1.4,1.5

[email protected] Sun, 23 Jun 2002 16:54:04 -0700
Newsgroups gmane.comp.java.webwork.cvs
Message-ID <[email protected]>
Update of /cvsroot/webwork/webwork/src/main/webwork/view/taglib
In directory usw-pr-cvs1:/tmp/cvs-serv30273

Modified Files:
	IteratorTag.java 
Log Message:
added support null iterator

Index: IteratorTag.java
===================================================================
RCS file: /cvsroot/webwork/webwork/src/main/webwork/view/taglib/IteratorTag.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- IteratorTag.java	30 May 2002 22:57:47 -0000	1.4
+++ IteratorTag.java	23 Jun 2002 23:54:02 -0000	1.5
@@ -6,6 +6,8 @@
  */
 package webwork.view.taglib;
 
+import org.apache.log4j.Category;
+
 import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.JspTagException;
 import javax.servlet.jsp.PageContext;
@@ -57,7 +59,6 @@
 
    // BodyTag implementation ----------------------------------------
    public int doStartTag()
-      throws JspException
    {
       if (statusAttr != null)
       {
@@ -67,69 +68,72 @@
 
       Object value = findValue(valueAttr);
 
-      if(value == null)
-         throw new JspTagException(valueAttr+" is null");
-
-      // Make sure it is iterable
-      if(value instanceof Map)
-      {
-         value = ((Map)value).entrySet();
-      }
-
-      if(value instanceof Collection)
-      {
-         iterator = ((Collection)value).iterator();
-      }
-      else if(value.getClass().isArray())
-      {
-         //Category.getInstance(this.getClass()).debug("Array="+value+" "+value.getClass()+" "+((Object[])value)[0]);
-         ArrayList list = new ArrayList(((Object[])value).length);
-         Object[] objects = (Object[])value;
-         for(int j = 0; j < objects.length; j++)
-            list.add(objects[j]);
-         iterator = list.iterator();
-      }
-      else if(value instanceof Enumeration)
+      if(value != null)
       {
-         Enumeration enum = (Enumeration)value;
-         ArrayList list = new ArrayList();
-         while(enum.hasMoreElements())
+         // Make sure it is iterable
+         if(value instanceof Map)
          {
-            list.add(enum.nextElement());
+            value = ((Map)value).entrySet();
          }
-         iterator = list.iterator();
-      }
-      else
-      {
-         iterator = (Iterator)value;
-      }
-
-      // Get first item
-      if(iterator.hasNext())
-      {
-         currentValue = iterator.next();
-         getStack().pushValue(currentValue);
 
-         String id = getId();
-         if(id != null && currentValue != null)
+         if(value instanceof Collection)
          {
-            pageContext.setAttribute(id, currentValue);
-            pageContext.setAttribute(id, currentValue, PageContext.REQUEST_SCOPE);
+            iterator = ((Collection)value).iterator();
          }
-
-         // Status object
-         if (statusAttr != null)
+         else if(value.getClass().isArray())
          {
-            statusState.setLast(!iterator.hasNext());
-            statusName = (String)findValue(statusAttr);
-            oldStatus = pageContext.getAttribute(statusName);
-            pageContext.setAttribute(statusName, status);
+            //Category.getInstance(this.getClass()).debug("Array="+value+" "+value.getClass()+" "+((Object[])value)[0]);
+            ArrayList list = new ArrayList(((Object[])value).length);
+            Object[] objects = (Object[])value;
+            for(int j = 0; j < objects.length; j++)
+               list.add(objects[j]);
+            iterator = list.iterator();
+         }
+         else if(value instanceof Enumeration)
+         {
+            Enumeration enum = (Enumeration)value;
+            ArrayList list = new ArrayList();
+            while(enum.hasMoreElements())
+            {
+               list.add(enum.nextElement());
+            }
+            iterator = list.iterator();
+         }
+         else
+         {
+            iterator = (Iterator)value;
          }
 
-         return EVAL_BODY_TAG;
-      }
-      else
-      {
+         // Get first item
+         if(iterator.hasNext())
+         {
+            currentValue = iterator.next();
+            getStack().pushValue(currentValue);
+
+            String id = getId();
+            if(id != null && currentValue != null)
+            {
+               pageContext.setAttribute(id, currentValue);
+               pageContext.setAttribute(id, currentValue, PageContext.REQUEST_SCOPE);
+            }
+
+            // Status object
+            if (statusAttr != null)
+            {
+               statusState.setLast(!iterator.hasNext());
+               statusName = (String)findValue(statusAttr);
+               oldStatus = pageContext.getAttribute(statusName);
+               pageContext.setAttribute(statusName, status);
+            }
+
+            return EVAL_BODY_TAG;
+         }
+         else
+         {
+            return SKIP_BODY;
+         }
+      }  else {
+         Category.getInstance(IteratorTag.class.getName()).warn("Value is null! Returning an empty set.");
          return SKIP_BODY;
       }
    }




-------------------------------------------------------
Sponsored by:
ThinkGeek at http://www.ThinkGeek.com/