diff --git a/proposal/myrmidon/src/java/org/apache/antlib/xml/XMLValidateTask.java b/proposal/myrmidon/src/java/org/apache/antlib/xml/XMLValidateTask.java index f117d8aaf..d278b5a24 100644 --- a/proposal/myrmidon/src/java/org/apache/antlib/xml/XMLValidateTask.java +++ b/proposal/myrmidon/src/java/org/apache/antlib/xml/XMLValidateTask.java @@ -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 diff --git a/proposal/myrmidon/src/java/org/apache/antlib/xml/XSLTProcess.java b/proposal/myrmidon/src/java/org/apache/antlib/xml/XSLTProcess.java index 529e88a66..2e311d846 100644 --- a/proposal/myrmidon/src/java/org/apache/antlib/xml/XSLTProcess.java +++ b/proposal/myrmidon/src/java/org/apache/antlib/xml/XSLTProcess.java @@ -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 ); } } diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/depend/Depend.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/depend/Depend.java index 287d8a2da..653135b2d 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/depend/Depend.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/depend/Depend.java @@ -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(); diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java index 53db588c5..83329ead1 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java @@ -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 + } +} diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java index fa9d8b0b1..1793f516c 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java @@ -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; diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java index c71d48551..3df82e248 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java @@ -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 ) diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java index 09033c69b..259219b35 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java @@ -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 ) diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java index ce8037cad..7221f1378 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java @@ -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() ); diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java index 2c8fec884..91f944d8a 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java @@ -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() ); diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java index 1dd40bae2..3900b105b 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java @@ -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.

@@ -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(), diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/types/Path.java b/proposal/myrmidon/src/main/org/apache/tools/ant/types/Path.java index 68d290893..cfff27502 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/types/Path.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/types/Path.java @@ -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 ); - } - } - } diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/types/PathUtil.java b/proposal/myrmidon/src/main/org/apache/tools/ant/types/PathUtil.java new file mode 100644 index 000000000..b9419d3d7 --- /dev/null +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/types/PathUtil.java @@ -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 Peter Donald + * @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 ); + } + } + } +} diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/depend/Depend.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/depend/Depend.java index 287d8a2da..653135b2d 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/depend/Depend.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/depend/Depend.java @@ -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(); diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java index 53db588c5..83329ead1 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java @@ -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 + } +} diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java index fa9d8b0b1..1793f516c 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java @@ -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; diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java index c71d48551..3df82e248 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java @@ -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 ) diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java index 09033c69b..259219b35 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java @@ -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 ) diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java index ce8037cad..7221f1378 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java @@ -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() ); diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java index 2c8fec884..91f944d8a 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java @@ -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() ); diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java index 1dd40bae2..3900b105b 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java @@ -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.

@@ -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(), diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/types/Path.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/Path.java index 68d290893..cfff27502 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/types/Path.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/Path.java @@ -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 ); - } - } - } diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/types/PathUtil.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/PathUtil.java new file mode 100644 index 000000000..b9419d3d7 --- /dev/null +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/types/PathUtil.java @@ -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 Peter Donald + * @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 ); + } + } + } +}