You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by bl...@apache.org on 2002/02/14 23:00:29 UTC

cvs commit: jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler PoolableComponentHandler.java

bloritsch    02/02/14 14:00:29

  Modified:    src/java/org/apache/avalon/excalibur/monitor
                        ActiveMonitor.java
               src/scratchpad/org/apache/avalon/excalibur/system
                        ContainerManager.java
               src/scratchpad/org/apache/avalon/excalibur/system/handler
                        PoolableComponentHandler.java
  Log:
  Started to add Profile TestCase for ContainerManager--made fixes to bugs
  
  Revision  Changes    Path
  1.5       +3 -3      jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/monitor/ActiveMonitor.java
  
  Index: ActiveMonitor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/monitor/ActiveMonitor.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ActiveMonitor.java	11 Dec 2001 16:14:31 -0000	1.4
  +++ ActiveMonitor.java	14 Feb 2002 22:00:29 -0000	1.5
  @@ -12,7 +12,7 @@
   import org.apache.avalon.framework.configuration.Configurable;
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.configuration.ConfigurationException;
  -import org.apache.avalon.framework.logger.AbstractLoggable;
  +import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.avalon.framework.thread.ThreadSafe;
   
   import java.lang.reflect.Constructor;
  @@ -38,9 +38,9 @@
    * </pre>
    *
    * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
  - * @version $Id: ActiveMonitor.java,v 1.4 2001/12/11 16:14:31 bloritsch Exp $
  + * @version $Id: ActiveMonitor.java,v 1.5 2002/02/14 22:00:29 bloritsch Exp $
    */
  -public final class ActiveMonitor extends AbstractLoggable
  +public final class ActiveMonitor extends AbstractLogEnabled
       implements Monitor, Component, Startable, ThreadSafe, Configurable, Runnable
   {
       private static final Class[]    m_constructorParams = new Class[] { String.class };
  
  
  
  1.26      +70 -13    jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/ContainerManager.java
  
  Index: ContainerManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/ContainerManager.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- ContainerManager.java	14 Feb 2002 15:26:13 -0000	1.25
  +++ ContainerManager.java	14 Feb 2002 22:00:29 -0000	1.26
  @@ -109,7 +109,7 @@
    * </table>
    *
    * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
  - * @version CVS $Revision: 1.25 $ $Date: 2002/02/14 15:26:13 $
  + * @version CVS $Revision: 1.26 $ $Date: 2002/02/14 22:00:29 $
    */
   public class ContainerManager implements Disposable
   {
  @@ -137,6 +137,7 @@
       private final DefaultConfigurationSerializer m_configSerializer =
                                                        new DefaultConfigurationSerializer();
   
  +    private final Logger                  m_primordialLogger;
       private final Parameters              m_initialParameters;
       private final ClassLoader             m_contextClassLoader;
       private final File                    m_contextDirectory;
  @@ -163,7 +164,18 @@
       public ContainerManager( final Parameters initialParameters )
           throws InitializationException
       {
  -        this( initialParameters, null );
  +        this( initialParameters, new PrimordialLogger() );
  +    }
  +
  +    /**
  +     * This constructor creates a new ContainerManager with a PrimordialLogger
  +     * defined.
  +     */
  +    public ContainerManager( final Parameters initialParameters,
  +                             final Logger primordialLogger )
  +        throws InitializationException
  +    {
  +        this( initialParameters, primordialLogger, null, Thread.currentThread().getContextClassLoader() );
       }
   
       /**
  @@ -185,6 +197,20 @@
                                final ClassLoader rootClassLoader )
           throws InitializationException
       {
  +        this( initialParameters, new PrimordialLogger(), defaultLogManager, rootClassLoader );
  +    }
  +
  +    /**
  +     * Create a ContainerManager with all the information in the Context, and the
  +     * supplied LoggerManager.
  +     */
  +    public ContainerManager( final Parameters initialParameters,
  +                             final Logger primordialLogger,
  +                             final LoggerManager defaultLogManager,
  +                             final ClassLoader rootClassLoader )
  +        throws InitializationException
  +    {
  +        m_primordialLogger = ( null == primordialLogger ) ? new PrimordialLogger() : primordialLogger;
           m_initialParameters = initialParameters;
           m_contextClassLoader = rootClassLoader;
           m_contextDirectory = new File(initialParameters.getParameter( CONTEXT_DIRECTORY, "./" ) );
  @@ -237,7 +263,7 @@
   
                   SourceResolverImpl resolver = new SourceResolverImpl();
                   resolver.enableLogging( getLogger() );
  -                resolver.contextualize( getContext() );
  +                resolver.contextualize( getRootContext() );
                   resolver.compose( manager );
                   manager.put( resolver.ROLE, resolver );
               }
  @@ -281,7 +307,7 @@
                   if ( instance instanceof LogEnabled )
                   {
                       m_validator.checkLogEnabled();
  -                    ( (LogEnabled) instance ).enableLogging( getLogger() );
  +                    ( (LogEnabled) instance ).enableLogging( getLogger(true) );
                   }
   
                   if ( instance instanceof Contextualizable )
  @@ -454,6 +480,19 @@
        */
       public Logger getLogger()
       {
  +        return getLogger( false );
  +    }
  +
  +    /**
  +     * Get a reference the default Logger.
  +     */
  +    public Logger getLogger(final boolean force)
  +    {
  +        if ( !force && m_logManager == null )
  +        {
  +            return m_primordialLogger;
  +        }
  +
           return getLoggerManager().getDefaultLogger();
       }
   
  @@ -506,11 +545,15 @@
               }
               else
               {
  +                SourceResolver resolver = null;
                   try
                   {
  -                    m_containerConfig = m_configBuilder.buildFromFile(
  -                            new File( m_contextDirectory, configFile )
  -                    );
  +                    resolver = (SourceResolver) getComponentManager().lookup(SourceResolver.ROLE);
  +                    Source src = resolver.resolve( configFile );
  +
  +                    m_containerConfig = m_configBuilder.build( src.getInputStream() );
  +
  +                    resolver.release( src );
                   }
                   catch (Exception e)
                   {
  @@ -521,6 +564,10 @@
                           getLogger().warn("Could not read configuration file: " + configFile, e);
                       }
                   }
  +                finally
  +                {
  +                    getComponentManager().release(resolver);
  +                }
               }
           }
   
  @@ -586,18 +633,28 @@
               }
               else
               {
  +                SourceResolver resolver = null;
                   try
                   {
  -                    m_logKitConfig = m_configBuilder.buildFromFile(
  -                            new File( m_contextDirectory, configFile )
  -                    );
  +                    resolver = (SourceResolver) getComponentManager().lookup(SourceResolver.ROLE);
  +                    Source src = resolver.resolve( configFile );
  +
  +                    m_logKitConfig = m_configBuilder.build( src.getInputStream() );
  +
  +                    resolver.release( src );
                   }
                   catch (Exception e)
                   {
                       m_logKitConfig = EMPTY_CONFIG;
  -                    // We cannot log the exception as the logger has not been set up.
  -                    throw new CascadingRuntimeException(
  -                            "Could not load config file for LogKitConfig.", e );
  +
  +                    if ( getLogger().isWarnEnabled() )
  +                    {
  +                        getLogger().warn("Could not read configuration file: " + configFile, e);
  +                    }
  +                }
  +                finally
  +                {
  +                    getComponentManager().release(resolver);
                   }
               }
           }
  
  
  
  1.6       +2 -2      jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/PoolableComponentHandler.java
  
  Index: PoolableComponentHandler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/system/handler/PoolableComponentHandler.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PoolableComponentHandler.java	12 Feb 2002 21:30:43 -0000	1.5
  +++ PoolableComponentHandler.java	14 Feb 2002 22:00:29 -0000	1.6
  @@ -25,7 +25,7 @@
    * and destroyed correctly.
    *
    * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
  - * @version CVS $Revision: 1.5 $ $Date: 2002/02/12 21:30:43 $
  + * @version CVS $Revision: 1.6 $ $Date: 2002/02/14 22:00:29 $
    * @since 4.0
    */
   public final class PoolableComponentHandler implements ComponentHandler {
  @@ -62,7 +62,7 @@
               new ComponentFactory( componentClass, config, manager, context, roles, logkit );
   
           PoolManager poolManager = (PoolManager) context.get( Container.POOL_MANAGER );
  -        m_pool = poolManager.getManagedPool( m_factory, config.getAttributeAsInteger( "pool-min", 4 ) );
  +        m_pool = poolManager.getManagedPool( m_factory, config.getAttributeAsInteger( "pool-min", 10 ) );
           m_logger = logkit.getLoggerForCategory("system.handler.poolable");
       }
   
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>