mcconnell 2003/12/06 15:58:59
Modified: kernel/api/src/java/org/apache/avalon/merlin
KernelCriteria.java
kernel/cli/src/java/org/apache/avalon/merlin/cli Main.java
Resources.properties
kernel/cli/src/test/org/apache/avalon/merlin/cli/test
MerlinCLITest.java
kernel/impl project.xml
kernel/impl/src/java/org/apache/avalon/merlin/impl
DefaultCriteria.java DefaultFactory.java
kernel/unit/src/java/org/apache/avalon/merlin/unit
AbstractMerlinTestCase.java
kernel/unit/src/test/org/apache/avalon/merlin/unit/test
MerlinTestCaseTest.java
Log:
Sync. with repo updates.
Revision Changes Path
1.5 +18 -12
avalon-sandbox/kernel/api/src/java/org/apache/avalon/merlin/KernelCriteria.java
Index: KernelCriteria.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/kernel/api/src/java/org/apache/avalon/merlin/KernelCriteria.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- KernelCriteria.java 6 Dec 2003 06:37:43 -0000 1.4
+++ KernelCriteria.java 6 Dec 2003 23:58:59 -0000 1.5
@@ -68,25 +68,31 @@
"merlin.repository";
/**
- * Repository parameter descriptor.
+ * Merlin system home.
*/
String MERLIN_HOME =
"merlin.home";
/**
- * Repository parameter descriptor.
+ * Merlin system repository cache path.
*/
String MERLIN_SYSTEM =
"merlin.system";
/**
- * Repository parameter descriptor.
+ * Overide directives.
*/
String MERLIN_CONFIG =
"merlin.config";
/**
- * Repository parameter descriptor.
+ * Install directive path sequence.
+ */
+ String MERLIN_INSTALL =
+ "merlin.install";
+
+ /**
+ * A comma seperated sequence of block urls.
*/
String MERLIN_DEPLOYMENT =
"merlin.deployment";
@@ -104,19 +110,19 @@
"merlin.override";
/**
- * Home directory parameter descriptor.
+ * Maerlin working directory.
*/
String MERLIN_DIR =
"merlin.dir";
/**
- * The temp directory parameter descriptor.
+ * The temp directory parameter.
*/
String MERLIN_TEMP =
"merlin.temp";
/**
- * Base directory parameter descriptor.
+ * Base directory parameter.
*/
String MERLIN_CONTEXT =
"merlin.context";
@@ -129,19 +135,19 @@
"merlin.anchor";
/**
- * Info policy parameter descriptor.
+ * Info policy parameter.
*/
String MERLIN_INFO =
"merlin.info";
/**
- * Debug policy parameter descriptor.
+ * Debug policy parameter.
*/
String MERLIN_DEBUG =
"merlin.debug";
/**
- * Server model parameter descriptor.
+ * Server model parameter.
*/
String MERLIN_SERVER =
"merlin.server";
@@ -153,7 +159,7 @@
"merlin.autostart";
/**
- * Auto start mode.
+ * Language override.
*/
String MERLIN_LANG =
"merlin.lang";
1.3 +79 -11
avalon-sandbox/kernel/cli/src/java/org/apache/avalon/merlin/cli/Main.java
Index: Main.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/kernel/cli/src/java/org/apache/avalon/merlin/cli/Main.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Main.java 6 Dec 2003 06:37:43 -0000 1.2
+++ Main.java 6 Dec 2003 23:58:59 -0000 1.3
@@ -67,12 +67,12 @@
import org.apache.avalon.repository.Artifact;
import org.apache.avalon.repository.provider.Builder;
import org.apache.avalon.repository.provider.InitialContext;
+import org.apache.avalon.repository.provider.Factory;
import org.apache.avalon.repository.RepositoryException;
import org.apache.avalon.repository.main.DefaultInitialContext;
import org.apache.avalon.repository.main.DefaultBuilder;
import org.apache.avalon.util.env.Env;
import org.apache.avalon.util.exception.ExceptionHelper;
-import org.apache.avalon.util.factory.Factory;
import org.apache.commons.cli.BasicParser;
import org.apache.commons.cli.CommandLine;
@@ -136,6 +136,12 @@
.withDescription( REZ.getString( "cli-home-description" ) )
.create( "home" );
+ Option system = OptionBuilder
+ .hasArg()
+ .withArgName( REZ.getString( "directory" ) )
+ .withDescription( REZ.getString( "cli-system-description" ) )
+ .create( "system" );
+
Option repository = OptionBuilder
.hasArg()
.withArgName( REZ.getString( "directory" ) )
@@ -174,6 +180,7 @@
options.addOption( debug );
options.addOption( install );
options.addOption( home );
+ options.addOption( system );
options.addOption( repository );
options.addOption( library );
options.addOption( config );
@@ -213,12 +220,6 @@
Map criteria = factory.createDefaultCriteria();
//
- // set merlin working directory
- //
-
- //criteria.put( "merlin.dir", getBaseDirectory() );
-
- //
// parse the commandline
//
@@ -379,9 +380,18 @@
{
try
{
+
+ //
+ // parse the commandline
+ //
+
+ CommandLineParser parser = new BasicParser();
+ CommandLine line = parser.parse( CL_OPTIONS, args );
+ File system = getMerlinSystemRepository( line );
+
InitialContext context =
new DefaultInitialContext(
- getMavenRepositoryDirectory(),
+ system,
getDefaultHosts() );
Main main = new Main( context, args );
@@ -398,6 +408,45 @@
}
}
+ private static File getMerlinSystemRepository( CommandLine line )
+ {
+ if( line.hasOption( "system" ) )
+ {
+ String system = line.getOptionValue( "system" );
+ return new File( system );
+ }
+ else
+ {
+ return new File( getMerlinHome( ), "system" );
+ }
+ }
+
+ private static File getMerlinHome()
+ {
+ return new File( getMerlinHomePath() );
+ }
+
+ private static String getMerlinHomePath()
+ {
+ try
+ {
+ String merlin =
+ System.getProperty(
+ "merlin.home",
+ Env.getEnvVariable( "MERLIN_HOME" ) );
+ if( null != merlin ) return merlin;
+ return System.getProperty( "user.home" ) + File.separator + ".merlin";
+ }
+ catch( Throwable e )
+ {
+ final String error =
+ "Internal error while attempting to access MERLIN_HOME environment.";
+ final String message =
+ ExceptionHelper.packException( error, e, true );
+ throw new RuntimeException( message );
+ }
+ }
+
private static File getMavenRepositoryDirectory()
{
return new File( getMavenHomeDirectory(), "repository" );
@@ -450,9 +499,28 @@
private static String[] getDefaultHosts()
{
return new String[]{
- "http://dpml.net/",
- "http://www.ibiblio.org/maven/"
+ "http://dpml.net/"
};
}
+ private static String getArgument( String key, String[] args )
+ {
+ for( int i=0; i<args.length; i++ )
+ {
+ if( args[i].equals( key ) )
+ {
+ if( args.length >= i+1 )
+ {
+ return args[ i+1 ];
+ }
+ else
+ {
+ final String error =
+ "Missing CLI value for parameter: " + key;
+ throw new IllegalArgumentException( error );
+ }
+ }
+ }
+ return null;
+ }
}
1.3 +2 -0
avalon-sandbox/kernel/cli/src/java/org/apache/avalon/merlin/cli/Resources.properties
Index: Resources.properties
===================================================================
RCS file:
/home/cvs/avalon-sandbox/kernel/cli/src/java/org/apache/avalon/merlin/cli/Resources.properties,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Resources.properties 6 Dec 2003 06:37:43 -0000 1.2
+++ Resources.properties 6 Dec 2003 23:58:59 -0000 1.3
@@ -45,6 +45,8 @@
cli-config-description=The filename of the configuration target override.
+cli-system-description=An absolute or relative path to a alternative system
repository.
+
cli-repository-description=An absolute or relative path to a alternative runtime
repository.
cli-library-description=A directory that serves as the anchor for relative library
references.
1.2 +1 -2
avalon-sandbox/kernel/cli/src/test/org/apache/avalon/merlin/cli/test/MerlinCLITest.java
Index: MerlinCLITest.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/kernel/cli/src/test/org/apache/avalon/merlin/cli/test/MerlinCLITest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MerlinCLITest.java 6 Dec 2003 05:55:28 -0000 1.1
+++ MerlinCLITest.java 6 Dec 2003 23:58:59 -0000 1.2
@@ -64,13 +64,12 @@
import org.apache.avalon.repository.Artifact;
import org.apache.avalon.repository.provider.Builder;
import org.apache.avalon.repository.provider.InitialContext;
+import org.apache.avalon.repository.provider.Factory;
import org.apache.avalon.repository.RepositoryException;
import org.apache.avalon.repository.main.DefaultInitialContext;
import org.apache.avalon.repository.main.DefaultBuilder;
import org.apache.avalon.util.env.Env;
import org.apache.avalon.util.exception.ExceptionHelper;
-
-import org.apache.avalon.util.factory.Factory;
import org.apache.avalon.merlin.cli.Main;
1.15 +1 -6 avalon-sandbox/kernel/impl/project.xml
Index: project.xml
===================================================================
RCS file: /home/cvs/avalon-sandbox/kernel/impl/project.xml,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- project.xml 6 Dec 2003 06:37:43 -0000 1.14
+++ project.xml 6 Dec 2003 23:58:59 -0000 1.15
@@ -172,12 +172,7 @@
</dependency>
<dependency>
<groupId>avalon-util</groupId>
- <artifactId>avalon-util-factory-api</artifactId>
- <version>1.0-dev</version>
- </dependency>
- <dependency>
- <groupId>avalon-util</groupId>
- <artifactId>avalon-util-factory-impl</artifactId>
+ <artifactId>avalon-util-criteria</artifactId>
<version>1.0-dev</version>
</dependency>
1.8 +20 -73
avalon-sandbox/kernel/impl/src/java/org/apache/avalon/merlin/impl/DefaultCriteria.java
Index: DefaultCriteria.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/kernel/impl/src/java/org/apache/avalon/merlin/impl/DefaultCriteria.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- DefaultCriteria.java 6 Dec 2003 06:37:44 -0000 1.7
+++ DefaultCriteria.java 6 Dec 2003 23:58:59 -0000 1.8
@@ -72,9 +72,10 @@
import org.apache.avalon.util.env.Env;
import org.apache.avalon.util.env.EnvAccessException;
import org.apache.avalon.util.exception.ExceptionHelper;
-import org.apache.avalon.util.factory.FactoryException;
-import org.apache.avalon.util.factory.impl.Criteria;
-import org.apache.avalon.util.factory.impl.Parameter;
+import org.apache.avalon.util.criteria.CriteriaException;
+import org.apache.avalon.util.criteria.Criteria;
+import org.apache.avalon.util.criteria.Parameter;
+import org.apache.avalon.util.criteria.PackedParameter;
/**
@@ -121,7 +122,9 @@
new Parameter(
MERLIN_CONFIG,
File.class, new File( MERLIN_HOME_DIR, "config" ) ),
- new DeploymentTokenizer(
+ new PackedParameter(
+ MERLIN_INSTALL, ",", new String[0] ),
+ new PackedParameter(
MERLIN_DEPLOYMENT, ",", new String[0] ),
new Parameter(
MERLIN_KERNEL, URL.class, null ),
@@ -165,8 +168,6 @@
{
super( PARAMS );
-
-
Properties avalonStatic = getStaticProperties( AVALON );
Properties merlinStatic = getStaticProperties( MERLIN );
@@ -177,11 +178,6 @@
Properties avalonWork = getLocalProperties( USER_DIR, AVALON );
Properties merlinWork = getLocalProperties( USER_DIR, MERLIN );
- //printProperties( avalonStatic, "avalon" );
- //printProperties( merlinStatic, "merlin" );
- //printProperties( merlinWork, "merlin-work" );
- //printProperties( env, "environment" );
-
//
// Create the finder (discovery policy), construct the defaults, and
// macro expand the values.
@@ -207,14 +203,9 @@
Defaults defaults = new Defaults( SINGLE_KEYS, MULTI_VALUE_KEYS, finders );
- //printProperties( defaults, "defaults (resolved)" );
-
Defaults.macroExpand( defaults, new Properties[]{ system, avalonStatic, env
} );
Defaults.macroExpand( defaults, new Properties[]{ system, avalonStatic, env
} );
- //printProperties( defaults, "defaults (expanded)" );
- //System.out.print( "" );
-
//
// following aquistion of the default parameters we need to assign
// them as criteria values before we expose the criteria instance to the
@@ -242,11 +233,11 @@
// property
//
- String basedir = System.getProperty( "basedir" );
- if( null != basedir )
- {
- put( "merlin.dir", basedir );
- }
+ //String basedir = System.getProperty( "basedir" );
+ //if( null != basedir )
+ //{
+ // put( "merlin.dir", basedir );
+ //}
//
// check for any errors created in the process and dump a
@@ -381,6 +372,11 @@
*/
public File getWorkingDirectory()
{
+ String basedir = System.getProperty( "basedir" );
+ if( null != basedir )
+ {
+ return new File( basedir );
+ }
return (File) get( MERLIN_DIR );
}
@@ -395,10 +391,10 @@
/**
* Return the context directory from which relative
- * runtrime home directories will be established for
+ * runtime home directories will be established for
* components referencing urn:avalon:home
*
- * @return the working directory
+ * @return the conext directory
*/
public File getContextDirectory()
{
@@ -566,55 +562,6 @@
throw new KernelRuntimeException(
"Failed to load implementation defaults resource: /"
+ path, e );
- }
- }
-
- private static class DeploymentTokenizer extends Parameter
- {
- private final Class m_base = String[].class;
- private final String m_delimiter;
-
- /**
- * Transform a string to a url array.
- * @param object the value to transform
- * @return the transformed object
- */
- public DeploymentTokenizer(
- final String key, final String delimiter,
- String[] defaults )
- {
- super( key, String[].class, defaults );
- m_delimiter = delimiter;
- }
-
- public Object resolve( Object value )
- throws FactoryException
- {
- if( value == null ) return null;
- if( value instanceof String[] )
- {
- return value;
- }
- else if( value instanceof String )
- {
- ArrayList list = new ArrayList();
- String s = (String) value;
- StringTokenizer tokenizer =
- new StringTokenizer( s, m_delimiter );
- while( tokenizer.hasMoreTokens() )
- {
- list.add( tokenizer.nextToken() );
- }
- return list.toArray( new String[0] );
- }
- else
- {
- final String error =
- "Don't know how to transform an instance of ["
- + value.getClass().getName()
- + " to a String[].";
- throw new FactoryException( error );
- }
}
}
1.10 +3 -6
avalon-sandbox/kernel/impl/src/java/org/apache/avalon/merlin/impl/DefaultFactory.java
Index: DefaultFactory.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/kernel/impl/src/java/org/apache/avalon/merlin/impl/DefaultFactory.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- DefaultFactory.java 6 Dec 2003 06:37:44 -0000 1.9
+++ DefaultFactory.java 6 Dec 2003 23:58:59 -0000 1.10
@@ -59,11 +59,7 @@
import org.apache.avalon.repository.Repository;
import org.apache.avalon.repository.provider.InitialContext;
-
-import org.apache.avalon.util.factory.Factory;
-import org.apache.avalon.util.factory.FactoryException;
-import org.apache.avalon.util.factory.impl.Criteria;
-import org.apache.avalon.util.factory.impl.Parameter;
+import org.apache.avalon.repository.provider.Factory;
import org.apache.excalibur.configuration.ConfigurationUtil;
@@ -548,7 +544,8 @@
{
Factory factory = context.getInitialFactory();
Map criteria = factory.createDefaultCriteria();
- criteria.put( "avalon.repository.host", hosts );
+
+ criteria.put( "avalon.repository.hosts", hosts );
Configuration proxyConfig = config.getChild( "proxy", false );
if( null != proxyConfig )
1.5 +3 -4
avalon-sandbox/kernel/unit/src/java/org/apache/avalon/merlin/unit/AbstractMerlinTestCase.java
Index: AbstractMerlinTestCase.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/kernel/unit/src/java/org/apache/avalon/merlin/unit/AbstractMerlinTestCase.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- AbstractMerlinTestCase.java 5 Dec 2003 08:27:45 -0000 1.4
+++ AbstractMerlinTestCase.java 6 Dec 2003 23:58:59 -0000 1.5
@@ -64,14 +64,13 @@
import org.apache.avalon.repository.Artifact;
import org.apache.avalon.repository.provider.Builder;
import org.apache.avalon.repository.provider.InitialContext;
+import org.apache.avalon.repository.provider.Factory;
import org.apache.avalon.repository.RepositoryException;
import org.apache.avalon.repository.main.DefaultInitialContext;
import org.apache.avalon.repository.main.DefaultBuilder;
+
import org.apache.avalon.util.env.Env;
import org.apache.avalon.util.exception.ExceptionHelper;
-
-import org.apache.avalon.util.factory.Factory;
-
/**
* Test case that usages the repository builder to deploy the
1.2 +3 -3
avalon-sandbox/kernel/unit/src/test/org/apache/avalon/merlin/unit/test/MerlinTestCaseTest.java
Index: MerlinTestCaseTest.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/kernel/unit/src/test/org/apache/avalon/merlin/unit/test/MerlinTestCaseTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MerlinTestCaseTest.java 5 Dec 2003 06:31:55 -0000 1.1
+++ MerlinTestCaseTest.java 6 Dec 2003 23:58:59 -0000 1.2
@@ -64,13 +64,13 @@
import org.apache.avalon.repository.Artifact;
import org.apache.avalon.repository.provider.Builder;
import org.apache.avalon.repository.provider.InitialContext;
+import org.apache.avalon.repository.provider.Factory;
import org.apache.avalon.repository.RepositoryException;
import org.apache.avalon.repository.main.DefaultInitialContext;
import org.apache.avalon.repository.main.DefaultBuilder;
+
import org.apache.avalon.util.env.Env;
import org.apache.avalon.util.exception.ExceptionHelper;
-
-import org.apache.avalon.util.factory.Factory;
import org.apache.avalon.merlin.unit.AbstractMerlinTestCase;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]