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>