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]