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 2002/02/07 12:55:18 UTC

cvs commit: xml-cocoon2/src/java/org/apache/cocoon/components CocoonComponentManager.java

cziegeler    02/02/07 03:55:18

  Modified:    src/java/org/apache/cocoon/components
                        CocoonComponentManager.java
  Log:
  Fix for new RequestLifecycle components when entering subsitemap
  
  Revision  Changes    Path
  1.6       +21 -8     xml-cocoon2/src/java/org/apache/cocoon/components/CocoonComponentManager.java
  
  Index: CocoonComponentManager.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/CocoonComponentManager.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- CocoonComponentManager.java	4 Feb 2002 12:36:28 -0000	1.5
  +++ CocoonComponentManager.java	7 Feb 2002 11:55:18 -0000	1.6
  @@ -76,7 +76,7 @@
    * by a special lifecycle handling for a RequestLifecycleComponent.
    *
    * @author <a href="mailto:cziegeler@org.com">Carsten Ziegeler</a>
  - * @version CVS $Id: CocoonComponentManager.java,v 1.5 2002/02/04 12:36:28 cziegeler Exp $
  + * @version CVS $Id: CocoonComponentManager.java,v 1.6 2002/02/07 11:55:18 cziegeler Exp $
    */
   public final class CocoonComponentManager
   extends ExcaliburComponentManager
  @@ -108,6 +108,8 @@
           super(manager);
       }
   
  +    private static Integer ONE = new Integer(1);
  +
       /**
        * This hook must be called by the sitemap each time a sitemap is entered
        */
  @@ -116,7 +118,16 @@
               environmentStack.set(new Stack());
           }
           final Stack stack = (Stack)environmentStack.get();
  -        stack.push(new Object[] {resolver, objectModel, new HashMap(5)});
  +        if ( !stack.empty() ) {
  +            final Object[] objects = (Object[])stack.peek();
  +            if ( objects[1] == objectModel ) {
  +                stack.push(new Object[] {resolver,
  +                                        objectModel,
  +                                        objects[2],
  +                                        new Integer(((Integer)objects[3]).intValue()+1)});
  +            }
  +        }
  +        stack.push(new Object[] {resolver, objectModel, new HashMap(5), ONE});
       }
   
       /**
  @@ -126,12 +137,14 @@
           final Stack stack = (Stack)environmentStack.get();
           if ( null != stack && !stack.empty()) {
               final Object[] objects = (Object[])stack.pop();
  -            final Map components = (Map)objects[2];
  -            final Iterator iter = components.values().iterator();
  -            while (iter.hasNext()) {
  -                final Object[] o = (Object[])iter.next();
  -                final Component component = (Component)o[0];
  -                ((ComponentManager)o[1]).release( component );
  +            if (objects[3] == ONE) {
  +                final Map components = (Map)objects[2];
  +                final Iterator iter = components.values().iterator();
  +                while (iter.hasNext()) {
  +                    final Object[] o = (Object[])iter.next();
  +                    final Component component = (Component)o[0];
  +                    ((ComponentManager)o[1]).release( component );
  +                }
               }
           }
       }
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org