git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270809 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -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 | |||
| @@ -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 ); | |||
| } | |||
| } | |||
| @@ -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(); | |||
| @@ -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 | |||
| } | |||
| } | |||
| @@ -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; | |||
| @@ -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 ) | |||
| @@ -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 ) | |||
| @@ -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() ); | |||
| @@ -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() ); | |||
| @@ -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(), | |||
| @@ -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 ); | |||
| } | |||
| } | |||
| } | |||
| @@ -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 ); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -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(); | |||
| @@ -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 | |||
| } | |||
| } | |||
| @@ -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; | |||
| @@ -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 ) | |||
| @@ -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 ) | |||
| @@ -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() ); | |||
| @@ -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() ); | |||
| @@ -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(), | |||
| @@ -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 ); | |||
| } | |||
| } | |||
| } | |||
| @@ -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 ); | |||
| } | |||
| } | |||
| } | |||
| } | |||