luehe       2002/08/03 16:29:21

  Modified:    jasper2/src/share/org/apache/jasper
                        JspCompilationContext.java
               jasper2/src/share/org/apache/jasper/compiler Compiler.java
                        Generator.java JspRuntimeContext.java
                        TagFileProcessor.java
               jasper2/src/share/org/apache/jasper/servlet
                        JspServletWrapper.java
  Log:
  Store tag file .java and .class files in standard location
  ("/tagfiles/org/apache/jsp/"), regardless of the original tag file
  path, and add this standard location to the compilation classpath for
  JSP pages
  
  Revision  Changes    Path
  1.14      +44 -32    
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspCompilationContext.java
  
  Index: JspCompilationContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspCompilationContext.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- JspCompilationContext.java        1 Aug 2002 23:29:36 -0000       1.13
  +++ JspCompilationContext.java        3 Aug 2002 23:29:21 -0000       1.14
  @@ -115,16 +115,20 @@
       protected boolean reload = true;
       
       protected URLClassLoader jspLoader;
  -    protected URL [] outUrls = new URL[1];
  +    protected URL[] outUrls = new URL[1];
       protected Class servletClass;
   
       protected boolean isTagFile;
       protected TagInfo tagInfo;
   
       // jspURI _must_ be relative to the context
  -    public JspCompilationContext(String jspUri, boolean isErrPage, Options options,
  -                                 ServletContext context, JspServletWrapper jsw,
  +    public JspCompilationContext(String jspUri,
  +                              boolean isErrPage,
  +                              Options options,
  +                                 ServletContext context,
  +                              JspServletWrapper jsw,
                                    JspRuntimeContext rctxt) {
  +
           this.jspUri = canonicalURI(jspUri);
           this.isErrPage = isErrPage;
           this.options=options;
  @@ -146,9 +150,11 @@
           this.rctxt=rctxt;
       }
   
  -    public JspCompilationContext(String tagfile, TagInfo tagInfo, 
  +    public JspCompilationContext(String tagfile,
  +                              TagInfo tagInfo, 
                                    Options options,
  -                                 ServletContext context, JspServletWrapper jsw,
  +                                 ServletContext context,
  +                              JspServletWrapper jsw,
                                    JspRuntimeContext rctxt) {
   
           this(tagfile, false, options, context, jsw, rctxt);
  @@ -200,8 +206,8 @@
           return outputDir;
       }
   
  -    public void setOutputDir( String s ) {
  -        this.outputDir=s;
  +    public void setOutputDir(String s) {
  +        this.outputDir = s;
       }
   
       /**
  @@ -396,17 +402,23 @@
           if (jspPath != null) {
               return jspPath;
           }
  -        String dirName = getJspFile();
  -        int pos = dirName.lastIndexOf('/');
  -        if (pos > 0) {
  -            dirName = dirName.substring(0, pos + 1);
  -        } else {
  -            dirName = "";
  -        }
  -        jspPath = dirName + getServletClassName() + ".java";
  -        if (jspPath.startsWith("/")) {
  -            jspPath = jspPath.substring(1);
  -        }
  +
  +     if (isTagFile) {
  +         jspPath = "tagfiles/org/apache/jsp/" + tagInfo.getTagName() + ".java";
  +     } else {
  +         String dirName = getJspFile();
  +         int pos = dirName.lastIndexOf('/');
  +         if (pos > 0) {
  +             dirName = dirName.substring(0, pos + 1);
  +         } else {
  +             dirName = "";
  +         }
  +         jspPath = dirName + getServletClassName() + ".java";
  +         if (jspPath.startsWith("/")) {
  +             jspPath = jspPath.substring(1);
  +         }
  +     }
  +
           return jspPath;
       }
   
  @@ -508,7 +520,7 @@
       
       public void compile() throws JasperException, FileNotFoundException {
           createCompiler();
  -        if (jspCompiler.isOutDated()) {
  +     if (jspCompiler.isOutDated()) {
               try {
                   jspCompiler.compile();
                   reload = true;
  @@ -518,7 +530,7 @@
                   throw new JasperException(
                       Constants.getString("jsp.error.unable.compile"),ex);
               }
  -        }
  +     }
       }
   
       /** True if the servlet needs loading
  @@ -568,24 +580,24 @@
           return servletClass;
       }
   
  -    public void createOutdir() {
  +    public void createOutdir(String dirPath) {
           File outDirF = null;
           try {
               URL outURL = options.getScratchDir().toURL();
  -            String outURI = outURL.toString();
  -            if (outURI.endsWith("/")) {
  -                outURI = outURI 
  -                    + jspUri.substring(1,jspUri.lastIndexOf("/")+1);
  +            String outUri = outURL.toString();
  +            if (outUri.endsWith("/")) {
  +                outUri = outUri
  +                 + dirPath.substring(1, dirPath.lastIndexOf("/") + 1);
               } else {
  -                outURI = outURI 
  -                    + jspUri.substring(0,jspUri.lastIndexOf("/")+1);
  +                outUri = outUri
  +                 + dirPath.substring(0, dirPath.lastIndexOf("/") + 1);
               }
  -            outURL = new URL(outURI);
  +            outURL = new URL(outUri);
               outDirF = new File(outURL.getFile());
               if (!outDirF.exists()) {
                   outDirF.mkdirs();
               }
  -            this.setOutputDir(  outDirF.toString() + File.separator );
  +            this.outputDir = outDirF.toString() + File.separator;
               
               outUrls[0] = new URL(outDirF.toURL().toString() + File.separator);
           } catch (Exception e) {
  
  
  
  1.23      +4 -4      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java
  
  Index: Compiler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- Compiler.java     31 Jul 2002 21:42:27 -0000      1.22
  +++ Compiler.java     3 Aug 2002 23:29:21 -0000       1.23
  @@ -241,7 +241,7 @@
        // Collect page info
        Collector.collect(this, pageNodes);
   
  -     // Compile (if necessar) and load the tag files referenced in
  +     // Compile (if necessary) and load the tag files referenced in
        // this compilation unit.
        TagFileProcessor.loadTagFiles(this, pageNodes);
   
  
  
  
  1.61      +11 -8     
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java
  
  Index: Generator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
  retrieving revision 1.60
  retrieving revision 1.61
  diff -u -r1.60 -r1.61
  --- Generator.java    2 Aug 2002 21:13:33 -0000       1.60
  +++ Generator.java    3 Aug 2002 23:29:21 -0000       1.61
  @@ -2753,11 +2753,14 @@
   
        // Generate package declaration
        String className = tagInfo.getTagClassName();
  -     String pkgName = className.substring(0, className.lastIndexOf("."));
  -     out.printin("package ");
  -     out.print(pkgName);
  -     out.println(";");
  -     out.println();
  +     if (className.indexOf('.') != -1) {
  +         String pkgName
  +             = className.substring(0, className.lastIndexOf("."));
  +         out.printin("package ");
  +         out.print(pkgName);
  +         out.println(";");
  +         out.println();
  +     }
   
        // Generate class declaration
        out.printin("public class ");
  
  
  
  1.5       +6 -4      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspRuntimeContext.java
  
  Index: JspRuntimeContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspRuntimeContext.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- JspRuntimeContext.java    21 Jun 2002 17:11:32 -0000      1.4
  +++ JspRuntimeContext.java    3 Aug 2002 23:29:21 -0000       1.5
  @@ -352,6 +352,8 @@
               }
           }    
   
  +     cpath.append(options.getScratchDir() + "/tagfiles" + sep);
  +
           String cp = (String) context.getAttribute(Constants.SERVLET_CLASSPATH);
           if (cp == null || cp.equals("")) {
               cp = options.getClassPath();
  
  
  
  1.9       +8 -8      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TagFileProcessor.java
  
  Index: TagFileProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TagFileProcessor.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- TagFileProcessor.java     2 Aug 2002 19:30:02 -0000       1.8
  +++ TagFileProcessor.java     3 Aug 2002 23:29:21 -0000       1.9
  @@ -342,19 +342,19 @@
        * Compiles and loads a tagfile.
        */
       public static Class loadTagFile(JspCompilationContext ctxt,
  -                                 String tagFile, TagInfo tagInfo)
  +                                 String tagFilePath, TagInfo tagInfo)
        throws JasperException {
   
        JspRuntimeContext rctxt = ctxt.getRuntimeContext();
           JspServletWrapper wrapper =
  -             (JspServletWrapper) rctxt.getWrapper(tagFile);
  +             (JspServletWrapper) rctxt.getWrapper(tagFilePath);
        if (wrapper == null) {
            synchronized(rctxt) {
  -             wrapper = (JspServletWrapper) rctxt.getWrapper(tagFile);
  +             wrapper = (JspServletWrapper) rctxt.getWrapper(tagFilePath);
                if (wrapper == null) {
                    wrapper = new JspServletWrapper(ctxt.getServletContext(),
                                                    ctxt.getOptions(),
  -                                                 tagFile,
  +                                                 tagFilePath,
                                                       tagInfo,
                                                    ctxt.getRuntimeContext());
                }
  @@ -379,8 +379,8 @@
           public void visit(Node.CustomTag n) throws JasperException {
            TagFileInfo tagFileInfo = n.getTagFileInfo();
            if (tagFileInfo != null) {
  -             String tagFile = tagFileInfo.getPath();
  -             Class c = loadTagFile(ctxt, tagFile, n.getTagInfo());
  +             String tagFilePath = tagFileInfo.getPath();
  +             Class c = loadTagFile(ctxt, tagFilePath, n.getTagInfo());
                n.setTagHandlerClass(c);
            }
        }
  
  
  
  1.11      +30 -15    
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServletWrapper.java
  
  Index: JspServletWrapper.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServletWrapper.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- JspServletWrapper.java    1 Aug 2002 23:29:36 -0000       1.10
  +++ JspServletWrapper.java    3 Aug 2002 23:29:21 -0000       1.11
  @@ -113,6 +113,9 @@
       private ServletConfig config;
       private Options options;
   
  +    /*
  +     * JspServletWrapper for JSP pages.
  +     */
       JspServletWrapper(ServletConfig config, Options options, String jspUri,
                         boolean isErrorPage, JspRuntimeContext rctxt)
               throws JasperException {
  @@ -120,25 +123,37 @@
           this.config = config;
           this.options = options;
           this.jspUri = jspUri;
  -        ctxt = new JspCompilationContext( jspUri, isErrorPage,
  -                                          options,
  -                                          config.getServletContext(),
  -                                          this, rctxt);
  -        ctxt.createOutdir();
  +        ctxt = new JspCompilationContext(jspUri, isErrorPage, options,
  +                                      config.getServletContext(),
  +                                      this, rctxt);
  +        ctxt.createOutdir(jspUri);
       }
   
  +    /*
  +     * JspServletWrapper for tag files.
  +     */
       public JspServletWrapper(ServletContext servletContext, Options options,
  -                      String tagfile, TagInfo tagInfo, JspRuntimeContext rctxt)
  +                          String tagFilePath, TagInfo tagInfo,
  +                          JspRuntimeContext rctxt)
               throws JasperException {
   
           this.config = null;  // not used
           this.options = options;
  -        this.jspUri = tagfile;
  -        ctxt = new JspCompilationContext( tagfile, tagInfo,
  -                                          options,
  -                                          servletContext,
  -                                          this, rctxt);
  -        ctxt.createOutdir();
  +     this.jspUri = tagFilePath;
  +        ctxt = new JspCompilationContext(jspUri, tagInfo, options,
  +                                      servletContext, this, rctxt);
  +
  +     // Store tag file .java and .class files in standard location
  +     // (/tagfiles/org/apache/jsp/), regardless of the original tag file
  +     // path
  +     String standard = null;
  +     if (tagFilePath.indexOf('/') != -1) {
  +         standard = "/tagfiles/org/apache/jsp/"
  +             + tagFilePath.substring(tagFilePath.lastIndexOf("/") + 1);
  +     } else {
  +         standard = "/tagfiles/org/apache/jsp/" + tagFilePath;
  +     }
  +        ctxt.createOutdir(standard);
       }
   
       public JspCompilationContext getJspEngineContext() {
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to