mcconnell    2003/08/19 01:32:32

  Modified:    merlin   project.xml
               merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl
                        DefaultKernelContext.java
  Log:
  Enhancing embedded deployment.
  
  Revision  Changes    Path
  1.30      +1 -0      avalon-sandbox/merlin/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/merlin/project.xml,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- project.xml       11 Aug 2003 22:38:16 -0000      1.29
  +++ project.xml       19 Aug 2003 08:32:32 -0000      1.30
  @@ -251,6 +251,7 @@
           <directory>${basedir}/conf</directory>
           <includes> 
             <include>**/*.properties</include>
  +          <include>kernel.xml</include>
           </includes>
         </resource>
       </resources>
  
  
  
  1.12      +68 -44    
avalon-sandbox/merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl/DefaultKernelContext.java
  
  Index: DefaultKernelContext.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-sandbox/merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl/DefaultKernelContext.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- DefaultKernelContext.java 19 Aug 2003 07:34:30 -0000      1.11
  +++ DefaultKernelContext.java 19 Aug 2003 08:32:32 -0000      1.12
  @@ -53,19 +53,8 @@
   import java.io.File;
   import java.net.URL;
   import java.util.ArrayList;
  +import java.io.InputStream;
   
  -import org.apache.avalon.merlin.kernel.KernelContext;
  -import org.apache.avalon.merlin.kernel.KernelException;
  -import org.apache.avalon.repository.Repository;
  -import org.apache.avalon.repository.ProxyContext;
  -import org.apache.avalon.repository.impl.DefaultAuthenticator;
  -import org.apache.avalon.repository.impl.DefaultFileRepository;
  -import org.apache.avalon.framework.logger.Logger;
  -import org.apache.avalon.framework.logger.AbstractLogEnabled;
  -import org.apache.avalon.framework.configuration.Configuration;
  -import org.apache.avalon.framework.configuration.DefaultConfiguration;
  -import org.apache.avalon.framework.configuration.ConfigurationException;
  -import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
   import org.apache.avalon.composition.data.builder.XMLDeploymentProfileCreator;
   import org.apache.avalon.composition.data.CategoryDirective;
   import org.apache.avalon.composition.data.CategoriesDirective;
  @@ -81,8 +70,23 @@
   import org.apache.avalon.composition.model.ModelFactory;
   import org.apache.avalon.composition.model.impl.DefaultSystemContext;
   import org.apache.avalon.composition.model.impl.DefaultModelFactory;
  -import org.apache.excalibur.mpool.PoolManager;
  +import org.apache.avalon.framework.logger.Logger;
  +import org.apache.avalon.framework.logger.AbstractLogEnabled;
  +import org.apache.avalon.framework.configuration.Configuration;
  +import org.apache.avalon.framework.configuration.DefaultConfiguration;
  +import org.apache.avalon.framework.configuration.ConfigurationException;
  +import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
  +import org.apache.avalon.merlin.kernel.KernelContext;
  +import org.apache.avalon.merlin.kernel.KernelException;
  +import org.apache.avalon.meta.ConfigurationBuilder;
  +import org.apache.avalon.repository.Repository;
  +import org.apache.avalon.repository.ProxyContext;
  +import org.apache.avalon.repository.impl.DefaultAuthenticator;
  +import org.apache.avalon.repository.impl.DefaultFileRepository;
   import org.apache.excalibur.configuration.ConfigurationUtil;
  +import org.apache.excalibur.mpool.PoolManager;
  +
  +import org.xml.sax.InputSource;
   
   /**
    * Default implementation of a kernel context.
  @@ -217,7 +221,16 @@
   
           m_system = system;
           m_library = library;
  -        m_home = new File( home, "home" );
  +
  +        if( home != null )
  +        {
  +            m_home = home;
  +        }
  +        else
  +        {
  +            m_home = new File( System.getProperty( "user.work" ));
  +        }
  +
           m_temp = new File( System.getProperty( "java.io.tmpdir" ) );
   
           if( kernel != null )
  @@ -227,8 +240,34 @@
           }
           else
           {
  -            m_kernelURL = loadKernelDirective( repository );
  -            m_kernel = getKernelConfiguration( m_kernelURL );
  +            Configuration kernelConfig = null;
  +            URL kernelURL = null;
  +            try
  +            {
  +                kernelURL = loadKernelDirective( repository );
  +                kernelConfig = getKernelConfiguration( kernelURL );
  +            }
  +            catch( Throwable e )
  +            {
  +                kernelURL = null;
  +                try
  +                {
  +                    final InputStream stream =
  +                      DefaultKernelContext.class.getClassLoader().
  +                        getResourceAsStream( "kernel.xml" );
  +                    final InputSource source = 
  +                      new InputSource( stream );
  +                    kernelConfig = ConfigurationBuilder.build( source );
  +                }
  +                catch( Throwable ee )
  +                {
  +                    final String error = 
  +                      "Unable to resolve kernel profile.";
  +                    throw new KernelException( error, ee );
  +                }
  +            }
  +            m_kernel = kernelConfig;
  +            m_kernelURL = kernelURL;
           }
   
           m_debug = debug;
  @@ -254,12 +293,20 @@
           LoggingDescriptor logging = createLoggingDescriptor( conf );
           boolean trace = conf.getAttributeAsBoolean( "trace", false );
           m_logging = bootstrapLoggingManager( home, logging, trace );
  -
           m_kernelLogger = m_logging.getLoggerForCategory( logging.getName() );
           enableLogging( getKernelLogger().getChildLogger( CATEGORY_NAME ) );
           getLogger().debug( "logging system established" );
   
           //
  +        // if the debug flag is enabled then print the context object
  +        //
  +
  +        if( getDebugFlag() )
  +        {
  +            System.out.println( "\n" + toString() + "\n" );
  +        }
  +
  +        //
           // if the kernel configuration declares a repository then we build
           // a repository based on that defintion otherwise we default to the 
           // bootstrap repository declared under the constructor
  @@ -306,15 +353,6 @@
                 "Unexpected exception while creating internal model factory.";
               throw new KernelException( error, e );
           }
  -
  -        //
  -        // if the debug flag is enabled then print the context object
  -        //
  -
  -        if( getDebugFlag() )
  -        {
  -            getLogger().info( "\n" + toString() + "\n" );
  -        }
       }
   
       private Repository createRepository( File root, Configuration config ) 
  @@ -556,7 +594,7 @@
       public String toString()
       {
           StringBuffer buffer = new StringBuffer( "  version: " );
  -        buffer.append( "  " + getVersionString() );
  +        buffer.append( getVersionString() );
           buffer.append( "\n  home: " + getHomePath() );
           buffer.append( "\n  system: " + m_system );
           buffer.append( "\n  library: " + getLibraryPath() );
  @@ -766,22 +804,8 @@
           return new FileTargetProvider( file );
       }
   
  -    private URL loadKernelDirective( Repository repository ) throws KernelException
  +    private URL loadKernelDirective( Repository repository ) throws Exception
       {
  -        try
  -        {
  -            return repository.getArtifact( "merlin", "kernel", "", "xml" );
  -        }
  -        catch( Throwable re )
  -        {
  -            try
  -            {
  -                return repository.getArtifact( "merlin", "kernel", "3.0", "xml" );
  -            }
  -            catch( Throwable e )
  -            {
  -                return null;
  -            }
  -        }
  +        return repository.getArtifact( "merlin", "kernel", "", "xml" );
       }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to