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]

Reply via email to