yoavs 2005/07/22 07:46:24 Modified: webapps/docs changelog.xml jasper2/src/share/org/apache/jasper JspC.java Log: Bugzilla 35571: http://issues.apache.org/bugzilla/show_bug.cgi?id=35571 Note: using a method (FileUtils.getFileUtils) which was deprecated in Ant 1.6.3, but will be available for a while. If we ever require Ant 1.6.3 or later for building, we can update the method call. Revision Changes Path 1.334 +4 -0 jakarta-tomcat-catalina/webapps/docs/changelog.xml Index: changelog.xml =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/webapps/docs/changelog.xml,v retrieving revision 1.333 retrieving revision 1.334 diff -u -r1.333 -r1.334 --- changelog.xml 22 Jul 2005 13:47:53 -0000 1.333 +++ changelog.xml 22 Jul 2005 14:46:24 -0000 1.334 @@ -269,6 +269,10 @@ <fix> <bug>35410</bug>: Fixed NPE in JspWriterImpl. (yoavs) </fix> + <add> + <bug>35571</bug>: JspC resolved uriRoot relative to Ant project basedir, if any, as suggested + by Jason Pettiss. (yoavs) + </add> </changelog> </subsection> 1.98 +49 -6 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspC.java Index: JspC.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspC.java,v retrieving revision 1.97 retrieving revision 1.98 diff -u -r1.97 -r1.98 --- JspC.java 21 Jul 2005 21:23:48 -0000 1.97 +++ JspC.java 22 Jul 2005 14:46:24 -0000 1.98 @@ -46,7 +46,10 @@ import org.apache.jasper.compiler.TagPluginManager; import org.apache.jasper.compiler.TldLocationsCache; import org.apache.jasper.servlet.JspCServletContext; + import org.apache.tools.ant.AntClassLoader; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.util.FileUtils; /** * Shell for the jspc compiler. Handles all options associated with the @@ -146,6 +149,7 @@ private String targetClassName; private String uriBase; private String uriRoot; + private Project project; private int dieLevel; private boolean helpNeeded = false; private boolean compile = false; @@ -602,18 +606,37 @@ } /** + * Sets the project. + * + * @param theProject The project + */ + public void setProject(final Project theProject) { + project = theProject; + } + + /** + * Returns the project: may be null if not running + * inside an Ant project. + * + * @return The project + */ + public Project getProject() { + return project; + } + + /** * Base dir for the webapp. Used to generate class names and resolve * includes */ public void setUriroot( String s ) { if( s==null ) { - uriRoot=s; + uriRoot = s; return; } try { - uriRoot=new File( s ).getCanonicalPath(); + uriRoot = resolveFile(s).getCanonicalPath(); } catch( Exception ex ) { - uriRoot=s; + uriRoot = s; } } @@ -654,7 +677,7 @@ public void setOutputDir( String s ) { if( s!= null ) { - scratchDir = new File(s).getAbsoluteFile(); + scratchDir = resolveFile(s).getAbsoluteFile(); } else { scratchDir=null; } @@ -677,7 +700,7 @@ * File where we generate a web.xml fragment with the class definitions. */ public void setWebXmlFragment( String s ) { - webxmlFile=s; + webxmlFile=resolveFile(s).getAbsolutePath(); webxmlLevel=INC_WEBXML; } @@ -685,7 +708,7 @@ * File where we generate a complete web.xml with the class definitions. */ public void setWebXml( String s ) { - webxmlFile=s; + webxmlFile=resolveFile(s).getAbsolutePath(); webxmlLevel=ALL_WEBXML; } @@ -1280,4 +1303,24 @@ // pass straight through } } + + /** + * Resolves the relative or absolute pathname correctly + * in both Ant and command-line situations. If Ant launched + * us, we should use the basedir of the current project + * to resolve relative paths. + * + * See Bugzilla 35571. + * + * @param s The file + * @return The file resolved + */ + protected File resolveFile(final String s) { + if(getProject() == null) { + // Note FileUtils.getFileUtils replaces FileUtils.newFileUtils in Ant 1.6.3 + return FileUtils.newFileUtils().resolveFile(null, s); + } else { + return FileUtils.newFileUtils().resolveFile(getProject().getBaseDir(), s); + } + } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]