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