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 2004/06/08 15:09:28 UTC

cvs commit: cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/sitemap FlowNode.java MountNode.java

cziegeler    2004/06/08 06:09:27

  Modified:    .        status.xml
               src/java/org/apache/cocoon/components/treeprocessor/sitemap
                        FlowNode.java MountNode.java
  Log:
  Apply patch (bug 27066) to fix some memory leaks in the tree processor.
  
  Revision  Changes    Path
  1.357     +4 -1      cocoon-2.1/status.xml
  
  Index: status.xml
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/status.xml,v
  retrieving revision 1.356
  retrieving revision 1.357
  diff -u -r1.356 -r1.357
  --- status.xml	7 Jun 2004 10:29:09 -0000	1.356
  +++ status.xml	8 Jun 2004 13:09:24 -0000	1.357
  @@ -205,6 +205,9 @@
     <changes>
   
    <release version="@version@" date="@date@">
  +   <action dev="CZ" type="fix" fixes-bug="27066">
  +     Apply patch to fix some memory leaks in the tree processor.
  +   </action>
      <action dev="CZ" type="fix" fixes-bug="29373">
        Portal: Fix NPE when non-caching pipelines are used for the portal profile.
      </action>
  
  
  
  1.5       +25 -4     cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/sitemap/FlowNode.java
  
  Index: FlowNode.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/sitemap/FlowNode.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FlowNode.java	5 Mar 2004 13:02:52 -0000	1.4
  +++ FlowNode.java	8 Jun 2004 13:09:27 -0000	1.5
  @@ -15,6 +15,8 @@
    */
   package org.apache.cocoon.components.treeprocessor.sitemap;
   
  +import org.apache.avalon.framework.activity.Disposable;
  +import org.apache.avalon.framework.component.Component;
   import org.apache.avalon.framework.component.ComponentException;
   import org.apache.avalon.framework.component.ComponentManager;
   import org.apache.avalon.framework.component.ComponentSelector;
  @@ -36,12 +38,13 @@
    * @version CVS $Id$
    */
   public class FlowNode extends AbstractProcessingNode
  -        implements Composable, Contextualizable {
  +        implements Composable, Contextualizable, Disposable {
   
       ComponentManager manager;
       String language;
       Context context;
       Interpreter interpreter;
  +    ComponentSelector interpreterSelector;
   
       public FlowNode(String language) {
           this.language = language;
  @@ -79,13 +82,31 @@
           this.manager = manager;
   
           try {
  -            ComponentSelector selector = (ComponentSelector)manager.lookup(Interpreter.ROLE);
  +            this.interpreterSelector = (ComponentSelector)manager.lookup(Interpreter.ROLE);
               // Obtain the Interpreter instance for this language
  -            interpreter = (Interpreter)selector.select(language);
  +            this.interpreter = (Interpreter)this.interpreterSelector.select(language);
  +        } catch (ComponentException ce) {
  +            throw ce;
           } catch (Exception ex) {
               throw new ComponentException(language,
                   "ScriptNode: Couldn't obtain a flow interpreter for " + language + ": " + ex);
           }
  +    }
  +
  +    /* (non-Javadoc)
  +     * @see org.apache.avalon.framework.activity.Disposable#dispose()
  +     */
  +    public void dispose() {
  +        if ( this.manager != null ) {
  +            if ( this.interpreterSelector != null ) {
  +                this.interpreterSelector.release( (Component)this.interpreter );
  +                this.interpreter = null;
  +                this.manager.release( this.interpreterSelector );
  +                this.interpreterSelector = null;
  +            }
  +            this.manager = null;
  +        }
  +
       }
   
       public Interpreter getInterpreter() {
  
  
  
  1.14      +8 -3      cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/sitemap/MountNode.java
  
  Index: MountNode.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/sitemap/MountNode.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- MountNode.java	25 May 2004 07:28:25 -0000	1.13
  +++ MountNode.java	8 Jun 2004 13:09:27 -0000	1.14
  @@ -19,6 +19,7 @@
   import java.util.Iterator;
   import java.util.Map;
   
  +import org.apache.avalon.framework.activity.Disposable;
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.Processor;
   import org.apache.cocoon.components.treeprocessor.AbstractProcessingNode;
  @@ -33,7 +34,8 @@
    * @author <a href="mailto:sylvain@apache.org">Sylvain Wallez</a>
    * @version CVS $Id$
    */
  -public class MountNode extends AbstractProcessingNode {
  +public class MountNode extends AbstractProcessingNode 
  +implements Disposable {
   
       /** The 'uri-prefix' attribute */
       private final VariableResolver prefix;
  @@ -125,7 +127,10 @@
           return processor;
       }
   
  -    public void dispose() {
  +    /* (non-Javadoc)
  +     * @see org.apache.avalon.framework.activity.Disposable#dispose()
  +     */
  +    public void dispose() {       
           Iterator iter = this.processors.values().iterator();
           while(iter.hasNext()) {
               ((TreeProcessor)iter.next()).dispose();