Update of /var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/tree
In directory james.mmbase.org:/tmp/cvs-serv30285
Modified Files:
Tag: MMBase-1_8
AbstractTreeReferrerListTag.java DepthProvider.java
DepthTag.java OnShrinkTag.java TreeProvider.java
TreeReferrerTag.java TreeTag.java
Added Files:
Tag: MMBase-1_8
BasicDepthProvider.java
Log Message:
MMB-1593
See also:
http://cvs.mmbase.org/viewcvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/tree
See also: http://www.mmbase.org/jira/browse/MMB-1593
BasicDepthProvider.java is new
Index: AbstractTreeReferrerListTag.java
===================================================================
RCS file:
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/tree/AbstractTreeReferrerListTag.java,v
retrieving revision 1.5
retrieving revision 1.5.2.1
diff -u -b -r1.5 -r1.5.2.1
--- AbstractTreeReferrerListTag.java 5 Dec 2005 17:21:17 -0000 1.5
+++ AbstractTreeReferrerListTag.java 14 Feb 2008 14:21:47 -0000 1.5.2.1
@@ -9,6 +9,7 @@
*/
package org.mmbase.bridge.jsp.taglib.tree;
import javax.servlet.jsp.JspTagException;
+import javax.servlet.jsp.PageContext;
import org.mmbase.bridge.jsp.taglib.ListProvider;
import org.mmbase.bridge.jsp.taglib.util.*;
@@ -16,7 +17,7 @@
/**
* @author Michiel Meeuwissen
* @since MMBase-1.7
- * @version $Id: AbstractTreeReferrerListTag.java,v 1.5 2005/12/05 17:21:17
michiel Exp $
+ * @version $Id: AbstractTreeReferrerListTag.java,v 1.5.2.1 2008/02/14
14:21:47 michiel Exp $
*/
abstract class AbstractTreeReferrerListTag extends TreeReferrerTag implements
ListProvider, DepthProvider {
@@ -24,6 +25,7 @@
protected int index;
protected TreeProvider tree;
+ private Object prevDepthProvider;
public int getIndex() {
return index;
@@ -55,6 +57,8 @@
protected final void doStartTagHelper() throws JspTagException {
+ prevDepthProvider = pageContext.getAttribute(DepthProvider.KEY,
PageContext.REQUEST_SCOPE);
+ pageContext.setAttribute(DepthProvider.KEY, new
BasicDepthProvider(getDepth()), PageContext.REQUEST_SCOPE);
collector = new ContextCollector(getContextProvider());
tree = findTreeProvider();
index = 0;
@@ -63,6 +67,7 @@
public int doEndTag() throws JspTagException {
collector = null;
tree = null;
+ pageContext.setAttribute(DepthProvider.KEY, prevDepthProvider,
PageContext.REQUEST_SCOPE);
return super.doEndTag();
}
public javax.servlet.jsp.jstl.core.LoopTagStatus getLoopStatus() {
Index: DepthProvider.java
===================================================================
RCS file:
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/tree/DepthProvider.java,v
retrieving revision 1.2
retrieving revision 1.2.4.1
diff -u -b -r1.2 -r1.2.4.1
--- DepthProvider.java 11 Feb 2004 20:40:13 -0000 1.2
+++ DepthProvider.java 14 Feb 2008 14:21:47 -0000 1.2.4.1
@@ -13,10 +13,12 @@
/**
* @author Michiel Meeuwissen
* @since MMBase-1.7
- * @version $Id: DepthProvider.java,v 1.2 2004/02/11 20:40:13 keesj Exp $
+ * @version $Id: DepthProvider.java,v 1.2.4.1 2008/02/14 14:21:47 michiel Exp $
*/
public interface DepthProvider {
+ public static final String KEY = "org.mmbase.taglib.depth";
+
/**
* Returns the 'size' of the current cluster node (the number of steps
(minus the relation steps))
*/
Index: DepthTag.java
===================================================================
RCS file:
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/tree/DepthTag.java,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -u -b -r1.4 -r1.4.2.1
--- DepthTag.java 14 Mar 2005 19:02:35 -0000 1.4
+++ DepthTag.java 14 Feb 2008 14:21:47 -0000 1.4.2.1
@@ -18,12 +18,12 @@
/**
* @author Michiel Meeuwissen
* @since MMBase-1.7
- * @version $Id: DepthTag.java,v 1.4 2005/03/14 19:02:35 michiel Exp $
+ * @version $Id: DepthTag.java,v 1.4.2.1 2008/02/14 14:21:47 michiel Exp $
*/
public class DepthTag extends TreeReferrerTag implements Writer {
public int doStartTag() throws JspTagException {
- DepthProvider dp = (DepthProvider) findParentTag(DepthProvider.class,
(String) parentTreeId.getValue(this));
+ DepthProvider dp = findDepthProvider();
helper.setValue(new Integer(dp.getDepth()));
if (getId() != null) {
getContextProvider().getContextContainer().register(getId(),
helper.getValue());
Index: OnShrinkTag.java
===================================================================
RCS file:
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/tree/OnShrinkTag.java,v
retrieving revision 1.2
retrieving revision 1.2.4.1
diff -u -b -r1.2 -r1.2.4.1
--- OnShrinkTag.java 11 Feb 2004 20:40:13 -0000 1.2
+++ OnShrinkTag.java 14 Feb 2008 14:21:47 -0000 1.2.4.1
@@ -16,19 +16,22 @@
/**
* @author Michiel Meeuwissen
* @since MMBase-1.7
- * @version $Id: OnShrinkTag.java,v 1.2 2004/02/11 20:40:13 keesj Exp $
+ * @version $Id: OnShrinkTag.java,v 1.2.4.1 2008/02/14 14:21:47 michiel Exp $
*/
public class OnShrinkTag extends TreeReferrerTag implements DepthProvider {
private static final Logger log =
Logging.getLoggerInstance(OnShrinkTag.class);
private int depth;
+ private Object prevDepthProvider;
public int getDepth() {
return depth;
}
public int doStartTag() throws JspTagException {
- DepthProvider dp = (DepthProvider) findParentTag(DepthProvider.class,
(String) parentTreeId.getValue(this));
+ DepthProvider dp = findDepthProvider();
depth = dp.getDepth();
+ prevDepthProvider = pageContext.getAttribute(DepthProvider.KEY,
PageContext.REQUEST_SCOPE);
+ pageContext.setAttribute(DepthProvider.KEY, new
BasicDepthProvider(getDepth()), PageContext.REQUEST_SCOPE);
return EVAL_BODY_BUFFERED;
}
@@ -44,6 +47,11 @@
return super.doAfterBody();
}
+ public int doEndTag() throws JspTagException {
+ pageContext.setAttribute(DepthProvider.KEY, prevDepthProvider,
PageContext.REQUEST_SCOPE);
+ return super.doEndTag();
+ }
+
}
Index: TreeProvider.java
===================================================================
RCS file:
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/tree/TreeProvider.java,v
retrieving revision 1.2
retrieving revision 1.2.4.1
diff -u -b -r1.2 -r1.2.4.1
--- TreeProvider.java 24 Dec 2003 00:31:39 -0000 1.2
+++ TreeProvider.java 14 Feb 2008 14:21:47 -0000 1.2.4.1
@@ -16,10 +16,12 @@
/**
* @author Michiel Meeuwissen
* @since MMBase-1.7
- * @version $Id: TreeProvider.java,v 1.2 2003/12/24 00:31:39 michiel Exp $
+ * @version $Id: TreeProvider.java,v 1.2.4.1 2008/02/14 14:21:47 michiel Exp $
*/
public interface TreeProvider extends NodeProvider, ListProvider,
DepthProvider {
+ public static final String KEY = "org.mmbase.taglib.tree";
+
public int getPreviousDepth();
public int getNextDepth();
Index: TreeReferrerTag.java
===================================================================
RCS file:
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/tree/TreeReferrerTag.java,v
retrieving revision 1.2
retrieving revision 1.2.4.1
diff -u -b -r1.2 -r1.2.4.1
--- TreeReferrerTag.java 11 Feb 2004 20:40:13 -0000 1.2
+++ TreeReferrerTag.java 14 Feb 2008 14:21:47 -0000 1.2.4.1
@@ -10,7 +10,9 @@
package org.mmbase.bridge.jsp.taglib.tree;
+
import javax.servlet.jsp.JspTagException;
+import javax.servlet.jsp.PageContext;
import org.mmbase.bridge.jsp.taglib.NodeReferrerTag;
import org.mmbase.bridge.jsp.taglib.util.Attribute;
@@ -19,7 +21,7 @@
/**
* @author Michiel Meeuwissen
* @since MMBase-1.7
- * @version $Id: TreeReferrerTag.java,v 1.2 2004/02/11 20:40:13 keesj Exp $
+ * @version $Id: TreeReferrerTag.java,v 1.2.4.1 2008/02/14 14:21:47 michiel
Exp $
*/
abstract public class TreeReferrerTag extends NodeReferrerTag {
@@ -31,6 +33,16 @@
parentTreeId = getAttribute(t);
}
+ /**
+ * @since MMBase-1.8.6
+ */
+ protected DepthProvider findDepthProvider() throws JspTagException {
+ DepthProvider dp = (DepthProvider) findParentTag(DepthProvider.class,
(String) parentTreeId.getValue(this), false);
+ if (dp != null) return dp;
+ dp = (DepthProvider) pageContext.getAttribute(DepthProvider.KEY,
PageContext.REQUEST_SCOPE);
+ if (dp != null) return dp;
+ throw new JspTagException("Could not find parent depth provider");
+ }
/**
@@ -39,12 +51,14 @@
*
*/
public TreeProvider findTreeProvider() throws JspTagException {
- return (TreeProvider) findParentTag(TreeProvider.class, (String)
parentTreeId.getValue(this));
+ TreeProvider dp = (TreeProvider) findParentTag(TreeProvider.class,
(String) parentTreeId.getValue(this), false);
+ if (dp != null) return dp;
+ dp = (TreeProvider) pageContext.getAttribute(TreeProvider.KEY,
PageContext.REQUEST_SCOPE);
+ if (dp != null) return dp;
+ throw new JspTagException("Could not find parent depth provider");
}
-
-
}
Index: TreeTag.java
===================================================================
RCS file:
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/tree/TreeTag.java,v
retrieving revision 1.18
retrieving revision 1.18.2.1
diff -u -b -r1.18 -r1.18.2.1
--- TreeTag.java 28 Aug 2006 12:30:36 -0000 1.18
+++ TreeTag.java 14 Feb 2008 14:21:47 -0000 1.18.2.1
@@ -11,6 +11,7 @@
import javax.servlet.jsp.JspTagException;
+import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.*;
import java.io.IOException;
@@ -47,7 +48,7 @@
</pre>
* @author Michiel Meeuwissen
* @since MMBase-1.7
- * @version $Id: TreeTag.java,v 1.18 2006/08/28 12:30:36 michiel Exp $
+ * @version $Id: TreeTag.java,v 1.18.2.1 2008/02/14 14:21:47 michiel Exp $
*/
public class TreeTag extends AbstractNodeProviderTag implements TreeProvider,
QueryContainerReferrer {
private static final Logger log = Logging.getLoggerInstance(TreeTag.class);
@@ -65,6 +66,9 @@
private Node nextNode;
+ private Object prevDepthProvider;
+ private Object prevTreeProvider;
+
/**
* Lists do implement ContextProvider
*/
@@ -181,6 +185,10 @@
log.debug("starttag");
shrinkStack = new Stack();
collector = new ContextCollector(getContextProvider());
+ prevDepthProvider = pageContext.getAttribute(DepthProvider.KEY,
PageContext.REQUEST_SCOPE);
+ prevTreeProvider = pageContext.getAttribute(TreeProvider.KEY,
PageContext.REQUEST_SCOPE);
+ pageContext.setAttribute(DepthProvider.KEY, this,
PageContext.REQUEST_SCOPE);
+ pageContext.setAttribute(TreeProvider.KEY, this,
PageContext.REQUEST_SCOPE);
// serve parent timer tag:
TagSupport t = findParentTag(TimerTag.class, null, false);
@@ -322,6 +330,8 @@
if (t != null) {
((TimerTag)t).haltTimer(timerHandle);
}
+ pageContext.setAttribute(DepthProvider.KEY, prevDepthProvider,
PageContext.REQUEST_SCOPE);
+ pageContext.setAttribute(TreeProvider.KEY, prevTreeProvider,
PageContext.REQUEST_SCOPE);
// dereference for gc
tree = null;
iterator = null;
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs