diff options
author | Steve Loughran <stevel@apache.org> | 2002-06-05 21:02:11 +0000 |
---|---|---|
committer | Steve Loughran <stevel@apache.org> | 2002-06-05 21:02:11 +0000 |
commit | 5b320cdc202a575a067f3dacbd06bff3ebc43f83 (patch) | |
tree | 506b5986b0c70f9b7fac5b22e41771f48c3f8c8a /src/main/org | |
parent | ca91f8cb7e4f2bfe1a191dea6126a32649af9565 (diff) | |
download | ant-5b320cdc202a575a067f3dacbd06bff3ebc43f83.tar.gz |
Keith Wannamaker's classpath patches to jspc.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272843 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/main/org')
-rw-r--r-- | src/main/org/apache/tools/ant/taskdefs/optional/jsp/JspC.java | 34 | ||||
-rw-r--r-- | src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java | 33 |
2 files changed, 63 insertions, 4 deletions
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jsp/JspC.java b/src/main/org/apache/tools/ant/taskdefs/optional/jsp/JspC.java index df024f813..1da9c906d 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/jsp/JspC.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/jsp/JspC.java @@ -60,6 +60,7 @@ import java.util.Date; import java.util.Vector; import java.util.Enumeration; +import org.apache.tools.ant.AntClassLoader; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.DirectoryScanner; import org.apache.tools.ant.Project; @@ -113,6 +114,7 @@ import org.apache.tools.ant.types.Reference; public class JspC extends MatchingTask { /* ------------------------------------------------------------ */ private Path classpath; + private Path compilerClasspath; private Path src; private File destDir; private String packageName ; @@ -297,6 +299,35 @@ public class JspC extends MatchingTask { return classpath; } + /* ------------------------------------------------------------ */ + /** + * Set the classpath to be used to find this compiler adapter + */ + public void setCompilerclasspath(Path cp) { + if (compilerClasspath == null) { + compilerClasspath = cp; + } else { + compilerClasspath.append(cp); + } + } + + /** + * get the classpath used to find the compiler adapter + */ + public Path getCompilerclasspath(){ + return compilerClasspath; + } + + /** + * Support nested compiler classpath, used to locate compiler adapter + */ + public Path createCompilerclasspath() { + if (compilerClasspath == null) { + compilerClasspath = new Path(project); + } + return compilerClasspath.createPath(); + } + /** * -webxml <file> Creates a complete web.xml when using the -webapp option. * @@ -384,7 +415,8 @@ public class JspC extends MatchingTask { //bind to a compiler JspCompilerAdapter compiler = - JspCompilerAdapterFactory.getCompiler(compilerName, this); + JspCompilerAdapterFactory.getCompiler(compilerName, this, + new AntClassLoader(getProject(), compilerClasspath)); // if the compiler does its own dependency stuff, we just call it right now if (compiler.implementsOwnDependencyChecking()) { diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java b/src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java index 4717ed04e..7db9c526b 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java @@ -53,6 +53,7 @@ */ package org.apache.tools.ant.taskdefs.optional.jsp.compilers; +import org.apache.tools.ant.AntClassLoader; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; @@ -87,13 +88,37 @@ public class JspCompilerAdapterFactory { */ public static JspCompilerAdapter getCompiler(String compilerType, Task task) throws BuildException { + return getCompiler(compilerType, task, + new AntClassLoader(task.getProject(), null)); + } + + /** + * Based on the parameter passed in, this method creates the necessary + * factory desired. + * + * The current mapping for compiler names are as follows: + * <ul><li>jasper = jasper compiler (the default) + * <li><i>a fully quallified classname</i> = the name of a jsp compiler + * adapter + * </ul> + * + * @param compilerType either the name of the desired compiler, or the + * full classname of the compiler's adapter. + * @param task a task to log through. + * @param loader AntClassLoader with which the compiler should be loaded + * @throws BuildException if the compiler type could not be resolved into + * a compiler adapter. + */ + public static JspCompilerAdapter getCompiler(String compilerType, Task task, + AntClassLoader loader) + throws BuildException { /* If I've done things right, this should be the extent of the * conditional statements required. */ if (compilerType.equalsIgnoreCase("jasper")) { return new JasperC(); } - return resolveClassName(compilerType); + return resolveClassName(compilerType, loader); } /** @@ -101,13 +126,15 @@ public class JspCompilerAdapterFactory { * Throws a fit if it can't. * * @param className The fully qualified classname to be created. + * @param classloader Classloader with which to load the class * @throws BuildException This is the fit that is thrown if className * isn't an instance of JspCompilerAdapter. */ - private static JspCompilerAdapter resolveClassName(String className) + private static JspCompilerAdapter resolveClassName(String className, + AntClassLoader classloader) throws BuildException { try { - Class c = Class.forName(className); + Class c = classloader.findClass(className); Object o = c.newInstance(); return (JspCompilerAdapter) o; } catch (ClassNotFoundException cnfe) { |