Update of 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/functions
In directory james.mmbase.org:/tmp/cvs-serv15210

Modified Files:
        ListFunctionTag.java 
Log Message:
  MMB-1689


See also: 
http://cvs.mmbase.org/viewcvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/functions
See also: http://www.mmbase.org/jira/browse/MMB-1689


Index: ListFunctionTag.java
===================================================================
RCS file: 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/functions/ListFunctionTag.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- ListFunctionTag.java        23 Feb 2008 15:54:27 -0000      1.14
+++ ListFunctionTag.java        22 Jul 2008 09:39:15 -0000      1.15
@@ -27,7 +27,7 @@
  *
  * @author  Michiel Meeuwissen
  * @since   MMBase-1.7
- * @version $Id: ListFunctionTag.java,v 1.14 2008/02/23 15:54:27 michiel Exp $
+ * @version $Id: ListFunctionTag.java,v 1.15 2008/07/22 09:39:15 michiel Exp $
  */
 public class ListFunctionTag extends AbstractFunctionTag implements 
ListProvider, FunctionContainerReferrer, Writer {
 
@@ -39,8 +39,10 @@
     protected int      currentItemIndex= -1;
 
     private   ContextCollector collector;
-    private Attribute  comparator = Attribute.NULL;
+    protected Attribute  comparator = Attribute.NULL;
     protected Attribute  varStatus = Attribute.NULL;
+    protected Attribute  max = Attribute.NULL;
+    protected Attribute  offset = Attribute.NULL;
 
     public void setComparator(String c) throws JspTagException {
         comparator = getAttribute(c);
@@ -49,6 +51,12 @@
         varStatus = getAttribute(s);
     }
 
+    public void setMax(String m) throws JspTagException {
+        max = getAttribute(m);
+    }
+    public void setOffset(String o) throws JspTagException {
+        offset = getAttribute(o);
+    }
 
     public int size(){
         return returnCollection.size();
@@ -95,8 +103,13 @@
         if (!comparator.equals(Attribute.NULL)) {
             ListSorter.sort((List)returnCollection, (String) 
comparator.getValue(this), this);
         }
+        int o = offset.getInt(this, 0);
         iterator = returnCollection.iterator();
-        if (iterator.hasNext()) {
+        while(currentItemIndex + 1 < o && iterator.hasNext()) {
+            iterator.next();
+            currentItemIndex++;
+        }
+        if (iterator.hasNext() && (currentItemIndex + 1) < (o + 
max.getInt(this, Integer.MAX_VALUE))) {
             return EVAL_BODY_BUFFERED;
         }
         return SKIP_BODY;
@@ -110,7 +123,11 @@
         helper.doAfterBody();
         collector.doAfterBody();
 
-        if (iterator.hasNext()){
+        if (! "".equals(varStatus.getString(this))) {
+            
getContextProvider().getContextContainer().unRegister(varStatus.getString(this));
+        }
+
+        if (iterator.hasNext() && (currentItemIndex + 1) < max.getInt(this, 
Integer.MAX_VALUE)) {
             doInitBody();
             return EVAL_BODY_AGAIN;
         } else {
@@ -143,6 +160,10 @@
             if (getId() != null) {
                 getContextProvider().getContextContainer().register(getId(), 
helper.getValue());
             }
+            if (! "".equals(varStatus.getString(this))) {
+                org.mmbase.bridge.jsp.taglib.util.ContextContainer cc = 
getContextProvider().getContextContainer();
+                cc.register(varStatus.getString(this), getLoopStatus());
+            }
 
         }
     }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to