Author: markt
Date: Tue Jul 9 09:21:40 2013
New Revision: 1501154
URL: http://svn.apache.org/r1501154
Log:
Switch to using new LocalResolver.
Based on a patch by Jeremy Boynes.
Removed:
tomcat/trunk/java/org/apache/catalina/util/SchemaResolver.java
Modified:
tomcat/trunk/java/org/apache/catalina/startup/DigesterFactory.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/catalina/startup/DigesterFactory.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/DigesterFactory.java?rev=1501154&r1=1501153&r2=1501154&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/DigesterFactory.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/startup/DigesterFactory.java Tue Jul
9 09:21:40 2013
@@ -14,28 +14,89 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-
package org.apache.catalina.startup;
-import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
-import org.apache.catalina.util.SchemaResolver;
-import org.apache.juli.logging.Log;
-import org.apache.juli.logging.LogFactory;
+import javax.servlet.Servlet;
+
+import org.apache.tomcat.util.descriptor.LocalResolver;
+import org.apache.tomcat.util.descriptor.XmlIdentifiers;
import org.apache.tomcat.util.digester.Digester;
import org.apache.tomcat.util.digester.RuleSet;
+
/**
- * Wrapper class around the Digester that hide Digester's initialization
details
- *
- * @author Jean-Francois Arcand
+ * Wrapper class around the Digester that hide Digester's initialization
+ * details.
*/
public class DigesterFactory {
+
/**
- * The log.
+ * A resolver for the resources packaged in servlet-api.jar
*/
- private static final Log log = LogFactory.getLog(DigesterFactory.class);
+ public static final LocalResolver SERVLET_RESOLVER;
+
+
+ static {
+ Map<String, String> publicIds = new HashMap<>();
+ Map<String, String> systemIds = new HashMap<>();
+
+ // W3C
+ publicIds.put(XmlIdentifiers.XSD_10_PUBLIC,
+ urlFor("/javax/servlet/resources/XMLSchema.dtd"));
+ publicIds.put(XmlIdentifiers.DATATYPES_PUBLIC,
+ urlFor("/javax/servlet/resources/datatypes.dtd"));
+ systemIds.put(XmlIdentifiers.XML_2001_XSD,
+ urlFor("/javax/servlet/resources/xml.xsd"));
+
+ // from J2EE 1.2
+ publicIds.put(XmlIdentifiers.WEB_22_PUBLIC,
+ urlFor("/javax/servlet/resources/web-app_2_2.dtd"));
+ publicIds.put(XmlIdentifiers.TLD_11_PUBLIC,
+ urlFor("/javax/servlet/resources/web-jsptaglibrary_1_1.dtd"));
+
+ // from J2EE 1.3
+ publicIds.put(XmlIdentifiers.WEB_23_PUBLIC,
+ urlFor("/javax/servlet/resources/web-app_2_3.dtd"));
+ publicIds.put(XmlIdentifiers.TLD_12_PUBLIC,
+ urlFor("/javax/servlet/resources/web-jsptaglibrary_1_2.dtd"));
+
+ // from J2EE 1.4
+
systemIds.put("http://www.ibm.com/webservices/xsd/j2ee_web_services_client_1_1.xsd",
+
urlFor("/javax/servlet/resources/j2ee_web_services_client_1_1.xsd"));
+ systemIds.put(XmlIdentifiers.WEB_24_XSD,
+ urlFor("/javax/servlet/resources/web-app_2_4.xsd"));
+ systemIds.put(XmlIdentifiers.TLD_20_XSD,
+ urlFor("/javax/servlet/resources/web-jsptaglibrary_2_0.xsd"));
+
+ // from JavaEE 5
+ systemIds.put(XmlIdentifiers.WEB_25_XSD,
+ urlFor("/javax/servlet/resources/web-app_2_5.xsd"));
+ systemIds.put(XmlIdentifiers.TLD_21_XSD,
+ urlFor("/javax/servlet/resources/web-jsptaglibrary_2_1.xsd"));
+
+ // from JavaEE 6
+ systemIds.put(XmlIdentifiers.WEB_30_XSD,
+ urlFor("/javax/servlet/resources/web-app_3_0.xsd"));
+ systemIds.put(XmlIdentifiers.WEB_FRAGMENT_30_XSD,
+ urlFor("/javax/servlet/resources/web-fragment_3_0.xsd"));
+
+ // from JavaEE 7
+ systemIds.put(XmlIdentifiers.WEB_31_XSD,
+ urlFor("/javax/servlet/resources/web-app_3_1.xsd"));
+ systemIds.put(XmlIdentifiers.WEB_FRAGMENT_31_XSD,
+ urlFor("/javax/servlet/resources/web-fragment_3_1.xsd"));
+
+ SERVLET_RESOLVER =
+ new LocalResolver(Servlet.class, publicIds, systemIds);
+ }
+
+
+ private static String urlFor(String file) {
+ return DigesterFactory.class.getResource(file).toExternalForm();
+ }
/**
@@ -51,175 +112,11 @@ public class DigesterFactory {
digester.setNamespaceAware(xmlNamespaceAware);
digester.setValidating(xmlValidation);
digester.setUseContextClassLoader(true);
-
- SchemaResolver schemaResolver = new SchemaResolver(digester);
- registerLocalSchema(schemaResolver);
-
- digester.setEntityResolver(schemaResolver);
+ digester.setEntityResolver(SERVLET_RESOLVER);
if ( rule != null ) {
digester.addRuleSet(rule);
}
return (digester);
}
-
-
- /**
- * Utilities used to force the parser to use local schema, when available,
- * instead of the <code>schemaLocation</code> XML element.
- */
- protected static void registerLocalSchema(SchemaResolver schemaResolver){
- // J2EE
- register(Constants.J2eeSchemaResourcePath_14,
- Constants.J2eeSchemaPublicId_14,
- schemaResolver);
-
- register(Constants.JavaeeSchemaResourcePath_5,
- Constants.JavaeeSchemaPublicId_5,
- schemaResolver);
-
- register(Constants.JavaeeSchemaResourcePath_6,
- Constants.JavaeeSchemaPublicId_6,
- schemaResolver);
-
- register(Constants.JavaeeSchemaResourcePath_7,
- Constants.JavaeeSchemaPublicId_7,
- schemaResolver);
-
- // W3C
- register(Constants.W3cSchemaResourcePath_10,
- Constants.W3cSchemaPublicId_10,
- schemaResolver);
-
- register(Constants.W3cSchemaDTDResourcePath_10,
- Constants.W3cSchemaDTDPublicId_10,
- schemaResolver);
-
- register(Constants.W3cDatatypesDTDResourcePath_10,
- Constants.W3cDatatypesDTDPublicId_10,
- schemaResolver);
-
- // JSP
- register(Constants.JspSchemaResourcePath_20,
- Constants.JspSchemaPublicId_20,
- schemaResolver);
-
- register(Constants.JspSchemaResourcePath_21,
- Constants.JspSchemaPublicId_21,
- schemaResolver);
-
- register(Constants.JspSchemaResourcePath_22,
- Constants.JspSchemaPublicId_22,
- schemaResolver);
-
- register(Constants.JspSchemaResourcePath_23,
- Constants.JspSchemaPublicId_23,
- schemaResolver);
-
- // TLD
- register(Constants.TldDtdResourcePath_11,
- Constants.TldDtdPublicId_11,
- schemaResolver);
-
- register(Constants.TldDtdResourcePath_12,
- Constants.TldDtdPublicId_12,
- schemaResolver);
-
- register(Constants.TldSchemaResourcePath_20,
- Constants.TldSchemaPublicId_20,
- schemaResolver);
-
- register(Constants.TldSchemaResourcePath_21,
- Constants.TldSchemaPublicId_21,
- schemaResolver);
-
- // web.xml
- register(Constants.WebDtdResourcePath_22,
- Constants.WebDtdPublicId_22,
- schemaResolver);
-
- register(Constants.WebDtdResourcePath_23,
- Constants.WebDtdPublicId_23,
- schemaResolver);
-
- register(Constants.WebSchemaResourcePath_24,
- Constants.WebSchemaPublicId_24,
- schemaResolver);
-
- register(Constants.WebSchemaResourcePath_25,
- Constants.WebSchemaPublicId_25,
- schemaResolver);
-
- register(Constants.WebSchemaResourcePath_30,
- Constants.WebSchemaPublicId_30,
- schemaResolver);
-
- register(Constants.WebCommonSchemaResourcePath_30,
- Constants.WebCommonSchemaPublicId_30,
- schemaResolver);
-
- register(Constants.WebFragmentSchemaResourcePath_30,
- Constants.WebFragmentSchemaPublicId_30,
- schemaResolver);
-
- register(Constants.WebSchemaResourcePath_31,
- Constants.WebSchemaPublicId_31,
- schemaResolver);
-
- register(Constants.WebCommonSchemaResourcePath_31,
- Constants.WebCommonSchemaPublicId_31,
- schemaResolver);
-
- register(Constants.WebFragmentSchemaResourcePath_31,
- Constants.WebFragmentSchemaPublicId_31,
- schemaResolver);
-
- // Web Service
- register(Constants.J2eeWebServiceSchemaResourcePath_11,
- Constants.J2eeWebServiceSchemaPublicId_11,
- schemaResolver);
-
- register(Constants.J2eeWebServiceClientSchemaResourcePath_11,
- Constants.J2eeWebServiceClientSchemaPublicId_11,
- schemaResolver);
-
- register(Constants.JavaeeWebServiceSchemaResourcePath_12,
- Constants.JavaeeWebServiceSchemaPublicId_12,
- schemaResolver);
-
- register(Constants.JavaeeWebServiceClientSchemaResourcePath_12,
- Constants.JavaeeWebServiceClientSchemaPublicId_12,
- schemaResolver);
-
- register(Constants.JavaeeWebServiceSchemaResourcePath_13,
- Constants.JavaeeWebServiceSchemaPublicId_13,
- schemaResolver);
-
- register(Constants.JavaeeWebServiceClientSchemaResourcePath_13,
- Constants.JavaeeWebServiceClientSchemaPublicId_13,
- schemaResolver);
-
- register(Constants.JavaeeWebServiceSchemaResourcePath_14,
- Constants.JavaeeWebServiceSchemaPublicId_14,
- schemaResolver);
-
- register(Constants.JavaeeWebServiceClientSchemaResourcePath_14,
- Constants.JavaeeWebServiceClientSchemaPublicId_14,
- schemaResolver);
- }
-
-
- /**
- * Load the resource and add it to the resolver.
- */
- protected static void register(String resourceURL, String resourcePublicId,
- SchemaResolver schemaResolver){
- URL url = DigesterFactory.class.getResource(resourceURL);
-
- if(url == null) {
- log.warn("Could not get url for " + resourceURL);
- } else {
- schemaResolver.register(resourcePublicId , url.toString() );
- }
- }
}
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1501154&r1=1501153&r2=1501154&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Tue Jul 9 09:21:40 2013
@@ -134,6 +134,16 @@
<bug>55101</bug>: Make BASIC authentication more tolerant of
whitespace.
Patch provided by Brian Burch. (markt)
</fix>
+ <fix>
+ <bug>55166</bug>: Move JSP descriptor and tag library descriptor
schemas
+ to servlet-api.jar to enable relative references between the schemas to
+ be correctly resolved. (markt)
+ </fix>
+ <scode>
+ Refactor the descriptor parsing code into a separate module that can be
+ used by both Catalina and Jasper. Includes patches provided by Jeremy
+ Boynes. (violetagg/markt)
+ </scode>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]