various PATH like structures. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@267782 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -246,10 +246,13 @@ | |||||
| <javac srcdir="${src.tests.dir}" | <javac srcdir="${src.tests.dir}" | ||||
| destdir="${build.tests}" | destdir="${build.tests}" | ||||
| classpath="${lib.dir}/${name}.jar:${classpath}" | |||||
| debug="on" | debug="on" | ||||
| deprecation="off" | deprecation="off" | ||||
| optimize="on" > | optimize="on" > | ||||
| <classpath> | |||||
| <pathelement location="${lib.dir}/${name}.jar" /> | |||||
| <pathelement path="${classpath}" /> | |||||
| </classpath> | |||||
| <include name="**/*.java"/> | <include name="**/*.java"/> | ||||
| <exclude name="**/AllJUnitTests.java" unless="junit.present" /> | <exclude name="**/AllJUnitTests.java" unless="junit.present" /> | ||||
| <exclude name="**/EnumeratedAttributeTest.java" unless="junit.present" /> | <exclude name="**/EnumeratedAttributeTest.java" unless="junit.present" /> | ||||
| @@ -91,6 +91,9 @@ public class Path { | |||||
| private Vector definition; | private Vector definition; | ||||
| public static Path systemClasspath = | |||||
| new Path(System.getProperty("java.class.path")); | |||||
| public Path(String path) { | public Path(String path) { | ||||
| this(); | this(); | ||||
| setPath(path); | setPath(path); | ||||
| @@ -109,14 +109,14 @@ public class Javac extends MatchingTask { | |||||
| private Vector srcPathElements = new Vector(); | private Vector srcPathElements = new Vector(); | ||||
| private Vector srcDirs= new Vector(); | private Vector srcDirs= new Vector(); | ||||
| private File destDir; | private File destDir; | ||||
| private String compileClasspath; | |||||
| private Path compileClasspath; | |||||
| private boolean debug = false; | private boolean debug = false; | ||||
| private boolean optimize = false; | private boolean optimize = false; | ||||
| private boolean deprecation = false; | private boolean deprecation = false; | ||||
| private boolean filtering = false; | private boolean filtering = false; | ||||
| private String target; | private String target; | ||||
| private String bootclasspath; | |||||
| private String extdirs; | |||||
| private Path bootclasspath; | |||||
| private Path extdirs; | |||||
| protected Vector compileList = new Vector(); | protected Vector compileList = new Vector(); | ||||
| protected Hashtable filecopyList = new Hashtable(); | protected Hashtable filecopyList = new Hashtable(); | ||||
| @@ -187,24 +187,66 @@ public class Javac extends MatchingTask { | |||||
| /** | /** | ||||
| * Set the classpath to be used for this compilation. | * Set the classpath to be used for this compilation. | ||||
| */ | */ | ||||
| public void setClasspath(String classpath) { | |||||
| compileClasspath = project.translatePath(classpath); | |||||
| public void setClasspath(Path classpath) { | |||||
| if (compileClasspath == null) { | |||||
| compileClasspath = classpath; | |||||
| } else { | |||||
| compileClasspath.append(classpath); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Maybe creates a nested classpath element. | |||||
| */ | |||||
| public Path createClasspath() { | |||||
| if (compileClasspath == null) { | |||||
| compileClasspath = new Path(); | |||||
| } | |||||
| return compileClasspath; | |||||
| } | } | ||||
| /** | /** | ||||
| * Sets the bootclasspath that will be used to compile the classes | * Sets the bootclasspath that will be used to compile the classes | ||||
| * against. | * against. | ||||
| */ | */ | ||||
| public void setBootclasspath(String bootclasspath) { | |||||
| this.bootclasspath = project.translatePath(bootclasspath); | |||||
| public void setBootclasspath(Path bootclasspath) { | |||||
| if (this.bootclasspath == null) { | |||||
| this.bootclasspath = bootclasspath; | |||||
| } else { | |||||
| this.bootclasspath.append(bootclasspath); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Maybe creates a nested classpath element. | |||||
| */ | |||||
| public Path createBootclasspath() { | |||||
| if (bootclasspath == null) { | |||||
| bootclasspath = new Path(); | |||||
| } | |||||
| return bootclasspath; | |||||
| } | } | ||||
| /** | /** | ||||
| * Sets the extension directories that will be used during the | * Sets the extension directories that will be used during the | ||||
| * compilation. | * compilation. | ||||
| */ | */ | ||||
| public void setExtdirs(String extdirs) { | |||||
| this.extdirs = project.translatePath(extdirs); | |||||
| public void setExtdirs(Path extdirs) { | |||||
| if (this.extdirs == null) { | |||||
| this.extdirs = extdirs; | |||||
| } else { | |||||
| this.extdirs.append(extdirs); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Maybe creates a nested classpath element. | |||||
| */ | |||||
| public Path createExtdirs() { | |||||
| if (extdirs == null) { | |||||
| extdirs = new Path(); | |||||
| } | |||||
| return extdirs; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -387,14 +429,14 @@ public class Javac extends MatchingTask { | |||||
| * <code>classes.zip</code> be added to the classpath. | * <code>classes.zip</code> be added to the classpath. | ||||
| */ | */ | ||||
| private String getCompileClasspath(boolean addRuntime) { | private String getCompileClasspath(boolean addRuntime) { | ||||
| StringBuffer classpath = new StringBuffer(); | |||||
| Path classpath = new Path(); | |||||
| // add dest dir to classpath so that previously compiled and | // add dest dir to classpath so that previously compiled and | ||||
| // untouched classes are on classpath | // untouched classes are on classpath | ||||
| //classpath.append(sourceDir.getAbsolutePath()); | //classpath.append(sourceDir.getAbsolutePath()); | ||||
| //classpath.append(File.pathSeparator); | //classpath.append(File.pathSeparator); | ||||
| classpath.append(destDir.getAbsolutePath()); | |||||
| classpath.setLocation(destDir.getAbsolutePath()); | |||||
| // add our classpath to the mix | // add our classpath to the mix | ||||
| @@ -404,26 +446,27 @@ public class Javac extends MatchingTask { | |||||
| // add the system classpath | // add the system classpath | ||||
| addExistingToClasspath(classpath,System.getProperty("java.class.path")); | |||||
| addExistingToClasspath(classpath, Path.systemClasspath); | |||||
| if (addRuntime) { | if (addRuntime) { | ||||
| if (Project.getJavaVersion() == Project.JAVA_1_1) { | if (Project.getJavaVersion() == Project.JAVA_1_1) { | ||||
| addExistingToClasspath(classpath, | addExistingToClasspath(classpath, | ||||
| System.getProperty("java.home") | |||||
| + File.separator + "lib" | |||||
| + File.separator + "classes.zip"); | |||||
| new Path(System.getProperty("java.home") | |||||
| + File.separator + "lib" | |||||
| + File.separator | |||||
| + "classes.zip")); | |||||
| } else { | } else { | ||||
| // JDK > 1.1 seems to set java.home to the JRE directory. | // JDK > 1.1 seems to set java.home to the JRE directory. | ||||
| addExistingToClasspath(classpath, | addExistingToClasspath(classpath, | ||||
| System.getProperty("java.home") | |||||
| + File.separator + "lib" | |||||
| + File.separator + "rt.jar"); | |||||
| new Path(System.getProperty("java.home") | |||||
| + File.separator + "lib" | |||||
| + File.separator + "rt.jar")); | |||||
| // Just keep the old version as well and let addExistingToPath | // Just keep the old version as well and let addExistingToPath | ||||
| // sort it out. | // sort it out. | ||||
| addExistingToClasspath(classpath, | addExistingToClasspath(classpath, | ||||
| System.getProperty("java.home") | |||||
| + File.separator +"jre" | |||||
| + File.separator + "lib" | |||||
| + File.separator + "rt.jar"); | |||||
| new Path(System.getProperty("java.home") | |||||
| + File.separator +"jre" | |||||
| + File.separator + "lib" | |||||
| + File.separator + "rt.jar")); | |||||
| } | } | ||||
| } | } | ||||
| @@ -442,21 +485,18 @@ public class Javac extends MatchingTask { | |||||
| * @param source - source classpath | * @param source - source classpath | ||||
| * to get file objects. | * to get file objects. | ||||
| */ | */ | ||||
| private void addExistingToClasspath(StringBuffer target,String source) { | |||||
| StringTokenizer tok = new StringTokenizer(source, | |||||
| System.getProperty("path.separator"), false); | |||||
| while (tok.hasMoreTokens()) { | |||||
| File f = project.resolveFile(tok.nextToken()); | |||||
| if (f.exists()) { | |||||
| target.append(File.pathSeparator); | |||||
| target.append(f.getAbsolutePath()); | |||||
| private void addExistingToClasspath(Path target, Path source) { | |||||
| String[] list = source.list(); | |||||
| for (int i=0; i<list.length; i++) { | |||||
| File f = project.resolveFile(list[i]); | |||||
| if (f.exists()) { | |||||
| target.setLocation(f.getAbsolutePath()); | |||||
| } else { | } else { | ||||
| log("Dropping from classpath: "+ | log("Dropping from classpath: "+ | ||||
| f.getAbsolutePath(), Project.MSG_VERBOSE); | f.getAbsolutePath(), Project.MSG_VERBOSE); | ||||
| } | } | ||||
| } | |||||
| } | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -496,10 +536,10 @@ public class Javac extends MatchingTask { | |||||
| argList.addElement("-classpath"); | argList.addElement("-classpath"); | ||||
| // Just add "sourcepath" to classpath ( for JDK1.1 ) | // Just add "sourcepath" to classpath ( for JDK1.1 ) | ||||
| if (Project.getJavaVersion().startsWith("1.1")) { | if (Project.getJavaVersion().startsWith("1.1")) { | ||||
| argList.addElement(classpath + File.pathSeparator + | |||||
| argList.addElement(classpath.toString() + File.pathSeparator + | |||||
| getSourcePath()); | getSourcePath()); | ||||
| } else { | } else { | ||||
| argList.addElement(classpath); | |||||
| argList.addElement(classpath.toString()); | |||||
| argList.addElement("-sourcepath"); | argList.addElement("-sourcepath"); | ||||
| argList.addElement(getSourcePath()); | argList.addElement(getSourcePath()); | ||||
| if (target != null) { | if (target != null) { | ||||
| @@ -515,11 +555,11 @@ public class Javac extends MatchingTask { | |||||
| } | } | ||||
| if (bootclasspath != null) { | if (bootclasspath != null) { | ||||
| argList.addElement("-bootclasspath"); | argList.addElement("-bootclasspath"); | ||||
| argList.addElement(bootclasspath); | |||||
| argList.addElement(bootclasspath.toString()); | |||||
| } | } | ||||
| if (extdirs != null) { | if (extdirs != null) { | ||||
| argList.addElement("-extdirs"); | argList.addElement("-extdirs"); | ||||
| argList.addElement(extdirs); | |||||
| argList.addElement(extdirs.toString()); | |||||
| } | } | ||||
| log("Compilation args: " + argList.toString(), | log("Compilation args: " + argList.toString(), | ||||
| @@ -582,7 +622,7 @@ public class Javac extends MatchingTask { | |||||
| argList.addElement("-d"); | argList.addElement("-d"); | ||||
| argList.addElement(destDir.getAbsolutePath()); | argList.addElement(destDir.getAbsolutePath()); | ||||
| argList.addElement("-classpath"); | argList.addElement("-classpath"); | ||||
| argList.addElement(classpath); | |||||
| argList.addElement(classpath.toString()); | |||||
| argList.addElement("-sourcepath"); | argList.addElement("-sourcepath"); | ||||
| argList.addElement(getSourcePath()); | argList.addElement(getSourcePath()); | ||||
| if (target != null) { | if (target != null) { | ||||
| @@ -597,11 +637,11 @@ public class Javac extends MatchingTask { | |||||
| } | } | ||||
| if (bootclasspath != null) { | if (bootclasspath != null) { | ||||
| argList.addElement("-bootclasspath"); | argList.addElement("-bootclasspath"); | ||||
| argList.addElement(bootclasspath); | |||||
| argList.addElement(bootclasspath.toString()); | |||||
| } | } | ||||
| if (extdirs != null) { | if (extdirs != null) { | ||||
| argList.addElement("-extdirs"); | argList.addElement("-extdirs"); | ||||
| argList.addElement(extdirs); | |||||
| argList.addElement(extdirs.toString()); | |||||
| } | } | ||||
| log("Compilation args: " + argList.toString(), | log("Compilation args: " + argList.toString(), | ||||
| @@ -669,8 +709,7 @@ public class Javac extends MatchingTask { | |||||
| private void doJikesCompile() throws BuildException { | private void doJikesCompile() throws BuildException { | ||||
| log("Using jikes compiler", Project.MSG_VERBOSE); | log("Using jikes compiler", Project.MSG_VERBOSE); | ||||
| StringBuffer classpath = new StringBuffer(); | |||||
| classpath.append(getCompileClasspath(true)); | |||||
| Path classpath = new Path(getCompileClasspath(true)); | |||||
| // Jikes doesn't support an extension dir (-extdir) | // Jikes doesn't support an extension dir (-extdir) | ||||
| // so we'll emulate it for compatibility and convenience. | // so we'll emulate it for compatibility and convenience. | ||||
| @@ -678,8 +717,7 @@ public class Javac extends MatchingTask { | |||||
| // Jikes has no option for source-path so we | // Jikes has no option for source-path so we | ||||
| // will add it to classpath. | // will add it to classpath. | ||||
| classpath.append(File.pathSeparator); | |||||
| classpath.append(getSourcePath()); | |||||
| classpath.setPath(getSourcePath()); | |||||
| Vector argList = new Vector(); | Vector argList = new Vector(); | ||||
| @@ -797,23 +835,20 @@ public class Javac extends MatchingTask { | |||||
| * so that you don't have to specify them all one by one. | * so that you don't have to specify them all one by one. | ||||
| * @param classpath - stringbuffer to append jar files to | * @param classpath - stringbuffer to append jar files to | ||||
| */ | */ | ||||
| private void addExtdirsToClasspath(StringBuffer classpath) { | |||||
| private void addExtdirsToClasspath(Path classpath) { | |||||
| // FIXME | // FIXME | ||||
| // Should we scan files recursively? How does | // Should we scan files recursively? How does | ||||
| // javac handle this? | // javac handle this? | ||||
| if (extdirs != null) { | if (extdirs != null) { | ||||
| StringTokenizer tok = new StringTokenizer(extdirs, | |||||
| File.pathSeparator, | |||||
| false); | |||||
| while (tok.hasMoreTokens()) { | |||||
| File dir = project.resolveFile(tok.nextToken()); | |||||
| String[] list = extdirs.list(); | |||||
| for (int j=0; j<list.length; j++) { | |||||
| File dir = project.resolveFile(list[j]); | |||||
| String[] files = dir.list(new JarFilenameFilter()); | String[] files = dir.list(new JarFilenameFilter()); | ||||
| for (int i=0 ; i < files.length ; i++) { | for (int i=0 ; i < files.length ; i++) { | ||||
| File f = new File(dir,files[i]); | File f = new File(dir,files[i]); | ||||
| if (f.exists() && f.isFile()) { | if (f.exists() && f.isFile()) { | ||||
| classpath.append(File.pathSeparator); | |||||
| classpath.append(f.getAbsolutePath()); | |||||
| classpath.setLocation(f.getAbsolutePath()); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -111,7 +111,7 @@ public class Javadoc extends Exec { | |||||
| public class DocletInfo { | public class DocletInfo { | ||||
| private String name; | private String name; | ||||
| private String path; | |||||
| private Path path; | |||||
| private Vector params = new Vector(); | private Vector params = new Vector(); | ||||
| @@ -123,15 +123,26 @@ public class Javadoc extends Exec { | |||||
| return name; | return name; | ||||
| } | } | ||||
| public void setPath(String path) { | |||||
| this.path = Project.translatePath(path); | |||||
| public void setPath(Path path) { | |||||
| if (this.path == null) { | |||||
| this.path = path; | |||||
| } else { | |||||
| this.path.append(path); | |||||
| } | |||||
| } | } | ||||
| public String getPath() { | |||||
| public Path getPath() { | |||||
| return path; | return path; | ||||
| } | } | ||||
| public Object createParam() { | |||||
| public Path createPath() { | |||||
| if (path == null) { | |||||
| path = new Path(); | |||||
| } | |||||
| return path; | |||||
| } | |||||
| public DocletParam createParam() { | |||||
| DocletParam param = new DocletParam(); | DocletParam param = new DocletParam(); | ||||
| params.addElement(param); | params.addElement(param); | ||||
| @@ -144,7 +155,7 @@ public class Javadoc extends Exec { | |||||
| } | } | ||||
| private String maxmemory = null; | private String maxmemory = null; | ||||
| private String sourcePath = null; | |||||
| private Path sourcePath = null; | |||||
| private String additionalParam = null; | private String additionalParam = null; | ||||
| private File destDir = null; | private File destDir = null; | ||||
| private File overviewFile = null; | private File overviewFile = null; | ||||
| @@ -158,8 +169,8 @@ public class Javadoc extends Exec { | |||||
| private boolean version = true; | private boolean version = true; | ||||
| private DocletInfo doclet = null; | private DocletInfo doclet = null; | ||||
| private boolean old = false; | private boolean old = false; | ||||
| private String classpath = null; | |||||
| private String bootclasspath = null; | |||||
| private Path classpath = null; | |||||
| private Path bootclasspath = null; | |||||
| private String extdirs = null; | private String extdirs = null; | ||||
| private boolean verbose = false; | private boolean verbose = false; | ||||
| private String locale = null; | private String locale = null; | ||||
| @@ -199,8 +210,18 @@ public class Javadoc extends Exec { | |||||
| additionalParam = src; | additionalParam = src; | ||||
| } | } | ||||
| public void setSourcepath(String src) { | |||||
| sourcePath = project.translatePath(src); | |||||
| public void setSourcepath(Path src) { | |||||
| if (sourcePath == null) { | |||||
| sourcePath = src; | |||||
| } else { | |||||
| sourcePath.append(src); | |||||
| } | |||||
| } | |||||
| public Path createSourcepath() { | |||||
| if (sourcePath == null) { | |||||
| sourcePath = new Path(); | |||||
| } | |||||
| return sourcePath; | |||||
| } | } | ||||
| public void setDestdir(String src) { | public void setDestdir(String src) { | ||||
| destDir = project.resolveFile(src); | destDir = project.resolveFile(src); | ||||
| @@ -233,7 +254,7 @@ public class Javadoc extends Exec { | |||||
| doclet.setName(src); | doclet.setName(src); | ||||
| } | } | ||||
| public void setDocletPath(String src) { | |||||
| public void setDocletPath(Path src) { | |||||
| if (doclet == null) { | if (doclet == null) { | ||||
| doclet = new DocletInfo(); | doclet = new DocletInfo(); | ||||
| } | } | ||||
| @@ -248,11 +269,31 @@ public class Javadoc extends Exec { | |||||
| public void setOld(String src) { | public void setOld(String src) { | ||||
| old = Project.toBoolean(src); | old = Project.toBoolean(src); | ||||
| } | } | ||||
| public void setClasspath(String src) { | |||||
| classpath = project.translatePath(src); | |||||
| public void setClasspath(Path src) { | |||||
| if (classpath == null) { | |||||
| classpath = src; | |||||
| } else { | |||||
| classpath.append(src); | |||||
| } | |||||
| } | |||||
| public Path createClasspath() { | |||||
| if (classpath == null) { | |||||
| classpath = new Path(); | |||||
| } | |||||
| return classpath; | |||||
| } | } | ||||
| public void setBootclasspath(String src) { | |||||
| bootclasspath = project.translatePath(src); | |||||
| public void setBootclasspath(Path src) { | |||||
| if (bootclasspath == null) { | |||||
| bootclasspath = src; | |||||
| } else { | |||||
| bootclasspath.append(src); | |||||
| } | |||||
| } | |||||
| public Path createBootclasspath() { | |||||
| if (bootclasspath == null) { | |||||
| bootclasspath = new Path(); | |||||
| } | |||||
| return bootclasspath; | |||||
| } | } | ||||
| public void setExtdirs(String src) { | public void setExtdirs(String src) { | ||||
| extdirs = src; | extdirs = src; | ||||
| @@ -420,7 +461,7 @@ public class Javadoc extends Exec { | |||||
| // ------------------------------------------------ general javadoc arguments | // ------------------------------------------------ general javadoc arguments | ||||
| if (classpath == null) | if (classpath == null) | ||||
| classpath = System.getProperty("java.class.path"); | |||||
| classpath = Path.systemClasspath; | |||||
| if(maxmemory != null){ | if(maxmemory != null){ | ||||
| @@ -434,15 +475,15 @@ public class Javadoc extends Exec { | |||||
| if ( (!javadoc1) || (sourcePath == null) ) { | if ( (!javadoc1) || (sourcePath == null) ) { | ||||
| argList.addElement("-classpath"); | argList.addElement("-classpath"); | ||||
| argList.addElement(classpath); | |||||
| argList.addElement(classpath.toString()); | |||||
| if (sourcePath != null) { | if (sourcePath != null) { | ||||
| argList.addElement("-sourcepath"); | argList.addElement("-sourcepath"); | ||||
| argList.addElement(sourcePath); | |||||
| argList.addElement(sourcePath.toString()); | |||||
| } | } | ||||
| } else { | } else { | ||||
| argList.addElement("-classpath"); | argList.addElement("-classpath"); | ||||
| argList.addElement(sourcePath + | |||||
| System.getProperty("path.separator") + classpath); | |||||
| argList.addElement(sourcePath.toString() + | |||||
| System.getProperty("path.separator") + classpath.toString()); | |||||
| } | } | ||||
| if (destDir != null) { | if (destDir != null) { | ||||
| @@ -510,7 +551,7 @@ public class Javadoc extends Exec { | |||||
| argList.addElement(doclet.getName()); | argList.addElement(doclet.getName()); | ||||
| if (doclet.getPath() != null) { | if (doclet.getPath() != null) { | ||||
| argList.addElement("-docletpath"); | argList.addElement("-docletpath"); | ||||
| argList.addElement(doclet.getPath()); | |||||
| argList.addElement(doclet.getPath().toString()); | |||||
| } | } | ||||
| for (Enumeration e = doclet.getParams(); e.hasMoreElements();) { | for (Enumeration e = doclet.getParams(); e.hasMoreElements();) { | ||||
| DocletParam param = (DocletParam)e.nextElement(); | DocletParam param = (DocletParam)e.nextElement(); | ||||
| @@ -527,7 +568,7 @@ public class Javadoc extends Exec { | |||||
| } | } | ||||
| if (bootclasspath != null) { | if (bootclasspath != null) { | ||||
| argList.addElement("-bootclasspath"); | argList.addElement("-bootclasspath"); | ||||
| argList.addElement(bootclasspath); | |||||
| argList.addElement(bootclasspath.toString()); | |||||
| } | } | ||||
| if (extdirs != null) { | if (extdirs != null) { | ||||
| argList.addElement("-extdirs"); | argList.addElement("-extdirs"); | ||||
| @@ -712,15 +753,15 @@ public class Javadoc extends Exec { | |||||
| * with the packages found in that path subdirs matching one of the given | * with the packages found in that path subdirs matching one of the given | ||||
| * patterns. | * patterns. | ||||
| */ | */ | ||||
| private void evaluatePackages(String sourcePath, Vector packages, Vector argList) { | |||||
| private void evaluatePackages(Path sourcePath, Vector packages, Vector argList) { | |||||
| log("Parsing source files for packages", Project.MSG_INFO); | log("Parsing source files for packages", Project.MSG_INFO); | ||||
| log("Source path = " + sourcePath, Project.MSG_VERBOSE); | |||||
| log("Source path = " + sourcePath.toString(), Project.MSG_VERBOSE); | |||||
| log("Packages = " + packages, Project.MSG_VERBOSE); | log("Packages = " + packages, Project.MSG_VERBOSE); | ||||
| Vector addedPackages = new Vector(); | Vector addedPackages = new Vector(); | ||||
| PathTokenizer tokenizer = new PathTokenizer(sourcePath); | |||||
| while (tokenizer.hasMoreTokens()) { | |||||
| File source = new File(project.translatePath(tokenizer.nextToken())); | |||||
| String[] list = sourcePath.list(); | |||||
| for (int j=0; j<list.length; j++) { | |||||
| File source = project.resolveFile(list[j]); | |||||
| Hashtable map = mapClasses(source); | Hashtable map = mapClasses(source); | ||||
| @@ -87,7 +87,7 @@ public class Rmic extends MatchingTask { | |||||
| private String classname; | private String classname; | ||||
| private String sourceBase; | private String sourceBase; | ||||
| private String stubVersion; | private String stubVersion; | ||||
| private String compileClasspath; | |||||
| private Path compileClasspath; | |||||
| private boolean verify = false; | private boolean verify = false; | ||||
| private boolean filtering = false; | private boolean filtering = false; | ||||
| @@ -123,8 +123,22 @@ public class Rmic extends MatchingTask { | |||||
| /** | /** | ||||
| * Set the classpath to be used for this compilation. | * Set the classpath to be used for this compilation. | ||||
| */ | */ | ||||
| public void setClasspath(String classpath) { | |||||
| compileClasspath = project.translatePath(classpath); | |||||
| public void setClasspath(Path classpath) { | |||||
| if (compileClasspath == null) { | |||||
| compileClasspath = classpath; | |||||
| } else { | |||||
| compileClasspath.append(classpath); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Maybe creates a nesetd classpath element. | |||||
| */ | |||||
| public Path createClasspath() { | |||||
| if (compileClasspath == null) { | |||||
| compileClasspath = new Path(); | |||||
| } | |||||
| return compileClasspath; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -352,11 +366,9 @@ public class Rmic extends MatchingTask { | |||||
| // we need a way to not use the current classpath. | // we need a way to not use the current classpath. | ||||
| private String getCompileClasspath(File baseFile) { | private String getCompileClasspath(File baseFile) { | ||||
| StringBuffer classpath = new StringBuffer(); | |||||
| // add dest dir to classpath so that previously compiled and | // add dest dir to classpath so that previously compiled and | ||||
| // untouched classes are on classpath | // untouched classes are on classpath | ||||
| classpath.append(baseFile.getAbsolutePath()); | |||||
| Path classpath = new Path(baseFile.getAbsolutePath()); | |||||
| // add our classpath to the mix | // add our classpath to the mix | ||||
| @@ -365,14 +377,13 @@ public class Rmic extends MatchingTask { | |||||
| } | } | ||||
| // add the system classpath | // add the system classpath | ||||
| addExistingToClasspath(classpath, Path.systemClasspath); | |||||
| addExistingToClasspath(classpath,System.getProperty("java.class.path")); | |||||
| // in jdk 1.2, the system classes are not on the visible classpath. | // in jdk 1.2, the system classes are not on the visible classpath. | ||||
| if (Project.getJavaVersion().startsWith("1.2")) { | if (Project.getJavaVersion().startsWith("1.2")) { | ||||
| String bootcp = System.getProperty("sun.boot.class.path"); | String bootcp = System.getProperty("sun.boot.class.path"); | ||||
| if (bootcp != null) { | if (bootcp != null) { | ||||
| addExistingToClasspath(classpath, bootcp); | |||||
| addExistingToClasspath(classpath, new Path(bootcp)); | |||||
| } | } | ||||
| } | } | ||||
| return classpath.toString(); | return classpath.toString(); | ||||
| @@ -389,21 +400,18 @@ public class Rmic extends MatchingTask { | |||||
| * @param source - source classpath | * @param source - source classpath | ||||
| * to get file objects. | * to get file objects. | ||||
| */ | */ | ||||
| private void addExistingToClasspath(StringBuffer target,String source) { | |||||
| StringTokenizer tok = new StringTokenizer(source, | |||||
| System.getProperty("path.separator"), false); | |||||
| while (tok.hasMoreTokens()) { | |||||
| File f = project.resolveFile(tok.nextToken()); | |||||
| if (f.exists()) { | |||||
| target.append(File.pathSeparator); | |||||
| target.append(f.getAbsolutePath()); | |||||
| private void addExistingToClasspath(Path target, Path source) { | |||||
| String[] list = source.list(); | |||||
| for (int i=0; i<list.length; i++) { | |||||
| File f = project.resolveFile(list[i]); | |||||
| if (f.exists()) { | |||||
| target.setLocation(f.getAbsolutePath()); | |||||
| } else { | } else { | ||||
| log("Dropping from classpath: "+ | log("Dropping from classpath: "+ | ||||
| f.getAbsolutePath(), Project.MSG_VERBOSE); | f.getAbsolutePath(), Project.MSG_VERBOSE); | ||||
| } | } | ||||
| } | |||||
| } | |||||
| } | } | ||||
| } | } | ||||