Author: mcconnell
Date: Sun Jun 27 17:12:28 2004
New Revision: 22204
Added:
avalon/trunk/central/laboratory/cache/etc/deliverables/
avalon/trunk/central/laboratory/cache/etc/deliverables/blocks/
avalon/trunk/central/laboratory/cache/etc/deliverables/blocks/avalon-cache.xml
Modified:
avalon/trunk/central/laboratory/cache/ (props changed)
avalon/trunk/central/laboratory/cache/build.xml
avalon/trunk/central/laboratory/cache/etc/main/BLOCK-INF/block.xml
avalon/trunk/central/system/index.xml
avalon/trunk/runtime/merlin/cli/src/java/org/apache/avalon/merlin/cli/Main.java
avalon/trunk/runtime/merlin/impl/src/java/org/apache/avalon/merlin/impl/DefaultKernel.java
avalon/trunk/runtime/repository/util/src/java/org/apache/avalon/repository/util/LoaderUtils.java
avalon/trunk/runtime/util/defaults/src/java/org/apache/avalon/util/defaults/DefaultsBuilder.java
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Home.java
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Resource.java
Log:
Modified: avalon/trunk/central/laboratory/cache/build.xml
==============================================================================
--- avalon/trunk/central/laboratory/cache/build.xml (original)
+++ avalon/trunk/central/laboratory/cache/build.xml Sun Jun 27 17:12:28 2004
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<project name="avalon-planet-cache" default="install" basedir="."
+<project name="avalon-cache" default="install" basedir="."
xmlns:x="antlib:org.apache.avalon.tools">
<x:home index="../../system/index.xml"/>
Added: avalon/trunk/central/laboratory/cache/etc/deliverables/blocks/avalon-cache.xml
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/cache/etc/deliverables/blocks/avalon-cache.xml Sun Jun 27 17:12:28 2004
@@ -0,0 +1,33 @@
+
+<!--
+Embedded block directive for cache component.
+-->
+
+<container name="repository">
+
+ <!-- TODO: figure out how to put the classpath in automatically -->
+
+ <classloader>
+ <classpath>
+ <artifact>jar:avalon/framework/avalon-framework-api#4.3.0-DEV</artifact>
+ <artifact>jar:avalon/repository/avalon-repository-main#2.1.0-DEV</artifact>
+ <artifact>jar:avalon/repository/avalon-repository-spi#2.0.0</artifact>
+ <artifact>jar:avalon/repository/avalon-repository-api#2.1.0-DEV</artifact>
+ <artifact>jar:avalon/repository/avalon-repository-util#2.0.0</artifact>
+ <artifact>jar:avalon/util/avalon-util-exception#1.0.0</artifact>
+ <artifact>jar:avalon/util/avalon-util-env#1.1.1</artifact>
+ <artifact>jar:avalon/util/avalon-util-i18n#1.0.0</artifact>
+ <artifact>jar:avalon/util/avalon-util-criteria#1.1.0</artifact>
+ <artifact>jar:avalon/util/avalon-util-defaults#1.2.1</artifact>
+ <artifact>jar:avalon/planet/avalon-cache#1.0.0-DEV</artifact>
+ </classpath>
+ </classloader>
+
+ <services>
+ <service type="org.apache.avalon.repository.Repository"/>
+ </services>
+
+ <component name="cache"
+ class="org.apache.avalon.cache.DefaultCache"/>
+
+</container>
Modified: avalon/trunk/central/laboratory/cache/etc/main/BLOCK-INF/block.xml
==============================================================================
--- avalon/trunk/central/laboratory/cache/etc/main/BLOCK-INF/block.xml (original)
+++ avalon/trunk/central/laboratory/cache/etc/main/BLOCK-INF/block.xml Sun Jun 27 17:12:28 2004
@@ -19,7 +19,7 @@
<artifact>jar:avalon/util/avalon-util-i18n#1.0.0</artifact>
<artifact>jar:avalon/util/avalon-util-criteria#1.1.0</artifact>
<artifact>jar:avalon/util/avalon-util-defaults#1.2.1</artifact>
- <artifact>jar:avalon/planet/avalon-planet-cache#1.0.0-DEV</artifact>
+ <artifact>jar:avalon/planet/avalon-cache#1.0.0-DEV</artifact>
</classpath>
</classloader>
Modified: avalon/trunk/central/system/index.xml
==============================================================================
--- avalon/trunk/central/system/index.xml (original)
+++ avalon/trunk/central/system/index.xml Sun Jun 27 17:12:28 2004
@@ -227,7 +227,8 @@
<info>
<group>avalon/util</group>
<name>avalon-util-defaults</name>
- <version>1.2.1</version>
+ <version>1.2.2</version> <!-- bumped to 1.2.2 to fix bug accessing Env variable -->
+ <status>SNAPSHOT</status>
</info>
<dependencies>
<include key="avalon-util-env"/>
@@ -869,6 +870,27 @@
<include key="jms"/>
</dependencies>
</project>
+
+ <!--
+ Avalon Laboratory.
+ -->
+
+ <project basedir="../laboratory/cache">
+ <info>
+ <group>avalon/planet</group>
+ <name>avalon-cache</name>
+ <version>1.0.0</version>
+ <status>SNAPSHOT</status>
+ </info>
+ <dependencies>
+ <include key="avalon-framework-api"/>
+ <include key="avalon-repository-main"/>
+ </dependencies>
+ <plugins>
+ <include key="avalon-meta-tools"/>
+ </plugins>
+ </project>
+
<!--
<project basedir="../../runtime/merlin/unit">
Modified: avalon/trunk/runtime/merlin/cli/src/java/org/apache/avalon/merlin/cli/Main.java
==============================================================================
--- avalon/trunk/runtime/merlin/cli/src/java/org/apache/avalon/merlin/cli/Main.java (original)
+++ avalon/trunk/runtime/merlin/cli/src/java/org/apache/avalon/merlin/cli/Main.java Sun Jun 27 17:12:28 2004
@@ -197,7 +197,8 @@
* @param args the command line arguments
*/
public static void main( String[] args )
- {
+ {
+ boolean debug = false;
try
{
//
@@ -210,6 +211,8 @@
File dir = getWorkingDirectory( line );
File cache = getMerlinSystemRepository( line );
Artifact artifact = getDefaultImplementation( dir, line );
+
+ debug = line.hasOption( "debug" );
if( line.hasOption( "version" ) )
{
@@ -253,22 +256,31 @@
//
MAIN = new Main( context, artifact, line );
- }
- }
- catch( Throwable e )
- {
- String msg =
- ExceptionHelper.packException( e, true );
- System.err.println( msg );
- System.exit( -1 );
- }
+ }
+ }
+ catch( Exception exception )
+ {
+ String msg =
+ ExceptionHelper.packException( exception, debug );
+ System.err.println( msg );
+ System.exit( -1 );
+ }
+ catch( Throwable throwable )
+ {
+ String msg =
+ ExceptionHelper.packException( throwable, true );
+ System.err.println( msg );
+ System.exit( -1 );
+ }
}
//----------------------------------------------------------
// immutable state
//----------------------------------------------------------
- private final Object m_kernel;
+ private final Object m_kernel;
+
+ private boolean m_debug;
//----------------------------------------------------------
// constructor
@@ -286,7 +298,7 @@
{
Builder builder = context.newBuilder( artifact );
Factory factory = builder.getFactory();
- Map criteria = factory.createDefaultCriteria();
+ Map criteria = factory.createDefaultCriteria();
//
// update the criteria using the command line information
@@ -388,7 +400,7 @@
{
if( line.hasOption( "debug" ) )
{
- criteria.put( "merlin.debug", new Boolean( true ) );
+ criteria.put( "merlin.debug", new Boolean( true ) );
}
}
Modified: avalon/trunk/runtime/merlin/impl/src/java/org/apache/avalon/merlin/impl/DefaultKernel.java
==============================================================================
--- avalon/trunk/runtime/merlin/impl/src/java/org/apache/avalon/merlin/impl/DefaultKernel.java (original)
+++ avalon/trunk/runtime/merlin/impl/src/java/org/apache/avalon/merlin/impl/DefaultKernel.java Sun Jun 27 17:12:28 2004
@@ -23,7 +23,8 @@
import org.apache.avalon.merlin.Kernel;
import org.apache.avalon.merlin.KernelContext;
import org.apache.avalon.merlin.KernelError;
-import org.apache.avalon.merlin.KernelException;
+import org.apache.avalon.merlin.KernelException;
+import org.apache.avalon.merlin.KernelRuntimeException;
import org.apache.avalon.merlin.event.KernelEventListener;
import org.apache.avalon.merlin.event.KernelStateEvent;
@@ -66,8 +67,6 @@
private final KernelContext m_context;
- //private final Block m_application;
-
private final State m_state;
//--------------------------------------------------------------
@@ -92,8 +91,6 @@
try
{
m_model = context.getApplicationModel();
- //m_application =
- // new DefaultBlock( context.getApplicationModel() );
}
catch( Throwable e )
{
@@ -185,13 +182,20 @@
setState( ASSEMBLY );
m_model.assemble();
}
- catch( Throwable e )
+ catch( Exception e )
{
setState( INITIALIZED );
final String error =
- "Cannot assemble application.";
+ "Cannot assemble application due to exception.";
throw new KernelException( error, e );
}
+ catch( Throwable e )
+ {
+ setState( INITIALIZED );
+ final String error =
+ "Cannot assemble application due to throwable.";
+ throw new KernelRuntimeException( error, e );
+ }
if( getLogger().isDebugEnabled() )
{
@@ -203,13 +207,20 @@
setState( DEPLOYMENT );
m_model.commission();
}
- catch( Throwable e )
+ catch( Exception e )
{
setState( INITIALIZED );
final String error =
"Cannot deploy application.";
throw new KernelException( error, e );
}
+ catch( Throwable e )
+ {
+ setState( INITIALIZED );
+ final String error =
+ "Cannot deploy application.";
+ throw new KernelRuntimeException( error, e );
+ }
setState( STARTED );
}
Modified: avalon/trunk/runtime/repository/util/src/java/org/apache/avalon/repository/util/LoaderUtils.java
==============================================================================
--- avalon/trunk/runtime/repository/util/src/java/org/apache/avalon/repository/util/LoaderUtils.java (original)
+++ avalon/trunk/runtime/repository/util/src/java/org/apache/avalon/repository/util/LoaderUtils.java Sun Jun 27 17:12:28 2004
@@ -30,6 +30,7 @@
import org.apache.avalon.repository.Artifact;
import org.apache.avalon.repository.RepositoryException;
+import org.apache.avalon.repository.RepositoryRuntimeException;
/**
@@ -64,8 +65,6 @@
String [] repositories, File root, boolean timestamping )
throws RepositoryException
{
- Exception cause = null;
-
File destination = new File( root, artifact.getPath() );
if( !m_online )
@@ -95,23 +94,18 @@
return getResource( url, destination, timestamping ) ;
}
catch ( Exception e )
- {
- cause = e ;
+ {
+ // ignore
}
}
if( destination.exists() ) return getURL( destination );
-
- StringBuffer buffer = new StringBuffer();
- buffer.append(
- "Failed to download artifact to local cache file "
- + destination.getAbsolutePath()
- + " from hosts: " );
- for( int i=0; i<repositories.length; i++ )
- {
- buffer.append( "\n " + repositories[i] );
- }
- throw new RepositoryException( buffer.toString(), cause );
+
+ final String error =
+ "Unknown artifact: ["
+ + artifact
+ + "].";
+ throw new RepositoryException( error );
}
/**
@@ -143,8 +137,6 @@
if( null == repositories )
throw new NullPointerException( "repositories" );
- Exception cause = null;
-
File destination =
new File( root, artifact.getPath() + "." + mime );
@@ -177,22 +169,19 @@
}
catch ( Exception e )
{
- cause = e ;
+ // ignore
}
}
if( destination.exists() ) return getURL( destination );
- StringBuffer buffer = new StringBuffer();
- buffer.append(
- "Failed to download mime artifact to local cache file "
- + destination.getAbsolutePath()
- + " from hosts: " );
- for( int i=0; i<repositories.length; i++ )
- {
- buffer.append( "\n " + repositories[i] );
- }
- throw new RepositoryException( buffer.toString(), cause );
+ final String error =
+ "Unknown artifact: ["
+ + artifact
+ + "."
+ + mime
+ + "].";
+ throw new RepositoryException( error );
}
/**
@@ -206,7 +195,7 @@
*/
public URL getResource(
String url, File destination, boolean timestamping )
- throws Exception
+ throws RepositoryException, IOException
{
boolean update = destination.exists();
@@ -242,7 +231,9 @@
}
catch( Throwable e )
{
- e.printStackTrace();
+ final String error =
+ "Unexpected error while handling resource request.";
+ throw new RepositoryRuntimeException( error, e );
}
}
@@ -336,7 +327,7 @@
if ( httpConnection.getResponseCode() ==
HttpURLConnection.HTTP_UNAUTHORIZED )
{
- throw new Exception( "Not authorized." ) ;
+ throw new IOException( "Not authorized." ) ;
}
}
@@ -361,7 +352,7 @@
if ( in == null )
{
final String error =
- "Connection returned a null input stream: " + url ;
+ "Unknown resource: " + url ;
throw new IOException( error ) ;
}
Modified: avalon/trunk/runtime/util/defaults/src/java/org/apache/avalon/util/defaults/DefaultsBuilder.java
==============================================================================
--- avalon/trunk/runtime/util/defaults/src/java/org/apache/avalon/util/defaults/DefaultsBuilder.java (original)
+++ avalon/trunk/runtime/util/defaults/src/java/org/apache/avalon/util/defaults/DefaultsBuilder.java Sun Jun 27 17:12:28 2004
@@ -59,7 +59,7 @@
final String home =
System.getProperty(
homeKey,
- Env.getEnvVariable( symbol ) );
+ getEnvironmentVariable( symbol ) );
if( null != home )
{
@@ -72,6 +72,18 @@
final String path = "." + key;
return new File( user, path ).getCanonicalFile();
}
+ }
+
+ private static String getEnvironmentVariable( String symbol )
+ {
+ try
+ {
+ return Env.getEnvVariable( symbol );
+ }
+ catch( Throwable e )
+ {
+ return null;
+ }
}
/**
Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Home.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Home.java (original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Home.java Sun Jun 27 17:12:28 2004
@@ -20,12 +20,14 @@
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.BuildListener;
import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.Get;
import org.apache.tools.ant.taskdefs.Property;
import org.apache.tools.ant.types.DataType;
import org.w3c.dom.Element;
import java.io.File;
import java.io.IOException;
+import java.net.URL;
import java.util.ArrayList;
import java.util.Hashtable;
@@ -212,10 +214,37 @@
+ " key=" + key, Project.MSG_VERBOSE );
}
else if( "import".equals( element.getTagName() ) )
- {
- final String path = element.getAttribute( "index" );
- final File index = Context.getFile( system, path );
- buildList( index, true );
+ {
+ final String path = element.getAttribute( "href" );
+ if(( null != path ) && ( !"".equals( path ) ))
+ {
+ File index = createTempFile();
+ index.deleteOnExit(); // safety harness in case we abort
+ final URL url = createURL( path );
+ final Get get = (Get) project.createTask( "get" );
+ get.setSrc( url );
+ get.setDest( index );
+ get.setIgnoreErrors( false );
+ get.setUseTimestamp( true );
+ get.setVerbose( false );
+ get.execute();
+ buildList( index, true );
+ }
+ else
+ {
+ final String filename = element.getAttribute( "index" );
+ if(( null != filename ) && ( !"".equals( filename ) ))
+ {
+ final File index = Context.getFile( system, path );
+ buildList( index, true );
+ }
+ else
+ {
+ final String error =
+ "Invalid import - no href or index attribute.";
+ throw new BuildException( error );
+ }
+ }
}
else
{
@@ -223,6 +252,30 @@
"Unrecognized element type \"" + tag + "\".";
throw new BuildException( error );
}
+ }
+ }
+
+ private URL createURL( String path )
+ {
+ try
+ {
+ return new URL( path );
+ }
+ catch( IOException ioe )
+ {
+ throw new BuildException( ioe );
+ }
+ }
+
+ private File createTempFile()
+ {
+ try
+ {
+ return File.createTempFile( "~magic", ".tmp" );
+ }
+ catch( IOException ioe )
+ {
+ throw new BuildException( ioe );
}
}
Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Resource.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Resource.java (original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Resource.java Sun Jun 27 17:12:28 2004
@@ -99,7 +99,7 @@
final Get get = (Get) project.createTask( "get" );
get.setSrc( source );
get.setDest( target );
- get.setIgnoreErrors( false );
+ get.setIgnoreErrors( true );
get.setUseTimestamp( true );
get.setVerbose( false );
get.execute();
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.