Browse Source

Moved some path manipulation utilities into PathUtils

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270809 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 23 years ago
parent
commit
42f63164a8
22 changed files with 291 additions and 188 deletions
  1. +3
    -1
      proposal/myrmidon/src/java/org/apache/antlib/xml/XMLValidateTask.java
  2. +4
    -1
      proposal/myrmidon/src/java/org/apache/antlib/xml/XSLTProcess.java
  3. +3
    -1
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/depend/Depend.java
  4. +4
    -5
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java
  5. +4
    -1
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java
  6. +4
    -1
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java
  7. +4
    -1
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java
  8. +2
    -1
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java
  9. +2
    -1
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java
  10. +3
    -1
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
  11. +3
    -81
      proposal/myrmidon/src/main/org/apache/tools/ant/types/Path.java
  12. +113
    -0
      proposal/myrmidon/src/main/org/apache/tools/ant/types/PathUtil.java
  13. +3
    -1
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/depend/Depend.java
  14. +4
    -5
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java
  15. +4
    -1
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java
  16. +4
    -1
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java
  17. +4
    -1
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java
  18. +2
    -1
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java
  19. +2
    -1
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java
  20. +3
    -1
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
  21. +3
    -81
      proposal/myrmidon/src/todo/org/apache/tools/ant/types/Path.java
  22. +113
    -0
      proposal/myrmidon/src/todo/org/apache/tools/ant/types/PathUtil.java

+ 3
- 1
proposal/myrmidon/src/java/org/apache/antlib/xml/XMLValidateTask.java View File

@@ -24,6 +24,7 @@ import org.apache.tools.ant.types.DirectoryScanner;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PathUtil;
import org.xml.sax.EntityResolver;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
@@ -334,7 +335,8 @@ public class XMLValidateTask
Class readerClass = null;
if( m_classpath != null )
{
final ClassLoader classLoader = new URLClassLoader( m_classpath.toURLs() );
final URL[] urls = PathUtil.toURLs( m_classpath );
final ClassLoader classLoader = new URLClassLoader( urls );
readerClass = classLoader.loadClass( m_readerClassName );
}
else


+ 4
- 1
proposal/myrmidon/src/java/org/apache/antlib/xml/XSLTProcess.java View File

@@ -9,12 +9,14 @@ package org.apache.antlib.xml;

import java.io.File;
import java.net.URLClassLoader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.taskdefs.MatchingTask;
import org.apache.tools.ant.types.DirectoryScanner;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PathUtil;

/**
* A Task to process via XSLT a set of XML documents. This is useful for
@@ -381,7 +383,8 @@ public class XSLTProcess
}
else
{
final ClassLoader classLoader = new URLClassLoader( m_classpath.toURLs() );
final URL[] urls = PathUtil.toURLs( m_classpath );
final ClassLoader classLoader = new URLClassLoader( urls );
return classLoader.loadClass( classname );
}
}


+ 3
- 1
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/depend/Depend.java View File

@@ -24,6 +24,7 @@ import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.types.DirectoryScanner;
import org.apache.tools.ant.taskdefs.MatchingTask;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PathUtil;

/**
* Generate a dependency file for a given set of classes
@@ -570,7 +571,8 @@ public class Depend extends MatchingTask
{
// now determine which jars each class depends upon
classpathDependencies = new Hashtable();
final ClassLoader classLoader = new URLClassLoader( dependClasspath.toURLs() );
final URL[] urls = PathUtil.toURLs( dependClasspath );
final ClassLoader classLoader = new URLClassLoader( urls );

Hashtable classpathFileCache = new Hashtable();
Object nullFileMarker = new Object();


+ 4
- 5
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java View File

@@ -11,6 +11,7 @@ import java.io.File;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.types.DirectoryScanner;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.taskdefs.MatchingTask;

// ====================================================================

@@ -93,9 +94,8 @@ import org.apache.tools.ant.types.Path;
* @version 0.3
*/
public class CSharp
extends org.apache.tools.ant.taskdefs.MatchingTask
extends MatchingTask
{

/**
* name of the executable. the .exe suffix is deliberately not included in
* anticipation of the unix version
@@ -958,6 +958,5 @@ public class CSharp
protected boolean notEmpty( String s )
{
return s != null && s.length() != 0;
}// end execute

}//end class
}
}

+ 4
- 1
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java View File

@@ -13,6 +13,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLClassLoader;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Hashtable;
@@ -33,6 +34,7 @@ import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PathUtil;
import org.apache.tools.ant.util.depend.Dependencies;
import org.apache.tools.ant.util.depend.Filter;
import org.xml.sax.InputSource;
@@ -332,7 +334,8 @@ public class GenericDeploymentTool
}
else
{
classpathLoader = new URLClassLoader( combinedClasspath.toURLs() );
final URL[] urls = PathUtil.toURLs( combinedClasspath );
classpathLoader = new URLClassLoader( urls );
}

return classpathLoader;


+ 4
- 1
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java View File

@@ -13,6 +13,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLClassLoader;
import java.net.URL;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.jar.JarEntry;
@@ -24,6 +25,7 @@ import org.apache.avalon.excalibur.io.FileUtil;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.taskdefs.Java;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PathUtil;
import org.xml.sax.InputSource;

public class WeblogicDeploymentTool extends GenericDeploymentTool
@@ -335,7 +337,8 @@ public class WeblogicDeploymentTool extends GenericDeploymentTool
lookupPath.append( classpath );
}

return new URLClassLoader( lookupPath.toURLs() );
final URL[] urls = PathUtil.toURLs( lookupPath );
return new URLClassLoader( urls );
}

protected DescriptorHandler getWeblogicDescriptorHandler( final File srcDir )


+ 4
- 1
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java View File

@@ -12,6 +12,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLClassLoader;
import java.net.URL;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.jar.JarEntry;
@@ -23,6 +24,7 @@ import org.apache.tools.ant.types.Argument;
import org.apache.tools.ant.types.EnumeratedAttribute;
import org.apache.tools.ant.types.EnvironmentVariable;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PathUtil;

/**
* Websphere deployment tool that augments the ejbjar task.
@@ -413,7 +415,8 @@ public class WebsphereDeploymentTool
{
lookupPath.append( classpath );
}
return new URLClassLoader( lookupPath.toURLs() );
final URL[] urls = PathUtil.toURLs( lookupPath );
return new URLClassLoader( urls );
}

protected DescriptorHandler getDescriptorHandler( File srcDir )


+ 2
- 1
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java View File

@@ -17,6 +17,7 @@ import org.apache.tools.ant.taskdefs.exec.Execute2;
import org.apache.tools.ant.types.Argument;
import org.apache.tools.ant.types.CommandlineJava;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PathUtil;

/**
* Taskdef for the JJTree compiler compiler.
@@ -174,7 +175,7 @@ public class JJTree extends Task
}
final Path classpath = cmdl.createClasspath();
classpath.addLocation( new File( javaccHome, "JavaCC.zip" ) );
classpath.addJavaRuntime();
PathUtil.addJavaRuntime( classpath );

cmdl.addVmArgument( "-mx140M" );
cmdl.addVmArgument( "-Dinstall.root=" + javaccHome.getAbsolutePath() );


+ 2
- 1
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java View File

@@ -18,6 +18,7 @@ import org.apache.tools.ant.types.Argument;
import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.CommandlineJava;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PathUtil;
import org.apache.avalon.excalibur.util.StringUtil;

/**
@@ -228,7 +229,7 @@ public class JavaCC extends Task
}
final Path classpath = cmdl.createClasspath();
classpath.addLocation( new File( javaccHome, "JavaCC.zip" ) );
classpath.addJavaRuntime();
PathUtil.addJavaRuntime( classpath );

cmdl.addVmArgument( "-mx140M" );
cmdl.addVmArgument( "-Dinstall.root=" + javaccHome.getAbsolutePath() );


+ 3
- 1
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java View File

@@ -29,6 +29,7 @@ import org.apache.tools.ant.types.EnumeratedAttribute;
import org.apache.tools.ant.types.EnvironmentVariable;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.SysProperties;
import org.apache.tools.ant.types.PathUtil;

/**
* Ant task to run JUnit tests. <p>
@@ -696,7 +697,8 @@ public class JUnitTask extends Task
if( classpath != null )
{
getLogger().debug( "Using CLASSPATH " + classpath );
classLoader = new URLClassLoader( classpath.toURLs() );
final URL[] urls = PathUtil.toURLs( classpath );
classLoader = new URLClassLoader( urls );
}
runner = new JUnitTestRunner( test,
test.getHaltonerror(),


+ 3
- 81
proposal/myrmidon/src/main/org/apache/tools/ant/types/Path.java View File

@@ -7,15 +7,14 @@
*/
package org.apache.tools.ant.types;

import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.DataType;
import org.apache.tools.ant.util.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Locale;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.DataType;
import org.apache.tools.ant.util.FileUtils;

/**
* This object represents a path as used by CLASSPATH or PATH environment
@@ -132,55 +131,6 @@ public class Path
m_elements.add( fileSet );
}

/**
* Add the Java Runtime classes to this Path instance.
*/
public void addJavaRuntime()
throws TaskException
{
if( System.getProperty( "java.vendor" ).toLowerCase( Locale.US ).indexOf( "microsoft" ) >= 0 )
{
// Pull in *.zip from packages directory
FileSet msZipFiles = new FileSet();
msZipFiles.setDir( new File( System.getProperty( "java.home" ) + File.separator + "Packages" ) );
msZipFiles.setIncludes( "*.ZIP" );
addFileset( msZipFiles );
}
else if( "Kaffe".equals( System.getProperty( "java.vm.name" ) ) )
{
FileSet kaffeJarFiles = new FileSet();
kaffeJarFiles.setDir( new File( System.getProperty( "java.home" )
+ File.separator + "share"
+ File.separator + "kaffe" ) );

kaffeJarFiles.setIncludes( "*.jar" );
addFileset( kaffeJarFiles );
}
else
{
// JDK > 1.1 seems to set java.home to the JRE directory.
final String rt = System.getProperty( "java.home" ) +
File.separator + "lib" + File.separator + "rt.jar";
addExisting( new Path( rt ) );
// Just keep the old version as well and let addExisting
// sort it out.
final String rt2 = System.getProperty( "java.home" ) +
File.separator + "jre" + File.separator + "lib" +
File.separator + "rt.jar";
addExisting( new Path( rt2 ) );

// Added for MacOS X
final String classes = System.getProperty( "java.home" ) +
File.separator + ".." + File.separator + "Classes" +
File.separator + "classes.jar";
addExisting( new Path( classes ) );
final String ui = System.getProperty( "java.home" ) +
File.separator + ".." + File.separator + "Classes" +
File.separator + "ui.jar";
addExisting( new Path( ui ) );
}
}

/**
* Append the contents of the other Path instance to this.
*/
@@ -309,32 +259,4 @@ public class Path
throw new Error( te.toString() );
}
}

/**
* Returns an array of URLs - useful for building a ClassLoader.
*/
public URL[] toURLs()
throws TaskException
{
try
{
final String[] list = list();

final URL[] result = new URL[ list.length ];

// path containing one or more elements
for( int i = 0; i < list.length; i++ )
{
result[ i ] = new File( list[ i ] ).toURL();
}

return result;
}
catch( final IOException ioe )
{
final String message = "Malformed path entry. Reason:" + ioe;
throw new TaskException( message, ioe );
}
}

}

+ 113
- 0
proposal/myrmidon/src/main/org/apache/tools/ant/types/PathUtil.java View File

@@ -0,0 +1,113 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.tools.ant.types;

import java.net.URL;
import java.io.File;
import java.io.IOException;
import java.util.Locale;
import org.apache.myrmidon.api.TaskException;

/**
* Utilities for operating on Path objects.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class PathUtil
{
/**
* Returns an array of URLs - useful for building a ClassLoader.
*/
public static URL[] toURLs( final Path path )
throws TaskException
{
try
{
final String[] list = path.list();

final URL[] result = new URL[ list.length ];

// path containing one or more elements
for( int i = 0; i < list.length; i++ )
{
result[ i ] = new File( list[ i ] ).toURL();
}

return result;
}
catch( final IOException ioe )
{
final String message = "Malformed path entry. Reason:" + ioe;
throw new TaskException( message, ioe );
}
}

public static void addJavaRuntime( final Path path )
throws TaskException
{
if( System.getProperty( "java.vendor" ).toLowerCase( Locale.US ).indexOf( "microsoft" ) >= 0 )
{
// Pull in *.zip from packages directory
FileSet msZipFiles = new FileSet();
msZipFiles.setDir( new File( System.getProperty( "java.home" ) + File.separator + "Packages" ) );
msZipFiles.setIncludes( "*.ZIP" );
path.addFileset( msZipFiles );
}
else if( "Kaffe".equals( System.getProperty( "java.vm.name" ) ) )
{
FileSet kaffeJarFiles = new FileSet();
kaffeJarFiles.setDir( new File( System.getProperty( "java.home" )
+ File.separator + "share"
+ File.separator + "kaffe" ) );

kaffeJarFiles.setIncludes( "*.jar" );
path.addFileset( kaffeJarFiles );
}
else
{
// JDK > 1.1 seems to set java.home to the JRE directory.
final String rt = System.getProperty( "java.home" ) +
File.separator + "lib" + File.separator + "rt.jar";
path.addExisting( new Path( rt ) );
// Just keep the old version as well and let addExisting
// sort it out.
final String rt2 = System.getProperty( "java.home" ) +
File.separator + "jre" + File.separator + "lib" +
File.separator + "rt.jar";
path.addExisting( new Path( rt2 ) );

// Added for MacOS X
final String classes = System.getProperty( "java.home" ) +
File.separator + ".." + File.separator + "Classes" +
File.separator + "classes.jar";
path.addExisting( new Path( classes ) );
final String ui = System.getProperty( "java.home" ) +
File.separator + ".." + File.separator + "Classes" +
File.separator + "ui.jar";
path.addExisting( new Path( ui ) );
}
}

public static void addExtdirs( final Path toPath, final Path extDirs )
throws TaskException
{
final String[] dirs = extDirs.list();
for( int i = 0; i < dirs.length; i++ )
{
final File dir = new File( dirs[ i ] );
if( dir.exists() && dir.isDirectory() )
{
final FileSet fileSet = new FileSet();
fileSet.setDir( dir );
fileSet.setIncludes( "*" );
toPath.addFileset( fileSet );
}
}
}
}

+ 3
- 1
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/depend/Depend.java View File

@@ -24,6 +24,7 @@ import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.types.DirectoryScanner;
import org.apache.tools.ant.taskdefs.MatchingTask;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PathUtil;

/**
* Generate a dependency file for a given set of classes
@@ -570,7 +571,8 @@ public class Depend extends MatchingTask
{
// now determine which jars each class depends upon
classpathDependencies = new Hashtable();
final ClassLoader classLoader = new URLClassLoader( dependClasspath.toURLs() );
final URL[] urls = PathUtil.toURLs( dependClasspath );
final ClassLoader classLoader = new URLClassLoader( urls );

Hashtable classpathFileCache = new Hashtable();
Object nullFileMarker = new Object();


+ 4
- 5
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java View File

@@ -11,6 +11,7 @@ import java.io.File;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.types.DirectoryScanner;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.taskdefs.MatchingTask;

// ====================================================================

@@ -93,9 +94,8 @@ import org.apache.tools.ant.types.Path;
* @version 0.3
*/
public class CSharp
extends org.apache.tools.ant.taskdefs.MatchingTask
extends MatchingTask
{

/**
* name of the executable. the .exe suffix is deliberately not included in
* anticipation of the unix version
@@ -958,6 +958,5 @@ public class CSharp
protected boolean notEmpty( String s )
{
return s != null && s.length() != 0;
}// end execute

}//end class
}
}

+ 4
- 1
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java View File

@@ -13,6 +13,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLClassLoader;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Hashtable;
@@ -33,6 +34,7 @@ import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PathUtil;
import org.apache.tools.ant.util.depend.Dependencies;
import org.apache.tools.ant.util.depend.Filter;
import org.xml.sax.InputSource;
@@ -332,7 +334,8 @@ public class GenericDeploymentTool
}
else
{
classpathLoader = new URLClassLoader( combinedClasspath.toURLs() );
final URL[] urls = PathUtil.toURLs( combinedClasspath );
classpathLoader = new URLClassLoader( urls );
}

return classpathLoader;


+ 4
- 1
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java View File

@@ -13,6 +13,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLClassLoader;
import java.net.URL;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.jar.JarEntry;
@@ -24,6 +25,7 @@ import org.apache.avalon.excalibur.io.FileUtil;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.taskdefs.Java;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PathUtil;
import org.xml.sax.InputSource;

public class WeblogicDeploymentTool extends GenericDeploymentTool
@@ -335,7 +337,8 @@ public class WeblogicDeploymentTool extends GenericDeploymentTool
lookupPath.append( classpath );
}

return new URLClassLoader( lookupPath.toURLs() );
final URL[] urls = PathUtil.toURLs( lookupPath );
return new URLClassLoader( urls );
}

protected DescriptorHandler getWeblogicDescriptorHandler( final File srcDir )


+ 4
- 1
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java View File

@@ -12,6 +12,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLClassLoader;
import java.net.URL;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.jar.JarEntry;
@@ -23,6 +24,7 @@ import org.apache.tools.ant.types.Argument;
import org.apache.tools.ant.types.EnumeratedAttribute;
import org.apache.tools.ant.types.EnvironmentVariable;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PathUtil;

/**
* Websphere deployment tool that augments the ejbjar task.
@@ -413,7 +415,8 @@ public class WebsphereDeploymentTool
{
lookupPath.append( classpath );
}
return new URLClassLoader( lookupPath.toURLs() );
final URL[] urls = PathUtil.toURLs( lookupPath );
return new URLClassLoader( urls );
}

protected DescriptorHandler getDescriptorHandler( File srcDir )


+ 2
- 1
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java View File

@@ -17,6 +17,7 @@ import org.apache.tools.ant.taskdefs.exec.Execute2;
import org.apache.tools.ant.types.Argument;
import org.apache.tools.ant.types.CommandlineJava;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PathUtil;

/**
* Taskdef for the JJTree compiler compiler.
@@ -174,7 +175,7 @@ public class JJTree extends Task
}
final Path classpath = cmdl.createClasspath();
classpath.addLocation( new File( javaccHome, "JavaCC.zip" ) );
classpath.addJavaRuntime();
PathUtil.addJavaRuntime( classpath );

cmdl.addVmArgument( "-mx140M" );
cmdl.addVmArgument( "-Dinstall.root=" + javaccHome.getAbsolutePath() );


+ 2
- 1
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java View File

@@ -18,6 +18,7 @@ import org.apache.tools.ant.types.Argument;
import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.CommandlineJava;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PathUtil;
import org.apache.avalon.excalibur.util.StringUtil;

/**
@@ -228,7 +229,7 @@ public class JavaCC extends Task
}
final Path classpath = cmdl.createClasspath();
classpath.addLocation( new File( javaccHome, "JavaCC.zip" ) );
classpath.addJavaRuntime();
PathUtil.addJavaRuntime( classpath );

cmdl.addVmArgument( "-mx140M" );
cmdl.addVmArgument( "-Dinstall.root=" + javaccHome.getAbsolutePath() );


+ 3
- 1
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java View File

@@ -29,6 +29,7 @@ import org.apache.tools.ant.types.EnumeratedAttribute;
import org.apache.tools.ant.types.EnvironmentVariable;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.SysProperties;
import org.apache.tools.ant.types.PathUtil;

/**
* Ant task to run JUnit tests. <p>
@@ -696,7 +697,8 @@ public class JUnitTask extends Task
if( classpath != null )
{
getLogger().debug( "Using CLASSPATH " + classpath );
classLoader = new URLClassLoader( classpath.toURLs() );
final URL[] urls = PathUtil.toURLs( classpath );
classLoader = new URLClassLoader( urls );
}
runner = new JUnitTestRunner( test,
test.getHaltonerror(),


+ 3
- 81
proposal/myrmidon/src/todo/org/apache/tools/ant/types/Path.java View File

@@ -7,15 +7,14 @@
*/
package org.apache.tools.ant.types;

import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.DataType;
import org.apache.tools.ant.util.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Locale;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.DataType;
import org.apache.tools.ant.util.FileUtils;

/**
* This object represents a path as used by CLASSPATH or PATH environment
@@ -132,55 +131,6 @@ public class Path
m_elements.add( fileSet );
}

/**
* Add the Java Runtime classes to this Path instance.
*/
public void addJavaRuntime()
throws TaskException
{
if( System.getProperty( "java.vendor" ).toLowerCase( Locale.US ).indexOf( "microsoft" ) >= 0 )
{
// Pull in *.zip from packages directory
FileSet msZipFiles = new FileSet();
msZipFiles.setDir( new File( System.getProperty( "java.home" ) + File.separator + "Packages" ) );
msZipFiles.setIncludes( "*.ZIP" );
addFileset( msZipFiles );
}
else if( "Kaffe".equals( System.getProperty( "java.vm.name" ) ) )
{
FileSet kaffeJarFiles = new FileSet();
kaffeJarFiles.setDir( new File( System.getProperty( "java.home" )
+ File.separator + "share"
+ File.separator + "kaffe" ) );

kaffeJarFiles.setIncludes( "*.jar" );
addFileset( kaffeJarFiles );
}
else
{
// JDK > 1.1 seems to set java.home to the JRE directory.
final String rt = System.getProperty( "java.home" ) +
File.separator + "lib" + File.separator + "rt.jar";
addExisting( new Path( rt ) );
// Just keep the old version as well and let addExisting
// sort it out.
final String rt2 = System.getProperty( "java.home" ) +
File.separator + "jre" + File.separator + "lib" +
File.separator + "rt.jar";
addExisting( new Path( rt2 ) );

// Added for MacOS X
final String classes = System.getProperty( "java.home" ) +
File.separator + ".." + File.separator + "Classes" +
File.separator + "classes.jar";
addExisting( new Path( classes ) );
final String ui = System.getProperty( "java.home" ) +
File.separator + ".." + File.separator + "Classes" +
File.separator + "ui.jar";
addExisting( new Path( ui ) );
}
}

/**
* Append the contents of the other Path instance to this.
*/
@@ -309,32 +259,4 @@ public class Path
throw new Error( te.toString() );
}
}

/**
* Returns an array of URLs - useful for building a ClassLoader.
*/
public URL[] toURLs()
throws TaskException
{
try
{
final String[] list = list();

final URL[] result = new URL[ list.length ];

// path containing one or more elements
for( int i = 0; i < list.length; i++ )
{
result[ i ] = new File( list[ i ] ).toURL();
}

return result;
}
catch( final IOException ioe )
{
final String message = "Malformed path entry. Reason:" + ioe;
throw new TaskException( message, ioe );
}
}

}

+ 113
- 0
proposal/myrmidon/src/todo/org/apache/tools/ant/types/PathUtil.java View File

@@ -0,0 +1,113 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.tools.ant.types;

import java.net.URL;
import java.io.File;
import java.io.IOException;
import java.util.Locale;
import org.apache.myrmidon.api.TaskException;

/**
* Utilities for operating on Path objects.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class PathUtil
{
/**
* Returns an array of URLs - useful for building a ClassLoader.
*/
public static URL[] toURLs( final Path path )
throws TaskException
{
try
{
final String[] list = path.list();

final URL[] result = new URL[ list.length ];

// path containing one or more elements
for( int i = 0; i < list.length; i++ )
{
result[ i ] = new File( list[ i ] ).toURL();
}

return result;
}
catch( final IOException ioe )
{
final String message = "Malformed path entry. Reason:" + ioe;
throw new TaskException( message, ioe );
}
}

public static void addJavaRuntime( final Path path )
throws TaskException
{
if( System.getProperty( "java.vendor" ).toLowerCase( Locale.US ).indexOf( "microsoft" ) >= 0 )
{
// Pull in *.zip from packages directory
FileSet msZipFiles = new FileSet();
msZipFiles.setDir( new File( System.getProperty( "java.home" ) + File.separator + "Packages" ) );
msZipFiles.setIncludes( "*.ZIP" );
path.addFileset( msZipFiles );
}
else if( "Kaffe".equals( System.getProperty( "java.vm.name" ) ) )
{
FileSet kaffeJarFiles = new FileSet();
kaffeJarFiles.setDir( new File( System.getProperty( "java.home" )
+ File.separator + "share"
+ File.separator + "kaffe" ) );

kaffeJarFiles.setIncludes( "*.jar" );
path.addFileset( kaffeJarFiles );
}
else
{
// JDK > 1.1 seems to set java.home to the JRE directory.
final String rt = System.getProperty( "java.home" ) +
File.separator + "lib" + File.separator + "rt.jar";
path.addExisting( new Path( rt ) );
// Just keep the old version as well and let addExisting
// sort it out.
final String rt2 = System.getProperty( "java.home" ) +
File.separator + "jre" + File.separator + "lib" +
File.separator + "rt.jar";
path.addExisting( new Path( rt2 ) );

// Added for MacOS X
final String classes = System.getProperty( "java.home" ) +
File.separator + ".." + File.separator + "Classes" +
File.separator + "classes.jar";
path.addExisting( new Path( classes ) );
final String ui = System.getProperty( "java.home" ) +
File.separator + ".." + File.separator + "Classes" +
File.separator + "ui.jar";
path.addExisting( new Path( ui ) );
}
}

public static void addExtdirs( final Path toPath, final Path extDirs )
throws TaskException
{
final String[] dirs = extDirs.list();
for( int i = 0; i < dirs.length; i++ )
{
final File dir = new File( dirs[ i ] );
if( dir.exists() && dir.isDirectory() )
{
final FileSet fileSet = new FileSet();
fileSet.setDir( dir );
fileSet.setIncludes( "*" );
toPath.addFileset( fileSet );
}
}
}
}

Loading…
Cancel
Save