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:[EMAIL PROTECTED]">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: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]