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/07/23 14:47:19 UTC
cvs commit: jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/handler ThreadSafeComponentHandler.java AbstractThreadSafeComponentHandler.java LazyThreadSafeComponentHandler.java
crafterm 2002/07/23 05:47:19
Modified: fortress/src/java/org/apache/excalibur/fortress/handler
ThreadSafeComponentHandler.java
Removed: fortress/src/java/org/apache/excalibur/fortress/handler
AbstractThreadSafeComponentHandler.java
LazyThreadSafeComponentHandler.java
Log:
Removed LazyThreadSafeComponentHandler as it's no longer needed. This
functionality is provided by the generic 'activation' attribute on component
definitions.
Revision Changes Path
1.21 +70 -7 jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/handler/ThreadSafeComponentHandler.java
Index: ThreadSafeComponentHandler.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/handler/ThreadSafeComponentHandler.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- ThreadSafeComponentHandler.java 22 Jul 2002 17:46:58 -0000 1.20
+++ ThreadSafeComponentHandler.java 23 Jul 2002 12:47:18 -0000 1.21
@@ -7,8 +7,12 @@
*/
package org.apache.excalibur.fortress.handler;
+import org.apache.avalon.excalibur.logger.LoggerManager;
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.activity.Startable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.excalibur.fortress.lifecycle.LifecycleExtensionManager;
@@ -21,9 +25,10 @@
* @version CVS $Revision$ $Date$
* @since 4.0
*/
-public final class ThreadSafeComponentHandler
- extends AbstractThreadSafeComponentHandler
+public final class ThreadSafeComponentHandler extends AbstractComponentHandler
{
+ private Object m_instance;
+
/**
* Create a ComponentHandler that takes care of hiding the details of
* whether a Component is ThreadSafe, Poolable, or SingleThreaded.
@@ -53,22 +58,80 @@
return;
}
- m_instance = this.m_factory.newInstance();
+ if( m_instance == null )
+ {
+ m_instance = this.m_factory.newInstance();
+ }
if( m_logger.isDebugEnabled() )
{
- m_logger.debug( "ComponentHandler initialized for: " + this.m_factory.getCreatedClass().getName() );
+ if( this.m_factory != null )
+ {
+ m_logger.debug( "ComponentHandler initialized for: " + this.m_factory.getCreatedClass().getName() );
+ }
+ else
+ {
+ m_logger.debug( "ComponentHandler initialized for: " + this.m_instance.getClass().getName() );
+ }
}
m_initialized = true;
}
/**
- * Obtain the instance.
+ * Get a reference of the desired Component
*/
- protected Object getInstance()
+ public final Object get()
throws Exception
{
+ super.get();
+
return m_instance;
+ }
+
+ /**
+ * Return a reference of the desired Component
+ */
+ public void put( final Object component )
+ {
+ super.put( component );
+ }
+
+ /**
+ * Dispose of the ComponentHandler and any associated Pools and Factories.
+ */
+ public void dispose()
+ {
+ try
+ {
+ if( null != m_factory )
+ {
+ m_factory.dispose( m_instance );
+ }
+ else
+ {
+ if( m_instance instanceof Startable )
+ {
+ ( (Startable)m_instance ).stop();
+ }
+
+ if( m_instance instanceof Disposable )
+ {
+ ( (Disposable)m_instance ).dispose();
+ }
+ }
+
+ m_instance = null;
+ }
+ catch( final Exception e )
+ {
+ if( m_logger.isWarnEnabled() )
+ {
+ m_logger.warn( "Error decommissioning component: " +
+ m_factory.getCreatedClass().getName(), e );
+ }
+ }
+
+ m_disposed = true;
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>