You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by le...@apache.org on 2002/08/07 05:22:11 UTC

cvs commit: jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress DefaultContainerManager.java

leif        2002/08/06 20:22:11

  Modified:    fortress/src/java/org/apache/excalibur/fortress
                        DefaultContainerManager.java
  Log:
  The ContextManager was not being initialized correctly, this was leading to cases
  where it was being intialized twice.  At the least it was being intialized late.
  
  Revision  Changes    Path
  1.19      +45 -10    jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/DefaultContainerManager.java
  
  Index: DefaultContainerManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/DefaultContainerManager.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- DefaultContainerManager.java	6 Aug 2002 20:42:24 -0000	1.18
  +++ DefaultContainerManager.java	7 Aug 2002 03:22:11 -0000	1.19
  @@ -105,19 +105,50 @@
       public DefaultContainerManager( ContextManager contextManager, Logger logger )
       {
           this.contextManager = contextManager;
  -        this.logger = logger == null ? createLoggerFromContext( this.contextManager.getContainerManagerContext() ) : logger;
  +        this.logger = logger == null ?
  +            createLoggerFromContext( this.contextManager.getContainerManagerContext() ) : logger;
       }
   
       public DefaultContainerManager( Context initParameters )
       {
  -        this( new ContextManager(initParameters, new NullLogger()), null );
  +        this( initParameters, null );
       }
   
       public DefaultContainerManager( Context initParameters, Logger logger )
       {
  -        this( new ContextManager(initParameters, logger), logger );
  +        this( getInitializedContextManager( initParameters, logger ), logger );
       }
   
  +    /**
  +     * Creates and initializes a contextManager given an initialization context.
  +     *  This is necessary so that these operations can complete before the
  +     *  super constructor has been executed.
  +     */
  +    private static ContextManager getInitializedContextManager( Context initParameters,
  +                                                                Logger logger )
  +    {
  +        // The context manager will use an internal coonsole logger if logger is null.
  +        ContextManager contextManager = new ContextManager(initParameters, logger);
  +        try
  +        {
  +            contextManager.initialize();
  +            return contextManager;
  +        }
  +        catch ( Exception e )
  +        {
  +            if ( logger == null )
  +            {
  +                logger = new ConsoleLogger( ConsoleLogger.LEVEL_INFO );
  +            }
  +            logger.fatalError( "Unable to initialize the contextManager.", e );
  +            
  +            // What should happen now.  There needs to be a failure mode here.
  +            // As is, this will result in an NPE, but it can't really be allowed
  +            // to continue without having been initialized.
  +            return null;
  +        }
  +    }
  +    
       protected Logger createLoggerFromContext( Context initParameters )
       {
           try
  @@ -127,7 +158,8 @@
           catch( ContextException ce )
           {
               Logger consoleLogger = new ConsoleLogger();
  -            consoleLogger.error( "Could not obtain logger manager from init parameters (this should not happen). Using console instead." );
  +            consoleLogger.error( "Could not obtain logger manager from init parameters "
  +                + "(this should not happen). Using console instead." );
               return consoleLogger;
           }
       }
  @@ -137,7 +169,6 @@
        */
       public void initialize() throws Exception
       {
  -        this.contextManager.initialize();
           initializeContainer();
       }
   
  @@ -149,13 +180,15 @@
   
               try
               {
  -                instance = ( (Class)this.contextManager.getContainerManagerContext().get( CONTAINER_CLASS ) ).newInstance();
  +                instance = ( (Class)this.contextManager.getContainerManagerContext().
  +                    get( CONTAINER_CLASS ) ).newInstance();
               }
               catch( Exception e )
               {
                   instance = null;
   
  -                throw new InitializationException( "Cannot set up container. Unable to create container class", e );
  +                throw new InitializationException(
  +                    "Cannot set up container. Unable to create container class", e );
               }
   
               validator = new ComponentStateValidator( instance );
  @@ -220,7 +253,8 @@
               {
                   instance = null;
   
  -                throw new InitializationException( "Cannot set up container. Startup lifecycle failure", e );
  +                throw new InitializationException(
  +                    "Cannot set up container. Startup lifecycle failure", e );
               }
   
               containerInstance = instance;
  @@ -260,7 +294,8 @@
                   {
                       if( getLogger().isWarnEnabled() )
                       {
  -                        getLogger().warn( "Caught an exception when stopping the Container, continuing with shutdown", e );
  +                        getLogger().warn( "Caught an exception when stopping the Container, "
  +                            + "continuing with shutdown", e );
                       }
                   }
               }
  
  
  

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