vgritsenko 01/08/15 18:35:26
Modified: src/org/apache/cocoon/sitemap SitemapComponentSelector.java
Log:
patching memory leaks. taken excalibur's approach to store component-handler mapping.
Revision Changes Path
1.7 +12 -9
xml-cocoon2/src/org/apache/cocoon/sitemap/SitemapComponentSelector.java
Index: SitemapComponentSelector.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/sitemap/SitemapComponentSelector.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- SitemapComponentSelector.java 2001/07/29 11:08:03 1.6
+++ SitemapComponentSelector.java 2001/08/16 01:35:26 1.7
@@ -23,17 +23,21 @@
/** Default component manager for Cocoon's sitemap components.
* @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version CVS $Id: SitemapComponentSelector.java,v 1.6 2001/07/29 11:08:03
cziegeler Exp $
+ * @version CVS $Id: SitemapComponentSelector.java,v 1.7 2001/08/16 01:35:26
vgritsenko Exp $
*/
public class SitemapComponentSelector extends ExcaliburComponentSelector {
private Map mime_types;
private SitemapComponentSelector parentSelector;
+ /** Dynamic component handlers mapping. */
+ private Map componentMapping;
+
/** The conctructors (same as the Avalon ComponentManager)
*/
public SitemapComponentSelector() {
super();
this.mime_types = new HashMap();
+ componentMapping = Collections.synchronizedMap(new HashMap());
}
public void setParentSelector(SitemapComponentSelector newSelector) {
@@ -50,6 +54,7 @@
} catch (ComponentException ce) {
if (this.parentSelector != null) {
component = this.parentSelector.select(hint);
+ componentMapping.put(component, this.parentSelector);
} else {
throw ce;
}
@@ -59,14 +64,12 @@
}
public void release(Component component) {
- // FIXME (CZ)
- // Is this alright, to release the component using both
- // selectors?
- // But at this stage we don't know which selector
- // was used to select the component!
- super.release(component);
- if (this.parentSelector != null) {
- this.parentSelector.release(component);
+ SitemapComponentSelector selector =
(SitemapComponentSelector)componentMapping.get(component);
+ if(selector != null) {
+ componentMapping.remove(component);
+ selector.release(component);
+ } else {
+ super.release(component);
}
}
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]