bodewig 2004/06/28 01:49:46 Modified: . WHATSNEW docs/manual/OptionalTasks jspc.html src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers JasperC.java Log: try to support Tomcat 5.x Revision Changes Path 1.634 +5 -0 ant/WHATSNEW Index: WHATSNEW =================================================================== RCS file: /home/cvs/ant/WHATSNEW,v retrieving revision 1.633 retrieving revision 1.634 diff -u -r1.633 -r1.634 --- WHATSNEW 25 Jun 2004 13:50:33 -0000 1.633 +++ WHATSNEW 28 Jun 2004 08:49:46 -0000 1.634 @@ -259,6 +259,11 @@ * <junitreport> now also works with Xalan XSLTC and/or JDK 1.5. Bugzilla Report 27541. +* <jspc> doesn't work properly with Tomcat 5.x. We've implemented a + work-around but don't intend to support future changes in Tomcat + 5.x. Please use the jspc task that ships with Tomcat instead of + Ant's. + Changes from Ant 1.6.0 to Ant 1.6.1 ============================================= 1.18 +7 -0 ant/docs/manual/OptionalTasks/jspc.html Index: jspc.html =================================================================== RCS file: /home/cvs/ant/docs/manual/OptionalTasks/jspc.html,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- jspc.html 9 Feb 2004 21:50:08 -0000 1.17 +++ jspc.html 28 Jun 2004 08:49:46 -0000 1.18 @@ -11,6 +11,13 @@ <h3>Description</h3> <p> Ant task to run the JSP compiler and turn JSP pages into Java source. + +<p><b>Deprecated</b> if you use this task with Tomcat's Jasper JSP +compiler, you should seriously consider using the task shipping with +Tomcat instead. This task is only tested against Tomcat 4.x. There +are known problems with Tomcat 5.x that won't get fixed in Ant, please +use Tomcat's jspc task instead.</p> + <p> It can be used to precompile JSP pages for fast initial invocation 1.23 +46 -10 ant/src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JasperC.java Index: JasperC.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JasperC.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- JasperC.java 9 Mar 2004 16:48:30 -0000 1.22 +++ JasperC.java 28 Jun 2004 08:49:46 -0000 1.23 @@ -18,6 +18,7 @@ package org.apache.tools.ant.taskdefs.optional.jsp.compilers; import java.io.File; +import org.apache.tools.ant.AntClassLoader; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.Java; @@ -52,23 +53,19 @@ getJspc().log("Using jasper compiler", Project.MSG_VERBOSE); CommandlineJava cmd = setupJasperCommand(); - try { // Create an instance of the compiler, redirecting output to // the project log Java java = (Java) (getProject().createTask("java")); + Path p = getClasspath(); if (getJspc().getClasspath() != null) { - getProject().log("using user supplied classpath: " - + getJspc().getClasspath(), Project.MSG_DEBUG); - java.setClasspath(getJspc().getClasspath() - .concatSystemClasspath("ignore")); + getProject().log("using user supplied classpath: " + p, + Project.MSG_DEBUG); } else { - Path classpath = new Path(getProject()); - classpath = classpath.concatSystemClasspath("only"); - getProject().log("using system classpath: " + classpath, + getProject().log("using system classpath: " + p, Project.MSG_DEBUG); - java.setClasspath(classpath); } + java.setClasspath(p); java.setDir(getProject().getBaseDir()); java.setClassname("org.apache.jasper.JspC"); //this is really irritating; we need a way to set stuff @@ -106,7 +103,15 @@ JspC jspc = getJspc(); addArg(cmd, "-d", jspc.getDestdir()); addArg(cmd, "-p", jspc.getPackage()); - addArg(cmd, "-v" + jspc.getVerbose()); + + if (!isTomcat5x()) { + addArg(cmd, "-v" + jspc.getVerbose()); + } else { + getProject().log("this task doesn't support Tomcat 5.x properly, " + + "please use the Tomcat provided jspc task " + + "instead"); + } + addArg(cmd, "-uriroot", jspc.getUriroot()); addArg(cmd, "-uribase", jspc.getUribase()); addArg(cmd, "-ieplugin", jspc.getIeplugin()); @@ -131,5 +136,36 @@ public JspMangler createMangler() { return mangler; + } + + /** + * @since Ant 1.6.2 + */ + private Path getClasspath() { + Path p = getJspc().getClasspath(); + if (p == null) { + p = new Path(getProject()); + return p.concatSystemClasspath("only"); + } else { + return p.concatSystemClasspath("ignore"); + } + } + + /** + * @since Ant 1.6.2 + */ + private boolean isTomcat5x() { + AntClassLoader l = null; + try { + l = getProject().createClassLoader(getClasspath()); + l.loadClass("org.apache.jasper.tagplugins.jstl.If"); + return true; + } catch (ClassNotFoundException e) { + return false; + } finally { + if (l != null) { + l.cleanup(); + } + } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]