You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by cr...@apache.org on 2002/05/13 01:38:30 UTC
cvs commit: jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component DefaultComponentFactory.java
crafterm 02/05/12 16:38:30
Modified: component/src/java/org/apache/avalon/excalibur/component
DefaultComponentFactory.java
Log:
Documented use of the ComponentManagerProxy class within this handler
Revision Changes Path
1.2 +18 -1 jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/DefaultComponentFactory.java
Index: DefaultComponentFactory.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/component/src/java/org/apache/avalon/excalibur/component/DefaultComponentFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultComponentFactory.java 4 Apr 2002 05:09:02 -0000 1.1
+++ DefaultComponentFactory.java 12 May 2002 23:38:30 -0000 1.2
@@ -38,7 +38,7 @@
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
* @author <a href="mailto:paul@luminas.co.uk">Paul Russell</a>
* @author <a href="mailto:ryan@silveregg.co.jp">Ryan Shaw</a>
- * @version CVS $Revision: 1.1 $ $Date: 2002/04/04 05:09:02 $
+ * @version CVS $Revision: 1.2 $ $Date: 2002/05/12 23:38:30 $
* @since 4.0
*/
public class DefaultComponentFactory
@@ -172,6 +172,7 @@
if( component instanceof Composable )
{
+ // wrap the real CM with a proxy, see below for more info
proxy = new ComponentManagerProxy( m_componentManager );
( (Composable)component ).compose( proxy );
}
@@ -288,6 +289,8 @@
if( component instanceof Composable )
{
+ // ensure any components looked up by this Composable are properly
+ // released, if they haven't been released already
( (ComponentManagerProxy)m_components.get( component ) ).releaseAll();
}
@@ -304,6 +307,15 @@
return m_logEnabledLogger;
}
+ /**
+ * Proxy <code>ComponentManager</code> class to maintain references to
+ * components looked up within a <code>Composable</code> instance created
+ * by this factory.
+ *
+ * This class acts a safety net to ensure that all components looked
+ * up within a <code>Composable</code> instance created by this factory are
+ * released when the instance itself is released.
+ */
private static class ComponentManagerProxy implements ComponentManager
{
private final ComponentManager m_realManager;
@@ -345,6 +357,11 @@
m_unreleased.remove( component );
}
+ /**
+ * Releases all components that have been looked up through this
+ * <code>ComponentManager</code>, that have not yet been released
+ * via user code.
+ */
private void releaseAll()
{
Component[] unreleased;
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>