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