You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by jo...@apache.org on 2008/04/01 08:24:53 UTC

svn commit: r643296 - in /cocoon/branches/BRANCH_2_1_X/src: java/org/apache/cocoon/generation/StatusGenerator.java webapp/stylesheets/system/status2html.xslt

Author: joerg
Date: Mon Mar 31 23:24:50 2008
New Revision: 643296

URL: http://svn.apache.org/viewvc?rev=643296&view=rev
Log:
backport from trunk: show continuations on status page

Modified:
    cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/StatusGenerator.java
    cocoon/branches/BRANCH_2_1_X/src/webapp/stylesheets/system/status2html.xslt

Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/StatusGenerator.java
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/StatusGenerator.java?rev=643296&r1=643295&r2=643296&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/StatusGenerator.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/StatusGenerator.java Mon Mar 31 23:24:50 2008
@@ -29,6 +29,9 @@
 import org.apache.cocoon.Constants;
 import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.ResourceNotFoundException;
+import org.apache.cocoon.components.flow.ContinuationsManager;
+import org.apache.cocoon.components.flow.WebContinuation;
+import org.apache.cocoon.components.flow.WebContinuationDataBean;
 import org.apache.cocoon.components.source.SourceUtil;
 import org.apache.cocoon.environment.SourceResolver;
 import org.apache.cocoon.xml.AttributesImpl;
@@ -134,6 +137,16 @@
     protected Store storePersistent;
 
     /**
+     * Show continuations information
+     */
+    private boolean showContinuations;
+
+    /**
+     * The ContinuationManager
+     */
+    private ContinuationsManager continuationsManager;
+
+    /**
      * List & show the contents of WEB/lib
      */
     private boolean showLibrary;
@@ -149,6 +162,7 @@
     }
 
     public void configure(Configuration configuration) throws ConfigurationException {
+        this.showContinuations = configuration.getChild("show-continuations").getValueAsBoolean(true);
         this.showLibrary = configuration.getChild("show-libraries").getValueAsBoolean(true);
     }
 
@@ -171,6 +185,12 @@
         } else {
             getLogger().info("Persistent Store is not available. Sorry no cache statistics about it.");
         }
+
+        if(this.manager.hasService(ContinuationsManager.ROLE)) {
+            continuationsManager = (ContinuationsManager) this.manager.lookup(ContinuationsManager.ROLE);
+        } else {
+            getLogger().info("ContinuationsManager is not available. Sorry no overview of created continuations");
+        }
     }
 
     public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par)
@@ -252,6 +272,9 @@
         atts.addCDATAAttribute(NAMESPACE, "cocoon-version", Constants.VERSION);
         super.contentHandler.startElement(NAMESPACE, "statusinfo", "statusinfo", atts);
 
+        if (this.showContinuations) {
+            genContinuationsTree();
+        }
         genVMStatus();
         genProperties();
         if (this.showLibrary) {
@@ -260,6 +283,31 @@
 
         // End root element.
         super.contentHandler.endElement(NAMESPACE, "statusinfo", "statusinfo");
+    }
+
+    private void genContinuationsTree() throws SAXException {
+        startGroup("Continuations");
+        Set continuations = this.continuationsManager.getForest();
+        for (Iterator i = continuations.iterator(); i.hasNext();) {
+            displayContinuation(new WebContinuationDataBean((WebContinuation) i.next()));
+        }
+        endGroup();
+    }
+
+    private void displayContinuation(WebContinuationDataBean wc) throws SAXException {
+        AttributesImpl ai = new AttributesImpl();
+        ai.addAttribute(NAMESPACE, "id", "id", "CDATA", wc.getId());
+        ai.addAttribute(NAMESPACE, "interpreter", "interpreter", "CDATA", wc.getInterpreterId());
+        ai.addAttribute(NAMESPACE, "expire-time", "expire-time", "CDATA", wc.getExpireTime());
+        ai.addAttribute(NAMESPACE, "time-to-live", "time-to-live", "CDATA", wc.getTimeToLive() + "ms");
+        ai.addAttribute(NAMESPACE, "last-access-time", "last-access-time", "CDATA", wc.getLastAccessTime());
+
+        super.contentHandler.startElement(NAMESPACE, "cont", "cont", ai);
+        List children = wc.get_children();
+        for (int i = 0; i < children.size(); i++) {
+            displayContinuation((WebContinuationDataBean) children.get(i));
+        }
+        super.contentHandler.endElement(NAMESPACE, "cont", "cont");
     }
 
     private void genVMStatus() throws SAXException {

Modified: cocoon/branches/BRANCH_2_1_X/src/webapp/stylesheets/system/status2html.xslt
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/webapp/stylesheets/system/status2html.xslt?rev=643296&r1=643295&r2=643296&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/webapp/stylesheets/system/status2html.xslt (original)
+++ cocoon/branches/BRANCH_2_1_X/src/webapp/stylesheets/system/status2html.xslt Mon Mar 31 23:24:50 2008
@@ -78,6 +78,25 @@
     <h2><xsl:value-of select="@status:name"/></h2>
     <ul><xsl:apply-templates select="status:value"/></ul>
     <xsl:apply-templates select="status:group"/>
+    <xsl:if test="status:cont">
+        <ul>
+            <xsl:apply-templates select="status:cont"/>     
+        </ul>
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template match="status:cont">
+    <li>
+        <xsl:for-each select="@*">
+            <span class="description"><xsl:value-of select="name()"/>:<xsl:text> </xsl:text> </span><xsl:value-of select="."/>
+            <xsl:if test="position() != last()">, </xsl:if>
+        </xsl:for-each>
+    </li>
+    <xsl:if test="status:cont">
+        <ul>
+            <xsl:apply-templates select="status:cont"/>     
+        </ul>   
+    </xsl:if>
   </xsl:template>
 
   <xsl:template match="status:value">