You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by pr...@apache.org on 2002/08/02 17:13:51 UTC

cvs commit: jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/kernel DefaultKernel.java

proyal      2002/08/02 08:13:51

  Modified:    src/java/org/apache/avalon/phoenix/components/kernel
                        DefaultKernel.java
  Log:
  Add switch to allow invalid applications to be added at startup.
  
  Revision  Changes    Path
  1.76      +37 -3     jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/kernel/DefaultKernel.java
  
  Index: DefaultKernel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/kernel/DefaultKernel.java,v
  retrieving revision 1.75
  retrieving revision 1.76
  diff -u -r1.75 -r1.76
  --- DefaultKernel.java	26 Jul 2002 09:49:21 -0000	1.75
  +++ DefaultKernel.java	2 Aug 2002 15:13:51 -0000	1.76
  @@ -14,6 +14,8 @@
   import org.apache.avalon.framework.activity.Disposable;
   import org.apache.avalon.framework.activity.Initializable;
   import org.apache.avalon.framework.configuration.Configuration;
  +import org.apache.avalon.framework.configuration.Configurable;
  +import org.apache.avalon.framework.configuration.ConfigurationException;
   import org.apache.avalon.framework.container.ContainerUtil;
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.avalon.framework.logger.Logger;
  @@ -47,7 +49,7 @@
    */
   public class DefaultKernel
       extends AbstractLogEnabled
  -    implements Kernel, KernelMBean, Initializable, Serviceable, Disposable
  +    implements Kernel, KernelMBean, Initializable, Serviceable, Disposable, Configurable
   {
       private static final Resources REZ =
           ResourceManager.getPackageResources( DefaultKernel.class );
  @@ -65,6 +67,8 @@
   
       private HashMap m_entries = new HashMap();
   
  +    private boolean m_addInvalidApplications;
  +
       public void service( final ServiceManager serviceManager )
           throws ServiceException
       {
  @@ -74,6 +78,13 @@
           m_validator = (ConfigurationValidator)serviceManager.lookup( ConfigurationValidator.ROLE );
       }
   
  +    public void configure( Configuration configuration )
  +        throws ConfigurationException
  +    {
  +        m_addInvalidApplications =
  +            configuration.getChild( "add-invalid-applications" ).getValueAsBoolean( false );
  +    }
  +
       public void initialize()
           throws Exception
       {
  @@ -146,9 +157,7 @@
                       newApp.setApplicationContext( context );
   
                       ContainerUtil.initialize( newApp );
  -                    ContainerUtil.start( newApp );
   
  -                    entry.setApplication( newApp );
                       application = newApp;
                   }
                   catch( final Throwable t )
  @@ -162,6 +171,31 @@
                                          entry.getMetaData().getName() );
                       throw new CascadingException( message, t );
                   }
  +
  +                try
  +                {
  +                    ContainerUtil.start( application );
  +                }
  +                catch( final Throwable t )
  +                {
  +                    final String message =
  +                        REZ.getString( "kernel.error.entry.start", entry.getMetaData().getName() );
  +
  +                    if( m_addInvalidApplications )
  +                    {
  +                        getLogger().warn( message, t );
  +                    }
  +                    else
  +                    {
  +                        //Initialization failed so clean entry
  +                        //so invalid instance is not used
  +                        entry.setApplication( null );
  +
  +                        throw new CascadingException( message, t );
  +                    }
  +                }
  +
  +                entry.setApplication( application );
   
                   // manage application
                   try
  
  
  

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