craigmcc    01/09/13 22:02:15

  Modified:    jasper/src/share/org/apache/jasper JspC.java
  Log:
  Support tag library descriptors without throwing NPEs.
  
  PR:  Bugzilla #3529 and #3235
  Submitted by: Based on patch submitted by Peter RoBbach ([EMAIL PROTECTED])
  
  Revision  Changes    Path
  1.11      +35 -8     jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspC.java
  
  Index: JspC.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspC.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- JspC.java 2001/09/07 18:52:14     1.10
  +++ JspC.java 2001/09/14 05:02:15     1.11
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspC.java,v 1.10 
2001/09/07 18:52:14 craigmcc Exp $
  - * $Revision: 1.10 $
  - * $Date: 2001/09/07 18:52:14 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspC.java,v 1.11 
2001/09/14 05:02:15 craigmcc Exp $
  + * $Revision: 1.11 $
  + * $Date: 2001/09/14 05:02:15 $
    *
    * ====================================================================
    * 
  @@ -73,6 +73,7 @@
   import org.apache.jasper.compiler.TldLocationsCache;
   
   import org.apache.jasper.servlet.JasperLoader;
  +import org.apache.jasper.servlet.JspCServletContext;
   
   import org.apache.jasper.logging.Logger;
   import org.apache.jasper.logging.JasperLogger;
  @@ -351,7 +352,7 @@
                   File classes = new File(clctxt.getRealPath("/WEB-INF/classes"));
                   try {
                        if (classes.exists()) {
  -                         urls.add(classes.toURL());
  +                         urls.add(classes.getCanonicalFile().toURL());
                       }
                   } catch (IOException ioe) {
                       // failing a toCanonicalPath on a file that
  @@ -367,7 +368,7 @@
                            File libFile = new File(lib.toString()
                                       + File.separator
                                       + libs[i]);
  -                         urls.add(libFile.toURL());
  +                         urls.add(libFile.getCanonicalFile().toURL());
                           } catch (IOException ioe) {
                               // failing a toCanonicalPath on a file that
                               // exists() should be a JVM regression test,
  @@ -377,9 +378,25 @@
                       }
                   }
               }
  -         URLClassLoader loader = new URLClassLoader(
  -             (URL[])(urls.toArray(new URL[urls.size()])),null);
  -         clctxt.setClassLoader(loader);
  +            StringTokenizer tokenizer = new StringTokenizer
  +                (clctxt.getClassPath(), File.pathSeparator);
  +            while (tokenizer.hasMoreTokens()) {
  +                String path = tokenizer.nextToken();
  +                try {
  +                    File libFile = new File(path);
  +                    urls.add(libFile.toURL());
  +                } catch (IOException ioe) {
  +                    // Failing a toCanonicalPath on a file that
  +                    // exists() should be a JVM regression test,
  +                    // therefore we have permission to freak uot
  +                    throw new RuntimeException(ioe.toString());
  +                }
  +            }
  +            urls.add(new File
  +                     (clctxt.getRealPath("/")).getCanonicalFile().toURL());
  +            URLClassLoader loader = new URLClassLoader
  +                ((URL[])(urls.toArray(new URL[urls.size()])));
  +            clctxt.setClassLoader(loader);
               CommandLineCompiler clc = new CommandLineCompiler(clctxt);
   
               clc.compile();
  @@ -628,6 +645,16 @@
                       mappingout = null;
                   }
   
  +                try {
  +                    JspCServletContext context =
  +                        new JspCServletContext
  +                        (new PrintWriter(System.out),
  +                         new URL("file:" + ubase.replace('\\','/') + "/"));
  +                    tldLocationsCache = new TldLocationsCache(context);
  +                } catch (MalformedURLException me) {
  +                    System.out.println("**" + me);
  +                }
  +                                                                       
                   Enumeration e = pages.elements();
                   while (e.hasMoreElements())
                   {
  
  
  

Reply via email to