luehe 2003/03/31 19:14:53 Modified: jasper2/src/share/org/apache/jasper JspCompilationContext.java jasper2/src/share/org/apache/jasper/compiler JspDocumentParser.java TagLibraryInfoImpl.java TldLocationsCache.java jasper2/src/share/org/apache/jasper/resources messages.properties messages_es.properties messages_fr.properties messages_ja.properties jasper2/src/share/org/apache/jasper/servlet JspServlet.java Log: - Fixed regression caused by fix to 15875 ("Automatic Recognition of Tag Library TLDs") - Expose any errors occurring during initialization of TLD locations cache Revision Changes Path 1.36 +10 -17 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.35 retrieving revision 1.36 diff -u -r1.35 -r1.36 --- JspCompilationContext.java 27 Feb 2003 22:51:38 -0000 1.35 +++ JspCompilationContext.java 1 Apr 2003 03:14:52 -0000 1.36 @@ -517,18 +517,13 @@ } /** - * Get the 'location' of the TLD associated with - * a given taglib 'uri'. + * Gets the 'location' of the TLD associated with the given taglib 'uri'. * - * @return An array of two Strings. The first one is - * real path to the TLD. If the path to the TLD points - * to a jar file, then the second string is the - * name of the entry for the TLD in the jar file. - * Returns null if the uri is not associated to - * a tag library 'exposed' in the web application. - * A tag library is 'exposed' either explicitely in - * web.xml or implicitely via the uri tag in the TLD - * of a taglib deployed in a jar file (WEB-INF/lib). + * @return An array of two Strings: The first element denotes the real + * path to the TLD. If the path to the TLD points to a jar file, then the + * second element denotes the name of the TLD entry in the jar file. + * Returns null if the given uri is not associated with any tag library + * 'exposed' in the web application. */ public String[] getTldLocation(String uri) throws JasperException { String[] location = @@ -554,7 +549,6 @@ removed++; } - public boolean isRemoved() { if (removed > 1 ) { return true; @@ -597,8 +591,7 @@ if (isTagFile()) { name = tagInfo.getTagClassName(); } else { - name = getServletPackageName() + "." + - getServletClassName(); + name = getServletPackageName() + "." + getServletClassName(); } servletClass = jspLoader.loadClass(name); } catch (ClassNotFoundException cex) { 1.51 +4 -5 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspDocumentParser.java Index: JspDocumentParser.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspDocumentParser.java,v retrieving revision 1.50 retrieving revision 1.51 diff -u -r1.50 -r1.51 --- JspDocumentParser.java 31 Mar 2003 19:15:34 -0000 1.50 +++ JspDocumentParser.java 1 Apr 2003 03:14:52 -0000 1.51 @@ -781,8 +781,7 @@ isPlainUri = true; } - TldLocationsCache cache = ctxt.getOptions().getTldLocationsCache(); - String[] location = cache.getLocation(uri); + String[] location = ctxt.getTldLocation(uri); if (location != null || !isPlainUri) { /* * If the uri value is a plain uri, a translation error must 1.37 +7 -6 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TagLibraryInfoImpl.java Index: TagLibraryInfoImpl.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TagLibraryInfoImpl.java,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- TagLibraryInfoImpl.java 26 Mar 2003 20:40:15 -0000 1.36 +++ TagLibraryInfoImpl.java 1 Apr 2003 03:14:52 -0000 1.37 @@ -167,8 +167,8 @@ boolean relativeURL = false; if (location == null) { - // The URI points to the TLD itself or to a jar - // file where the TLD is located + // The URI points to the TLD itself or to a jar file where the TLD + // is stored int uriType = TldLocationsCache.uriType(uri); if (uriType == TldLocationsCache.ABS_URI) { err.jspError("jsp.error.taglibDirective.absUriCannotBeResolved", @@ -232,7 +232,8 @@ } catch (Throwable t) {} } */ - throw new JasperException(ex); + err.jspError("jsp.error.tld.unable_to_read", location[0], + location[1], ex.toString()); } } } 1.16 +15 -9 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TldLocationsCache.java Index: TldLocationsCache.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TldLocationsCache.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- TldLocationsCache.java 31 Mar 2003 19:15:34 -0000 1.15 +++ TldLocationsCache.java 1 Apr 2003 03:14:52 -0000 1.16 @@ -127,7 +127,9 @@ public static final int NOROOT_REL_URI = 2; private static final String WEB_XML = "/WEB-INF/web.xml"; - + private static final String FILE_PROTOCOL = "file:"; + private static final String JAR_FILE_SUFFIX = ".jar"; + /** * The mapping of the 'global' tag library URI to the location (resource * path) of the TLD associated with that tag library. The location is @@ -204,7 +206,7 @@ } } - private void init() { + private void init() throws JasperException { if (initialized) return; try { processWebDotXml(); @@ -213,14 +215,15 @@ processTldsInGlobalJars(); initialized = true; } catch (Exception ex) { - log.error(Localizer.getMessage("jsp.error.internal.tldinit"), ex); + throw new JasperException(Localizer.getMessage("jsp.error.internal.tldinit", + ex.getMessage())); } } /* * Populates taglib map described in web.xml. */ - private void processWebDotXml() throws JasperException { + private void processWebDotXml() throws Exception { // Acquire an input stream to the web application deployment descriptor InputStream is = ctxt.getResourceAsStream(WEB_XML); @@ -235,7 +238,7 @@ // Parse the web application deployment descriptor TreeNode webtld = new ParserUtils().parseXMLDocument(WEB_XML, is); - // Allow taglib be an element of the root or jsp-config (JSP2.0) + // Allow taglib to be an element of the root or jsp-config (JSP2.0) TreeNode jspConfig = webtld.findChild("jsp-config"); if (jspConfig != null) { webtld = jspConfig; @@ -260,9 +263,11 @@ if (uriType(tagLoc) == NOROOT_REL_URI) tagLoc = "/WEB-INF/" + tagLoc; String tagLoc2 = null; - if (tagLoc.endsWith(".jar")) + if (tagLoc.endsWith(JAR_FILE_SUFFIX)) { + tagLoc = ctxt.getResource(tagLoc).toString(); tagLoc2 = "META-INF/taglib.tld"; - mappings.put(tagUri, new String[] {tagLoc, tagLoc2}); + } + mappings.put(tagUri, new String[] { tagLoc, tagLoc2 }); } } @@ -277,7 +282,7 @@ Iterator it = libSet.iterator(); while (it.hasNext()) { String resourcePath = (String) it.next(); - if (resourcePath.endsWith(".jar")) { + if (resourcePath.endsWith(JAR_FILE_SUFFIX)) { URL url = ctxt.getResource(resourcePath); if (url == null) return; @@ -440,7 +445,8 @@ processTldsInJar((JarURLConnection) conn); } else { String urlStr = urls[i].toString(); - if (urlStr.startsWith("file:") && urlStr.endsWith(".jar")) { + if (urlStr.startsWith(FILE_PROTOCOL) + && urlStr.endsWith(JAR_FILE_SUFFIX)) { URL jarURL = new URL("jar:" + urlStr + "!/"); processTldsInJar((JarURLConnection) jarURL.openConnection()); 1.111 +3 -3 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages.properties Index: messages.properties =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages.properties,v retrieving revision 1.110 retrieving revision 1.111 diff -u -r1.110 -r1.111 --- messages.properties 27 Mar 2003 22:51:45 -0000 1.110 +++ messages.properties 1 Apr 2003 03:14:53 -0000 1.111 @@ -168,7 +168,7 @@ jsp.message.template_text=template text jsp.error.missing_attribute=According to the TLD attribute {0} is mandatory for tag {1} jsp.error.bad_attribute=Attribute {0} invalid for tag {1} according to TLD -jsp.error.tld_not_found=Could not locate TLD {0} +jsp.error.tld.unable_to_read=Unable to read TLD \"{1}\" from JAR file \"{0}\": {2} jsp.error.webxml_not_found=Could not locate web.xml jsp.cmd_line.usage=Usage: jsptoservlet [-dd <path/to/outputDirectory>] [-keepgenerated] \ <.jsp files> @@ -255,7 +255,7 @@ jsp.error.parse.xml=XML parsing error on file {0} jsp.error.parse.xml.line=XML parsing error on file {0}: (line {1}, col {2}) jsp.error.parse.xml.scripting.invalid.body=Body of {0} element must not contain any XML elements -jsp.error.internal.tldinit=Exception initializing TldLocationsCache +jsp.error.internal.tldinit=Unable to initialize TldLocationsCache: {0} jsp.error.internal.filenotfound=Internal Error: File {0} not found jsp.error.internal.evaluator_not_found=Internal error: unable to load expression evaluator jsp.error.parse.xml.invalidPublicId=Invalid PUBLIC ID: {0} 1.37 +1 -2 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_es.properties Index: messages_es.properties =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_es.properties,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- messages_es.properties 28 Feb 2003 00:12:41 -0000 1.36 +++ messages_es.properties 1 Apr 2003 03:14:53 -0000 1.37 @@ -126,7 +126,6 @@ jsp.message.compiling_with=Compilado con: {0} jsp.error.missing_attribute=De acuerdo el TLD el atributo {0} es obligatorio para el tag {1} jsp.error.bad_attribute=atributo {0} no es valido de acuerdo con el TLD especificado -jsp.error.tld_not_found=No puedo localizar el TLD {0} jsp.error.webxml_not_found=No puedo localizar web.xml jsp.cmd_line.usage=Uso: jsptoservlet [-dd <ruta/a/DirectorioSalida>] [-keepgenerated] <Archivos .jsp> jsp.message.cp_is=classpath {0} es: {1} 1.22 +2 -3 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_fr.properties Index: messages_fr.properties =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_fr.properties,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- messages_fr.properties 27 Mar 2003 00:16:39 -0000 1.21 +++ messages_fr.properties 1 Apr 2003 03:14:53 -0000 1.22 @@ -150,7 +150,6 @@ jsp.message.template_text=texte template jsp.error.missing_attribute=D''après le TLD l''attribut {0} est obligatoire pour le tag {1} jsp.error.bad_attribute=L''attribut {0} est incorrect pour le tag {1} d''après la TLD indiquée -sjsp.error.tld_not_found=Impossible de localiser la TLD {0} jsp.error.webxml_not_found=Impossible de localiser le fichier web.xml jsp.cmd_line.usage=Usage: jsptoservlet [-dd <path/to/outputDirectory>] [-keepgenerated] \ <.jsp files> @@ -235,7 +234,7 @@ jsp.error.parse.xml=Erreur d''évaluation XML sur le fichier {0} jsp.error.parse.xml.line=Erreur d''évaluation XML sur le fichier {0}: (ligne {1}, col {2}) jsp.error.parse.xml.scripting.invalid.body=Le corps de l''élément {0} ne doit contenir aucun éléments XML -jsp.error.internal.tldinit=Exception lors de l'initialisation de TldLocationsCache +jsp.error.internal.tldinit=Exception lors de l'initialisation de TldLocationsCache: {0} jsp.error.internal.filenotfound=Erreur interne: Fichier {0} introuvable jsp.error.internal.evaluator_not_found=Erreur interne: Impossible de charger l''évaluateur d''expression jsp.error.parse.xml.invalidPublicId=PUBLIC ID invalide: {0} 1.38 +2 -3 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_ja.properties Index: messages_ja.properties =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_ja.properties,v retrieving revision 1.37 retrieving revision 1.38 diff -u -r1.37 -r1.38 --- messages_ja.properties 4 Mar 2003 17:32:39 -0000 1.37 +++ messages_ja.properties 1 Apr 2003 03:14:53 -0000 1.38 @@ -164,7 +164,6 @@ jsp.message.template_text=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30c6\u30ad\u30b9\u30c8 jsp.error.missing_attribute=TLD\u306b\u3088\u308b\u3068\u3001\u5c5e\u6027 {0} \u306f\u30bf\u30b0 {1} \u306b\u306f\u5fc5\u9808\u3067\u3059 jsp.error.bad_attribute=TLD\u306b\u3088\u308b\u3068\u3001\u30bf\u30b0 {1} \u306e\u5c5e\u6027 {0} \u306f\u7121\u52b9\u3067\u3059 -jsp.error.tld_not_found=TLD {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 jsp.error.webxml_not_found=web.xml\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 jsp.cmd_line.usage=\u4f7f\u7528\u6cd5: [-dd <\u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30b9>] [-keepgenerated] \ <.jsp\u30d5\u30a1\u30a4\u30eb\u7fa4> @@ -250,7 +249,7 @@ jsp.error.parse.xml=\u30d5\u30a1\u30a4\u30eb{0}\u306eXML\u89e3\u6790\u30a8\u30e9\u30fc jsp.error.parse.xml.line=\u30d5\u30a1\u30a4\u30eb{0}\u306eXML\u89e3\u6790\u30a8\u30e9\u30fc: (\u884c {1}, \u5217 {2}) jsp.error.parse.xml.scripting.invalid.body={0} \u8981\u7d20\u306e\u30dc\u30c7\u30a3\u306fXML\u8981\u7d20\u3092\u542b\u3093\u3067\u306f\u3044\u3051\u307e\u305b\u3093 -jsp.error.internal.tldinit=TldLocationsCache\u3092\u521d\u671f\u5316\u4e2d\u306e\u4f8b\u5916\u3067\u3059 +jsp.error.internal.tldinit=TldLocationsCache\u3092\u521d\u671f\u5316\u4e2d\u306e\u4f8b\u5916\u3067\u3059: {0} jsp.error.internal.filenotfound=\u5185\u90e8\u30a8\u30e9\u30fc: \u30d5\u30a1\u30a4\u30eb {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 jsp.error.internal.evaluator_not_found=\u5185\u90e8\u30a8\u30e9\u30fc: \u5f0f\u691c\u8a3c\u5668\u3092\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093 jsp.error.parse.xml.invalidPublicId=\u7121\u52b9\u306aPUBLIC ID: {0} 1.25 +4 -4 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServlet.java Index: JspServlet.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServlet.java,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- JspServlet.java 29 Mar 2003 02:15:18 -0000 1.24 +++ JspServlet.java 1 Apr 2003 03:14:53 -0000 1.25 @@ -126,7 +126,7 @@ if (log.isDebugEnabled()) { log.debug(Localizer.getMessage("jsp.message.scratch.dir.is", - options.getScratchDir().toString())); + options.getScratchDir().toString())); log.debug(Localizer.getMessage("jsp.message.dont.modify.servlets")); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]