summaryrefslogtreecommitdiff
path: root/src/main/org
diff options
context:
space:
mode:
authorSteve Loughran <stevel@apache.org>2002-06-05 21:02:11 +0000
committerSteve Loughran <stevel@apache.org>2002-06-05 21:02:11 +0000
commit5b320cdc202a575a067f3dacbd06bff3ebc43f83 (patch)
tree506b5986b0c70f9b7fac5b22e41771f48c3f8c8a /src/main/org
parentca91f8cb7e4f2bfe1a191dea6126a32649af9565 (diff)
downloadant-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.java34
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java33
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 &lt;file&gt; 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) {