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

Modified Files:
        AbstractFunctionTag.java ListFunctionTag.java 
        NodeListFunctionTag.java 
Log Message:
add, retain, remove attribute in list-function tags


See also: 
http://cvs.mmbase.org/viewcvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/functions


Index: AbstractFunctionTag.java
===================================================================
RCS file: 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/functions/AbstractFunctionTag.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -b -r1.31 -r1.32
--- AbstractFunctionTag.java    24 Jan 2008 12:07:40 -0000      1.31
+++ AbstractFunctionTag.java    23 Feb 2008 15:54:27 -0000      1.32
@@ -11,7 +11,7 @@
 
 
 import java.lang.reflect.Method;
-import java.util.Iterator;
+import java.util.*;
 
 import javax.servlet.jsp.JspTagException;
 
@@ -20,6 +20,7 @@
 import org.mmbase.bridge.jsp.taglib.containers.*;
 import org.mmbase.bridge.jsp.taglib.util.*;
 import java.util.Map;
+import org.mmbase.util.Casting;
 
 import org.mmbase.util.Entry;
 import org.mmbase.util.functions.*;
@@ -38,7 +39,7 @@
  *
  * @author  Michiel Meeuwissen
  * @since   MMBase-1.7
- * @version $Id: AbstractFunctionTag.java,v 1.31 2008/01/24 12:07:40 michiel 
Exp $
+ * @version $Id: AbstractFunctionTag.java,v 1.32 2008/02/23 15:54:27 michiel 
Exp $
  */
 abstract public class AbstractFunctionTag extends NodeReferrerTag {
 
@@ -91,6 +92,55 @@
         referids = getAttribute(r);
     }
 
+
+
+    protected Attribute add = Attribute.NULL;
+    protected Attribute retain = Attribute.NULL;
+    protected Attribute remove= Attribute.NULL;
+    public void setAdd(String c) throws JspTagException {
+        add = getAttribute(c);
+    }
+    public void setRetain(String c) throws JspTagException {
+        retain = getAttribute(c);
+    }
+    public void setRemove(String c) throws JspTagException {
+        remove = getAttribute(c);
+    }
+
+    protected <C> Collection<C> useCollectionMethods(Collection<C> col) throws 
JspTagException {
+        if (add != Attribute.NULL) {
+            Object addObject = getObjectConditional(add.getString(this));
+            if (addObject != null) {
+                if (addObject instanceof Collection) {
+                    col.addAll((Collection<C>) addObject);
+                } else {
+                    col.add((C) addObject);
+                }
+            }
+        }
+        if (retain != Attribute.NULL) {
+            Object retainObject = getObjectConditional(retain.getString(this));
+            if (retainObject != null) {
+                if (retainObject instanceof Collection) {
+                    col.retainAll((Collection<C>) retainObject);
+                } else {
+                    col.retainAll(Collections.singletonList((C) retainObject));
+                }
+            }
+        }
+        if (remove != Attribute.NULL) {
+            Object removeObject = getObjectConditional(remove.getString(this));
+            if (removeObject != null) {
+                if (removeObject instanceof Collection) {
+                    col.removeAll((Collection<C>) removeObject);
+                } else {
+                    col.remove((C)removeObject);
+                }
+            }
+        }
+        return col;
+    }
+
     /**
      * Gets function object, and checks consistency of attributes.
      */


Index: ListFunctionTag.java
===================================================================
RCS file: 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/functions/ListFunctionTag.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- ListFunctionTag.java        5 Sep 2006 11:55:02 -0000       1.13
+++ ListFunctionTag.java        23 Feb 2008 15:54:27 -0000      1.14
@@ -27,7 +27,7 @@
  *
  * @author  Michiel Meeuwissen
  * @since   MMBase-1.7
- * @version $Id: ListFunctionTag.java,v 1.13 2006/09/05 11:55:02 michiel Exp $
+ * @version $Id: ListFunctionTag.java,v 1.14 2008/02/23 15:54:27 michiel Exp $
  */
 public class ListFunctionTag extends AbstractFunctionTag implements 
ListProvider, FunctionContainerReferrer, Writer {
 
@@ -84,6 +84,7 @@
         } else {
             returnCollection = Casting.toCollection(value);
         }
+        returnCollection = useCollectionMethods(returnCollection);
         if (log.isDebugEnabled()) {
             log.debug("Using " + returnCollection);
         }


Index: NodeListFunctionTag.java
===================================================================
RCS file: 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/functions/NodeListFunctionTag.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- NodeListFunctionTag.java    5 Sep 2006 11:55:02 -0000       1.16
+++ NodeListFunctionTag.java    23 Feb 2008 15:54:27 -0000      1.17
@@ -26,7 +26,7 @@
  *
  * @author  Michiel Meeuwissen
  * @since   MMBase-1.7
- * @version $Id: NodeListFunctionTag.java,v 1.16 2006/09/05 11:55:02 michiel 
Exp $
+ * @version $Id: NodeListFunctionTag.java,v 1.17 2008/02/23 15:54:27 michiel 
Exp $
  */
 public class NodeListFunctionTag extends AbstractFunctionTag implements 
ListProvider, FunctionContainerReferrer, NodeProvider {
 
@@ -95,6 +95,15 @@
     public void setComparator(String c) throws JspTagException {
         listHelper.setComparator(c);
     }
+    public void setAdd(String c) throws JspTagException {
+        listHelper.setAdd(c);
+    }
+    public void setRetain(String c) throws JspTagException {
+        listHelper.setRetain(c);
+    }
+    public void setRemove(String c) throws JspTagException {
+        listHelper.setRemove(c);
+    }
     public void setVarStatus(String s) throws JspTagException {
         listHelper.setVarStatus(s);
     }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to