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

Reply via email to