You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2005/07/06 10:20:27 UTC

svn commit: r209432 - in /cocoon/blocks/portal/trunk: WEB-INF/xconf/cocoon-portal.xconf java/org/apache/cocoon/portal/coplet/adapter/impl/AbstractCopletAdapter.java

Author: cziegeler
Date: Wed Jul  6 01:20:25 2005
New Revision: 209432

URL: http://svn.apache.org/viewcvs?rev=209432&view=rev
Log:
Use portal logger, log execution time for a portlet and properly release component

Modified:
    cocoon/blocks/portal/trunk/WEB-INF/xconf/cocoon-portal.xconf
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/AbstractCopletAdapter.java

Modified: cocoon/blocks/portal/trunk/WEB-INF/xconf/cocoon-portal.xconf
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/WEB-INF/xconf/cocoon-portal.xconf?rev=209432&r1=209431&r2=209432&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/WEB-INF/xconf/cocoon-portal.xconf (original)
+++ cocoon/blocks/portal/trunk/WEB-INF/xconf/cocoon-portal.xconf Wed Jul  6 01:20:25 2005
@@ -29,19 +29,20 @@
   -->
   <source-factories>
     <!-- portal protocol -->
-    <component-instance class="org.apache.cocoon.portal.source.CopletSourceFactory" name="coplet"/>
+    <component-instance class="org.apache.cocoon.portal.source.CopletSourceFactory" 
+                        name="coplet" logger="portal"/>
   </source-factories>
   <input-modules>
-      <component-instance logger="core.modules.input" name="coplet" class="org.apache.cocoon.portal.components.modules.input.CopletModule"/>
-      <component-instance logger="core.modules.input" name="portal-layout" class="org.apache.cocoon.portal.components.modules.input.LayoutModule"/>
-      <component-instance logger="core.modules.input" name="portal-skin" class="org.apache.cocoon.portal.components.modules.input.SkinModule"/>
-      <component-instance logger="core.modules.input" name="portalpath" class="org.apache.cocoon.components.modules.input.ProjectPathModule">
+      <component-instance name="coplet" class="org.apache.cocoon.portal.components.modules.input.CopletModule" logger="portal"/>
+      <component-instance name="portal-layout" class="org.apache.cocoon.portal.components.modules.input.LayoutModule" logger="portal"/>
+      <component-instance name="portal-skin" class="org.apache.cocoon.portal.components.modules.input.SkinModule" logger="portal"/>
+      <component-instance name="portalpath" class="org.apache.cocoon.components.modules.input.ProjectPathModule" logger="portal">
        	<uri-prefix>samples/blocks/portal/</uri-prefix>
       </component-instance>
   </input-modules>
   
  <!-- Event Aspect configuration -->
- <component class="org.apache.cocoon.core.container.DefaultServiceSelector" role="org.apache.cocoon.portal.event.aspect.EventAspectSelector">
+ <component class="org.apache.cocoon.core.container.DefaultServiceSelector" role="org.apache.cocoon.portal.event.aspect.EventAspectSelector" logger="portal">
     <aspect name="action-counter" class="org.apache.cocoon.portal.event.aspect.impl.ActionCounterEventAspect"/>
     <aspect name="request-parameter" class="org.apache.cocoon.portal.event.aspect.impl.RequestParameterEventAspect"/>
     <aspect name="frame" class="org.apache.cocoon.portal.event.aspect.impl.FrameEventAspect"/>
@@ -95,7 +96,7 @@
  </component>
  
  <!-- Event Factory configuration -->
- <component class="org.apache.cocoon.components.ExtendedComponentSelector" role="org.apache.cocoon.portal.event.ConvertableEventFactorySelector">
+ <component class="org.apache.cocoon.components.ExtendedComponentSelector" role="org.apache.cocoon.portal.event.ConvertableEventFactorySelector" logger="portal">
    <!-- The events that can be marshalled. The name must match the Event's request parameter. -->
    <factory name="cocoon-portal-fs" class="org.apache.cocoon.portal.event.impl.FullScreenCopletEventFactory"/>
    <factory name="url" class="org.apache.cocoon.portal.pluto.PortletURLProviderFactory"/>
@@ -141,15 +142,17 @@
                     logger="portal"/>
     <!-- This is an extension of the uri adapter -->
     <coplet-adapter name="caching-uri"
-                    class="org.apache.cocoon.portal.coplet.adapter.impl.CachingURICopletAdapter" logger="portal"/>
+                    class="org.apache.cocoon.portal.coplet.adapter.impl.CachingURICopletAdapter"
+                    logger="portal"/>
     <!-- This is the application adapter -->
     <coplet-adapter name="application"
-                    class="org.apache.cocoon.portal.coplet.adapter.impl.ApplicationCopletAdapter" logger="portal"/>
+                    class="org.apache.cocoon.portal.coplet.adapter.impl.ApplicationCopletAdapter"
+                    logger="portal"/>
  </component>
 
 
  <!-- Renderer Aspect configuration -->
- <component class="org.apache.cocoon.core.container.DefaultServiceSelector" role="org.apache.cocoon.portal.layout.renderer.aspect.RendererAspectSelector">
+ <component class="org.apache.cocoon.core.container.DefaultServiceSelector" role="org.apache.cocoon.portal.layout.renderer.aspect.RendererAspectSelector" logger="portal">
     <aspect name="composite-content" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.CompositeContentAspect"/>
     <aspect name="tab-content" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.TabContentAspect"/>
     <aspect name="window" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.WindowAspect"/>
@@ -186,25 +189,26 @@
  <!-- Aspect Storage configuration -->
  <component class="org.apache.cocoon.core.container.DefaultServiceSelector" 
             role="org.apache.cocoon.portal.aspect.AspectDataStoreSelector">
-    <store name="temporary" class="org.apache.cocoon.portal.aspect.impl.TemporaryAspectDataStore"/>
-    <store name="request" class="org.apache.cocoon.portal.aspect.impl.RequestAspectDataStore"/>
-    <store name="session" class="org.apache.cocoon.portal.aspect.impl.SessionAspectDataStore"/>
-    <store name="persistent" class="org.apache.cocoon.portal.aspect.impl.PersistentAspectDataStore"/>
-    <store name="memory" class="org.apache.cocoon.portal.aspect.impl.MemoryAspectDataStore"/>
+    <store name="temporary" logger="portal" class="org.apache.cocoon.portal.aspect.impl.TemporaryAspectDataStore"/>
+    <store name="request"  logger="portal" class="org.apache.cocoon.portal.aspect.impl.RequestAspectDataStore"/>
+    <store name="session" logger="portal" class="org.apache.cocoon.portal.aspect.impl.SessionAspectDataStore"/>
+    <store name="persistent" logger="portal" class="org.apache.cocoon.portal.aspect.impl.PersistentAspectDataStore"/>
+    <store name="memory" logger="portal" class="org.apache.cocoon.portal.aspect.impl.MemoryAspectDataStore"/>
  </component>
 
-<component class="org.apache.cocoon.components.persistence.CastorSourceConverter" role="org.apache.cocoon.components.persistence.CastorSourceConverter">
+ <component class="org.apache.cocoon.components.persistence.CastorSourceConverter" role="org.apache.cocoon.components.persistence.CastorSourceConverter" logger="portal">
  	<mapping-source source="layout">resource://org/apache/cocoon/portal/layout/layout.xml</mapping-source>
  	<mapping-source source="copletbasedata">resource://org/apache/cocoon/portal/coplet/copletbasedata.xml</mapping-source>
  	<mapping-source source="copletdata">resource://org/apache/cocoon/portal/coplet/copletdata.xml</mapping-source>
  	<mapping-source source="copletinstancedata">resource://org/apache/cocoon/portal/coplet/copletinstancedata.xml</mapping-source>
  </component>
- <component class="org.apache.cocoon.portal.profile.impl.MapProfileLS" role="org.apache.cocoon.portal.profile.ProfileLS" />
+ <component class="org.apache.cocoon.portal.profile.impl.MapProfileLS" role="org.apache.cocoon.portal.profile.ProfileLS" logger="portal"/>
 
- <component class="org.apache.cocoon.components.variables.DefaultVariableResolverFactory" role="org.apache.cocoon.components.variables.VariableResolverFactory" />
+ <component class="org.apache.cocoon.components.variables.DefaultVariableResolverFactory" role="org.apache.cocoon.components.variables.VariableResolverFactory" logger="portal"/>
  <!-- This is the basket manager -->
  <component class="org.apache.cocoon.portal.coplets.basket.BasketManagerImpl" 
-            role="org.apache.cocoon.portal.coplets.basket.BasketManager">
+            role="org.apache.cocoon.portal.coplets.basket.BasketManager"
+            logger="portal">
      <!-- This is only a sample configuration, it doesn't really work -->
      <parameter name="basket:action:print" value="cocoon://print-basket"/>
      <parameter name="basket:action:email" value="cocoon://email-basket"/>

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/AbstractCopletAdapter.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/AbstractCopletAdapter.java?rev=209432&r1=209431&r2=209432&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/AbstractCopletAdapter.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/AbstractCopletAdapter.java Wed Jul  6 01:20:25 2005
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2002,2004 The Apache Software Foundation.
+ * Copyright 1999-2002,2004-2005 The Apache Software Foundation.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -100,8 +100,17 @@
                                          ContentHandler contentHandler)
     throws SAXException; 
     
+    /**
+     * This method streams the content of a coplet instance data.
+     * It handles buffering and timeout setting and calls
+     * {@link #streamContent(CopletInstanceData, ContentHandler)}
+     * for creating the content.
+     *
+     * @see org.apache.cocoon.portal.coplet.adapter.CopletAdapter#toSAX(org.apache.cocoon.portal.coplet.CopletInstanceData, org.xml.sax.ContentHandler)
+     */
     public void toSAX(CopletInstanceData coplet, ContentHandler contentHandler)
     throws SAXException {
+        final long startTime = System.currentTimeMillis();
         Boolean bool = (Boolean) this.getConfiguration( coplet, "buffer" );
         Integer timeout = (Integer) this.getConfiguration( coplet, "timeout");
         if ( timeout != null ) {
@@ -119,8 +128,11 @@
                     final int milli = timeout.intValue() * 1000;
                     LoaderThread loader = new LoaderThread(this, coplet, buffer);
                     final RunnableManager runnableManager = (RunnableManager)this.manager.lookup( RunnableManager.ROLE );
-                    runnableManager.execute( new CocoonRunnable(loader) );
-                    this.manager.release( runnableManager );
+                    try {
+                        runnableManager.execute( new CocoonRunnable(loader) );
+                    } finally {
+                        this.manager.release( runnableManager );
+                    }
                     try {
                         read = loader.join( milli );
                     } catch (InterruptedException ignore) {
@@ -154,7 +166,11 @@
         } else {
             this.streamContent( coplet, contentHandler );
         }
-        
+        if ( this.getLogger().isInfoEnabled() ) {
+            final long msecs = System.currentTimeMillis() - startTime;
+            this.getLogger().info("Streamed coplet " + coplet.getCopletData().getId() +
+                                  " (instance " + coplet.getId() + ") in " + msecs + "ms.");
+        }
     }
     
     /* (non-Javadoc)