mcconnell    2003/12/05 00:26:31

  Modified:    repository/impl/src/java/org/apache/avalon/repository/impl
                        RepositoryCriteria.java
               repository/main/src/java/org/apache/avalon/repository/main
                        DefaultBuilder.java DefaultInitialContext.java
  Log:
  Add defaults resolution relative to avalon.properties.
  
  Revision  Changes    Path
  1.2       +2 -2      
avalon/repository/impl/src/java/org/apache/avalon/repository/impl/RepositoryCriteria.java
  
  Index: RepositoryCriteria.java
  ===================================================================
  RCS file: 
/home/cvs/avalon/repository/impl/src/java/org/apache/avalon/repository/impl/RepositoryCriteria.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RepositoryCriteria.java   4 Dec 2003 19:34:41 -0000       1.1
  +++ RepositoryCriteria.java   5 Dec 2003 08:26:31 -0000       1.2
  @@ -136,7 +136,7 @@
      /**
       * Repository proxy password parameter descriptor.
       */
  -    public static final String REPOSITORY_REMOTE_HOSTS = 
"avalon.repository.remote.url";
  +    public static final String REPOSITORY_REMOTE_HOSTS = "avalon.repository.host";
       public static final Parameter REPOSITORY_REMOTE_HOSTS_PARAM = 
         new Parameter( 
           REPOSITORY_REMOTE_HOSTS,
  
  
  
  1.2       +2 -2      
avalon/repository/main/src/java/org/apache/avalon/repository/main/DefaultBuilder.java
  
  Index: DefaultBuilder.java
  ===================================================================
  RCS file: 
/home/cvs/avalon/repository/main/src/java/org/apache/avalon/repository/main/DefaultBuilder.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultBuilder.java       4 Dec 2003 19:34:42 -0000       1.1
  +++ DefaultBuilder.java       5 Dec 2003 08:26:31 -0000       1.2
  @@ -316,7 +316,7 @@
       private static String[] expandHosts( String arg )
       {
           ArrayList list = new ArrayList();
  -        StringTokenizer tokenizer = new StringTokenizer( arg, File.pathSeparator );
  +        StringTokenizer tokenizer = new StringTokenizer( arg, "," );
           while( tokenizer.hasMoreTokens() )
           {
               list.add( tokenizer.nextToken() );
  
  
  
  1.3       +81 -13    
avalon/repository/main/src/java/org/apache/avalon/repository/main/DefaultInitialContext.java
  
  Index: DefaultInitialContext.java
  ===================================================================
  RCS file: 
/home/cvs/avalon/repository/main/src/java/org/apache/avalon/repository/main/DefaultInitialContext.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultInitialContext.java        5 Dec 2003 03:03:31 -0000       1.2
  +++ DefaultInitialContext.java        5 Dec 2003 08:26:31 -0000       1.3
  @@ -54,6 +54,7 @@
   import java.io.File;
   import java.io.IOException;
   import java.io.InputStream;
  +import java.io.FileInputStream;
   import java.io.FileOutputStream;
   
   import java.lang.reflect.Constructor;
  @@ -63,6 +64,7 @@
   import java.util.Map;
   import java.util.Properties;
   import java.text.ParseException;
  +import java.util.StringTokenizer;
   
   import java.net.URL;
   import java.net.URLConnection;
  @@ -110,6 +112,17 @@
       public static final String STANDARD_NAME = 
           "avalon-repository-main";
   
  +    private static final String AVALON = "avalon.properties";
  +
  +    private static final File USER_HOME = 
  +      new File( System.getProperty( "user.home" ) );
  +
  +    private static final File USER_DIR = getBaseDirectory();
  +
  +    public static final String CACHE_KEY = "avalon.repository.cache.dir";
  +
  +    public static final String HOSTS_KEY = "avalon.repository.hosts";
  +
       //------------------------------------------------------------------
       // state 
       //------------------------------------------------------------------
  @@ -170,11 +183,15 @@
         Artifact artifact, File cache, String[] hosts ) 
         throws RepositoryException
       {
  -        m_cache = setupCache( cache );
   
  +        Properties avalonHome = getLocalProperties( USER_HOME, AVALON );
  +        Properties avalonWork = getLocalProperties( USER_DIR, AVALON );
  +        
  +        m_cache = setupCache( cache, avalonHome, avalonWork );
           System.out.println( "Initial-Cache: " + m_cache );
   
  -        m_hosts = setupHosts( hosts );
  +        m_hosts = setupHosts( hosts, avalonHome, avalonWork );
  +
           Artifact implementation = 
             setupImplementation( artifact );
   
  @@ -306,16 +323,16 @@
       // implementation
       // ------------------------------------------------------------------------
   
  -    private File setupCache( File file )
  +    private File setupCache( File file, Properties home, Properties work )
       {
           if( null != file ) return file;
  -        return setupDefaultCache();
  +        return setupDefaultCache( home, work );
       }
   
  -    private String[] setupHosts( String[] hosts )
  +    private String[] setupHosts( String[] hosts, Properties home, Properties work )
       {
           if( null != hosts ) return RepositoryUtils.getCleanPaths( hosts );
  -        return new String[0];
  +        return setupDefaultHosts( home, work );
       }
   
       private Artifact setupImplementation( Artifact artifact )
  @@ -379,14 +396,25 @@
           }
       }
   
  -    private static File setupDefaultCache()
  +    private String[] setupDefaultHosts( Properties home, Properties work )
  +    {
  +        String homeValue = home.getProperty( HOSTS_KEY );
  +        String workValue = work.getProperty( HOSTS_KEY, homeValue );
  +        String value = System.getProperty( CACHE_KEY , workValue );
  +        if( null == value ) return new String[0];
  +        return expandHosts( value );
  +    }
  +
  +    private static File setupDefaultCache( Properties home, Properties work )
       {
           try
           {
               String env = Env.getEnvVariable( "AVALON_HOME" );
               String avalon = System.getProperty( "avalon.home", env );
  -            String home = System.getProperty( "avalon.repository.cache.dir", avalon 
);
  -            if( null != home ) return new File( home );
  +            String homeValue = home.getProperty( CACHE_KEY, avalon );
  +            String workValue = work.getProperty( CACHE_KEY, homeValue );
  +            String value = System.getProperty( CACHE_KEY , workValue );
  +            if( null != value ) return new File( value  );
           }
           catch( Throwable e )
           {
  @@ -397,8 +425,48 @@
               System.err.println( message );
               return null;
           }
  +        return new File( USER_HOME, ".avalon" ); 
  +    }
  +
  +    private static File getBaseDirectory()
  +    {
  +        String base = System.getProperty( "basedir" );
  +        if( null != base )
  +        {
  +            return new File( base );
  +        }
  +        return new File( System.getProperty( "user.dir" ) );
  +    }
  +
  +    private Properties getLocalProperties( 
  +      File dir, String filename ) 
  +    {
  +        Properties properties = new Properties();
  +        if( null == dir ) return properties;
  +        File file = new File( dir, filename );
  +        if( !file.exists() ) return properties;
  +        try
  +        {
  +            properties.load( new FileInputStream( file ) );
  +            return properties;
  +        }
  +        catch( Throwable e )
  +        {
  +            final String error = 
  +              "Unexpected exception while attempting to read properties from: " 
  +              + file;
  +            throw new RepositoryRuntimeException( error, e );
  +        }
  +    }
   
  -        final File home = new File( System.getProperty( "user.home" ) );
  -        return new File( home, ".avalon" ); 
  -    }    
  +    private static String[] expandHosts( String arg )
  +    {
  +        ArrayList list = new ArrayList();
  +        StringTokenizer tokenizer = new StringTokenizer( arg, "," );
  +        while( tokenizer.hasMoreTokens() )
  +        {
  +            list.add( tokenizer.nextToken() );
  +        }
  +        return (String[]) list.toArray( new String[0] );
  +    }
   }
  
  
  

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

Reply via email to