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]

Reply via email to