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())
{