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