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]