You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by gl...@apache.org on 2001/02/04 02:04:03 UTC

cvs commit: jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper JspEngineContext.java

glenn       01/02/03 17:04:03

  Modified:    jasper/src/share/org/apache/jasper JspEngineContext.java
  Log:
  - Implemented Java SecurityManager
  - Switched to using URLClassLoader
  
  Jasper now creates a URLClassLoader for each JSP page and defers any other
  class loading to the web app context class loader.  Using a single class
  loader per JSP allowed me to remove all the code that increments the
  class version number, i.e. the work directory no longer has multiple
  *.java and *.class files for the same JSP page.  These changes also made
  it easy for me to put the java source and class files in the same directory
  tree as found in the web app context.  When Jasper is run in a servlet
  container it no longer puts the class files in a package, they are now
  in the default package.
  
  Revision  Changes    Path
  1.4       +25 -31    jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspEngineContext.java
  
  Index: JspEngineContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspEngineContext.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- JspEngineContext.java	2000/11/06 20:52:20	1.3
  +++ JspEngineContext.java	2001/02/04 01:04:02	1.4
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspEngineContext.java,v 1.3 2000/11/06 20:52:20 pierred Exp $
  - * $Revision: 1.3 $
  - * $Date: 2000/11/06 20:52:20 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspEngineContext.java,v 1.4 2001/02/04 01:04:02 glenn Exp $
  + * $Revision: 1.4 $
  + * $Date: 2001/02/04 01:04:02 $
    *
    * ====================================================================
    * 
  @@ -65,16 +65,17 @@
   
   package org.apache.jasper;
   
  +import java.io.IOException;
  +import java.io.File;
   import java.net.URL;
  +import java.net.URLClassLoader;
   import java.net.MalformedURLException;
   import javax.servlet.ServletContext;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletResponse;
  -import java.io.IOException;
   
   import org.apache.jasper.compiler.JspReader;
   import org.apache.jasper.compiler.ServletWriter;
  -//import org.apache.jasper.runtime.JspLoader;
   import org.apache.jasper.servlet.JasperLoader;
   import org.apache.jasper.compiler.TagLibraries;
   
  @@ -89,9 +90,6 @@
    * engine. This is a per-request/per-context data structure. Some of
    * the instance variables are set at different points.
    *
  - * JspLoader creates this object and passes this off to the "compiler"
  - * subsystem, which then initializes the rest of the variables. 
  - *
    * @author Anil K. Vijendran
    * @author Harish Prabandham
    * @author Pierre Delisle
  @@ -100,10 +98,11 @@
       JspReader reader;
       ServletWriter writer;
       ServletContext context;
  -    JasperLoader loader;
  +    URLClassLoader loader;
       String classpath; // for compiling JSPs.
       boolean isErrPage;
       String jspFile;
  +    String outDir;
       String servletClassName;
       String servletPackageName;
       String servletJavaFileName;
  @@ -113,15 +112,16 @@
       HttpServletResponse res;
       
   
  -    public JspEngineContext(JasperLoader loader, String classpath, 
  -                            ServletContext context, String jspFile, 
  -                            boolean isErrPage, Options options, 
  +    public JspEngineContext(URLClassLoader loader, String classpath, 
  +                            ServletContext context, String jspFile, String outDir,
  +                            boolean isErrPage, Options options,
                               HttpServletRequest req, HttpServletResponse res) 
       {
           this.loader = loader;
           this.classpath = classpath;
           this.context = context;
           this.jspFile = jspFile;
  +	this.outDir = outDir;
           this.isErrPage = isErrPage;
           this.options = options;
           this.req = req;
  @@ -147,7 +147,15 @@
        * The classpath that is passed off to the Java compiler. 
        */
       public String getClassPath() {
  -        return loader.getClassPath() + classpath;
  +	URL [] urls = loader.getURLs();
  +        StringBuffer cpath = new StringBuffer();
  +        String sep = System.getProperty("path.separator");
  +
  +        for(int i = 0; i < urls.length; i++) {
  +            cpath.append((String)urls[i].getFile()+sep);
  +        }
  +         
  +        return cpath.toString() + classpath;
       }
       
       /**
  @@ -179,10 +187,6 @@
           return loader;
       }
   
  -    public void addJar( String jar ) throws IOException  {
  -	loader.addJar( jar );
  -    }
  -
       /**
        * Are we processing something that has been declared as an
        * errorpage? 
  @@ -197,7 +201,7 @@
        * other places it is called outputDir.
        */
       public String getOutputDir() {
  -        return options.getScratchDir().toString();
  +        return outDir;
       }
       
       /**
  @@ -217,23 +221,13 @@
       }
       
       /**
  -     * The package name into which the servlet class is generated. 
  +     * Package name for the generated class.
        */
       public String getServletPackageName() {
           return servletPackageName;
       }
   
       /**
  -     * Utility method to get the full class name from the package and
  -     * class name. 
  -     */
  -    public final String getFullClassName() {
  -        if (servletPackageName == null)
  -            return servletClassName;
  -        return servletPackageName + "." + servletClassName;
  -    }
  -
  -    /**
        * Full path name of the Java file into which the servlet is being
        * generated. 
        */
  @@ -282,7 +276,7 @@
       public void setServletPackageName(String servletPackageName) {
           this.servletPackageName = servletPackageName;
       }
  -    
  +
       public void setServletJavaFileName(String servletJavaFileName) {
           this.servletJavaFileName = servletJavaFileName;
       }
  @@ -351,7 +345,7 @@
           return context.getResourceAsStream(res);
       }
   
  -    public java.net.URL getResource(String res)
  +    public URL getResource(String res)
   	throws MalformedURLException
       {
           return context.getResource(res);