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/