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 2003/05/08 23:24:46 UTC

cvs commit: avalon-excalibur/fortress/src/java/org/apache/avalon/fortress/impl/handler ComponentFactory.java

bloritsch    2003/05/08 14:24:46

  Modified:    fortress/src/java/org/apache/avalon/fortress/impl
                        AbstractContainer.java
               fortress/src/java/org/apache/avalon/fortress/impl/handler
                        ComponentFactory.java
  Log:
  handle lengage errors on initialization, and convert them to regular exceptions
  
  Revision  Changes    Path
  1.25      +16 -5     avalon-excalibur/fortress/src/java/org/apache/avalon/fortress/impl/AbstractContainer.java
  
  Index: AbstractContainer.java
  ===================================================================
  RCS file: /home/cvs/avalon-excalibur/fortress/src/java/org/apache/avalon/fortress/impl/AbstractContainer.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- AbstractContainer.java	2 May 2003 04:15:20 -0000	1.24
  +++ AbstractContainer.java	8 May 2003 21:24:46 -0000	1.25
  @@ -622,7 +622,7 @@
               try
               {
                   final ComponentHandler handler = entry.getHandler();
  -                
  +
                   // Depending on the activation policy of the component decide
                   //  how to initialize the component.  Make sure that we can
                   //  perform the specified activation policy, if not modify it.
  @@ -635,7 +635,7 @@
                           activation = ComponentHandlerMetaData.ACTIVATION_INLINE;
                       }
                   }
  -                
  +
                   // We now have an activation policy we can handle.
                   switch ( activation )
                   {
  @@ -647,12 +647,12 @@
                           new PrepareHandlerCommand( handler, getLogger() );
                       m_commandQueue.enqueue( element );
                       break;
  -                    
  +
                   case ComponentHandlerMetaData.ACTIVATION_INLINE:
                       // Initialize the component now.
                       handler.prepareHandler();
                       break;
  -                    
  +
                   default: // ComponentHandlerMetaData.ACTIVATION_LAZY
                       if ( getLogger().isDebugEnabled() )
                       {
  @@ -674,6 +674,17 @@
                       getLogger().warn( message, e );
                   }
                   buffer.add( e );
  +            }
  +            catch ( final LinkageError le )
  +            {
  +                final String cName = entry.getMetaData().getName();
  +
  +                if ( getLogger().isWarnEnabled() )
  +                {
  +                    final String message = "Could not initialize component " + cName;
  +                    getLogger().warn( message, le );
  +                }
  +                buffer.add( le );
               }
           }
   
  
  
  
  1.24      +47 -37    avalon-excalibur/fortress/src/java/org/apache/avalon/fortress/impl/handler/ComponentFactory.java
  
  Index: ComponentFactory.java
  ===================================================================
  RCS file: /home/cvs/avalon-excalibur/fortress/src/java/org/apache/avalon/fortress/impl/handler/ComponentFactory.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- ComponentFactory.java	25 Apr 2003 13:31:03 -0000	1.23
  +++ ComponentFactory.java	8 May 2003 21:24:46 -0000	1.24
  @@ -64,6 +64,7 @@
   import org.apache.avalon.framework.parameters.Parameters;
   import org.apache.avalon.framework.parameters.Parameterizable;
   import org.apache.avalon.framework.service.ServiceManager;
  +import org.apache.avalon.framework.CascadingException;
   import org.apache.excalibur.instrument.AbstractLogEnabledInstrumentable;
   import org.apache.excalibur.instrument.CounterInstrument;
   import org.apache.excalibur.mpool.ObjectFactory;
  @@ -171,47 +172,56 @@
       public Object newInstance()
           throws Exception
       {
  -        final Object component = m_componentClass.newInstance();
  +        final Object component;
   
  -        if ( getLogger().isDebugEnabled() )
  +        try
           {
  -            final String message =
  -                "ComponentFactory creating new instance of " +
  -                m_componentClass.getName() + ".";
  -            getLogger().debug( message );
  -        }
  -
  -        ContainerUtil.enableLogging( component, m_componentLogger );
  +            component = m_componentClass.newInstance();
   
  -        if ( component instanceof Loggable )
  -        {
  -            final org.apache.log.Logger logkitLogger =
  -                LogKit2AvalonLoggerAdapter.createLogger( m_componentLogger );
  -            ( (Loggable) component ).setLogger( logkitLogger );
  +            if ( getLogger().isDebugEnabled() )
  +            {
  +                final String message =
  +                    "ComponentFactory creating new instance of " +
  +                    m_componentClass.getName() + ".";
  +                getLogger().debug( message );
  +            }
  +
  +            ContainerUtil.enableLogging( component, m_componentLogger );
  +
  +            if ( component instanceof Loggable )
  +            {
  +                final org.apache.log.Logger logkitLogger =
  +                    LogKit2AvalonLoggerAdapter.createLogger( m_componentLogger );
  +                ( (Loggable) component ).setLogger( logkitLogger );
  +            }
  +
  +            ContainerUtil.contextualize( component, m_context );
  +            if ( component instanceof Composable )
  +            {
  +                ContainerUtil.compose( component, new WrapperComponentManager( m_serviceManager ) );
  +            }
  +            ContainerUtil.service( component, m_serviceManager );
  +            ContainerUtil.configure( component, m_configuration );
  +
  +            if ( component instanceof Parameterizable )
  +            {
  +                ContainerUtil.parameterize( component, Parameters.fromConfiguration( m_configuration ) );
  +            }
  +
  +            m_extManager.executeCreationExtensions( component, m_context );
  +
  +            ContainerUtil.initialize( component );
  +
  +            ContainerUtil.start( component );
  +
  +            if ( m_newInstance.isActive() )
  +            {
  +                m_newInstance.increment();
  +            }
           }
  -
  -        ContainerUtil.contextualize( component, m_context );
  -        if ( component instanceof Composable )
  -        {
  -            ContainerUtil.compose( component, new WrapperComponentManager( m_serviceManager ) );
  -        }
  -        ContainerUtil.service( component, m_serviceManager );
  -        ContainerUtil.configure( component, m_configuration );
  -
  -        if ( component instanceof Parameterizable )
  -        {
  -            ContainerUtil.parameterize( component, Parameters.fromConfiguration( m_configuration ) );
  -        }
  -
  -        m_extManager.executeCreationExtensions( component, m_context );
  -
  -        ContainerUtil.initialize( component );
  -
  -        ContainerUtil.start( component );
  -
  -        if ( m_newInstance.isActive() )
  +        catch (LinkageError le)
           {
  -            m_newInstance.increment();
  +            throw new CascadingException("Could not load component", le);
           }
   
           return component;
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org