Author: markt Date: Wed Nov 27 15:00:05 2013 New Revision: 1546057 URL: http://svn.apache.org/r1546057 Log: Refactor to remove the base field from LocalResolver. Populate the LocalResolver with the full URLs to the well-known resources.
Modified: tomcat/trunk/java/org/apache/tomcat/util/descriptor/DigesterFactory.java tomcat/trunk/java/org/apache/tomcat/util/descriptor/LocalResolver.java tomcat/trunk/test/org/apache/tomcat/util/descriptor/TestLocalResolver.java Modified: tomcat/trunk/java/org/apache/tomcat/util/descriptor/DigesterFactory.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/DigesterFactory.java?rev=1546057&r1=1546056&r2=1546057&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/descriptor/DigesterFactory.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/DigesterFactory.java Wed Nov 27 15:00:05 2013 @@ -19,10 +19,11 @@ package org.apache.tomcat.util.descripto import java.util.HashMap; import java.util.Map; +import javax.servlet.ServletContext; + 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. @@ -32,7 +33,7 @@ public class DigesterFactory { /** * A resolver for the resources packaged in servlet-api.jar */ - public static final LocalResolver SERVLET_RESOLVER; + public static final LocalResolver SERVLET_API_RESOLVER; static { @@ -40,53 +41,64 @@ public class DigesterFactory { Map<String, String> systemIds = new HashMap<>(); // W3C - publicIds.put(XmlIdentifiers.XSD_10_PUBLIC, - "/javax/servlet/resources/XMLSchema.dtd"); - publicIds.put(XmlIdentifiers.DATATYPES_PUBLIC, - "/javax/servlet/resources/datatypes.dtd"); - systemIds.put(XmlIdentifiers.XML_2001_XSD, - "/javax/servlet/resources/xml.xsd"); + publicIds.put(XmlIdentifiers.XSD_10_PUBLIC, idFor("XMLSchema.dtd")); + publicIds.put(XmlIdentifiers.DATATYPES_PUBLIC, idFor("datatypes.dtd")); + systemIds.put(XmlIdentifiers.XML_2001_XSD, idFor("xml.xsd")); // from J2EE 1.2 - publicIds.put(XmlIdentifiers.WEB_22_PUBLIC, - "/javax/servlet/resources/web-app_2_2.dtd"); - publicIds.put(XmlIdentifiers.TLD_11_PUBLIC, - "/javax/servlet/resources/web-jsptaglibrary_1_1.dtd"); + publicIds.put(XmlIdentifiers.WEB_22_PUBLIC, idFor("web-app_2_2.dtd")); + publicIds.put(XmlIdentifiers.TLD_11_PUBLIC, idFor("web-jsptaglibrary_1_1.dtd")); // from J2EE 1.3 - publicIds.put(XmlIdentifiers.WEB_23_PUBLIC, - "/javax/servlet/resources/web-app_2_3.dtd"); - publicIds.put(XmlIdentifiers.TLD_12_PUBLIC, - "/javax/servlet/resources/web-jsptaglibrary_1_2.dtd"); + publicIds.put(XmlIdentifiers.WEB_23_PUBLIC, idFor("web-app_2_3.dtd")); + publicIds.put(XmlIdentifiers.TLD_12_PUBLIC, idFor("web-jsptaglibrary_1_2.dtd")); // from J2EE 1.4 + systemIds.put("http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd", + idFor("j2ee_web_services_1_1.xsd")); systemIds.put("http://www.ibm.com/webservices/xsd/j2ee_web_services_client_1_1.xsd", - "/javax/servlet/resources/j2ee_web_services_client_1_1.xsd"); - systemIds.put(XmlIdentifiers.WEB_24_XSD, - "/javax/servlet/resources/web-app_2_4.xsd"); - systemIds.put(XmlIdentifiers.TLD_20_XSD, - "/javax/servlet/resources/web-jsptaglibrary_2_0.xsd"); + idFor("j2ee_web_services_client_1_1.xsd")); + systemIds.put(XmlIdentifiers.WEB_24_XSD, idFor("web-app_2_4.xsd")); + systemIds.put(XmlIdentifiers.TLD_20_XSD, idFor("web-jsptaglibrary_2_0.xsd")); + addSelf(systemIds, "j2ee_1_4.xsd"); + addSelf(systemIds, "jsp_2_0.xsd"); // from JavaEE 5 - systemIds.put(XmlIdentifiers.WEB_25_XSD, - "/javax/servlet/resources/web-app_2_5.xsd"); - systemIds.put(XmlIdentifiers.TLD_21_XSD, - "/javax/servlet/resources/web-jsptaglibrary_2_1.xsd"); + systemIds.put(XmlIdentifiers.WEB_25_XSD, idFor("web-app_2_5.xsd")); + systemIds.put(XmlIdentifiers.TLD_21_XSD, idFor("web-jsptaglibrary_2_1.xsd")); + addSelf(systemIds, "javaee_5.xsd"); + addSelf(systemIds, "jsp_2_1.xsd"); + addSelf(systemIds, "javaee_web_services_1_2.xsd"); + addSelf(systemIds, "javaee_web_services_client_1_2.xsd"); // from JavaEE 6 - systemIds.put(XmlIdentifiers.WEB_30_XSD, - "/javax/servlet/resources/web-app_3_0.xsd"); - systemIds.put(XmlIdentifiers.WEB_FRAGMENT_30_XSD, - "/javax/servlet/resources/web-fragment_3_0.xsd"); + systemIds.put(XmlIdentifiers.WEB_30_XSD, idFor("web-app_3_0.xsd")); + systemIds.put(XmlIdentifiers.WEB_FRAGMENT_30_XSD, idFor("web-fragment_3_0.xsd")); + addSelf(systemIds, "web-common_3_0.xsd"); + addSelf(systemIds, "javaee_6.xsd"); + addSelf(systemIds, "jsp_2_2.xsd"); + addSelf(systemIds, "javaee_web_services_1_3.xsd"); + addSelf(systemIds, "javaee_web_services_client_1_3.xsd"); // from JavaEE 7 - systemIds.put(XmlIdentifiers.WEB_31_XSD, - "/javax/servlet/resources/web-app_3_1.xsd"); - systemIds.put(XmlIdentifiers.WEB_FRAGMENT_31_XSD, - "/javax/servlet/resources/web-fragment_3_1.xsd"); + systemIds.put(XmlIdentifiers.WEB_31_XSD, idFor("web-app_3_1.xsd")); + systemIds.put(XmlIdentifiers.WEB_FRAGMENT_31_XSD, idFor("web-fragment_3_1.xsd")); + addSelf(systemIds, "web-common_3_1.xsd"); + addSelf(systemIds, "javaee_7.xsd"); + addSelf(systemIds, "jsp_2_3.xsd"); + addSelf(systemIds, "javaee_web_services_1_4.xsd"); + addSelf(systemIds, "javaee_web_services_client_1_4.xsd"); + + SERVLET_API_RESOLVER = new LocalResolver(publicIds, systemIds); + } + + private static void addSelf(Map<String, String> ids, String id) { + String systemId = idFor(id); + ids.put(systemId, systemId); + } - SERVLET_RESOLVER = - new LocalResolver(DigesterFactory.class, publicIds, systemIds); + private static String idFor(String url) { + return ServletContext.class.getResource("resources/" + url).toExternalForm(); } @@ -103,7 +115,7 @@ public class DigesterFactory { digester.setNamespaceAware(xmlNamespaceAware); digester.setValidating(xmlValidation); digester.setUseContextClassLoader(true); - digester.setEntityResolver(SERVLET_RESOLVER); + digester.setEntityResolver(SERVLET_API_RESOLVER); if ( rule != null ) { digester.addRuleSet(rule); } Modified: tomcat/trunk/java/org/apache/tomcat/util/descriptor/LocalResolver.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/LocalResolver.java?rev=1546057&r1=1546056&r2=1546057&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/descriptor/LocalResolver.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/LocalResolver.java Wed Nov 27 15:00:05 2013 @@ -32,7 +32,6 @@ import org.xml.sax.ext.EntityResolver2; */ public class LocalResolver implements EntityResolver2 { - private final Class<?> base; private final Map<String,String> publicIds; private final Map<String,String> systemIds; @@ -40,16 +39,13 @@ public class LocalResolver implements En /** * Constructor providing mappings of public and system identifiers to local * resources. Each map contains a mapping from a well-known identifier to a - * resource path that will be further resolved using the base Class using - * Class#getResource(String). + * URL for a local resource path. * - * @param base the class to use to locate local copies * @param publicIds mapping of public identifiers to local resources * @param systemIds mapping of system identifiers to local resources */ - public LocalResolver(Class<?> base, Map<String,String> publicIds, + public LocalResolver(Map<String,String> publicIds, Map<String,String> systemIds) { - this.base = base; this.publicIds = publicIds; this.systemIds = systemIds; } @@ -71,10 +67,6 @@ public class LocalResolver implements En return null; } - URL url = base.getResource(resolved); - if (url != null) { - resolved = url.toExternalForm(); - } InputSource is = new InputSource(resolved); is.setPublicId(publicId); return is; Modified: tomcat/trunk/test/org/apache/tomcat/util/descriptor/TestLocalResolver.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/descriptor/TestLocalResolver.java?rev=1546057&r1=1546056&r2=1546057&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/tomcat/util/descriptor/TestLocalResolver.java (original) +++ tomcat/trunk/test/org/apache/tomcat/util/descriptor/TestLocalResolver.java Wed Nov 27 15:00:05 2013 @@ -34,24 +34,23 @@ public class TestLocalResolver { private final Map<String, String> publicIds = new HashMap<>(); private final Map<String, String> systemIds = new HashMap<>(); - private LocalResolver resolver = - new LocalResolver(ServletContext.class, publicIds, systemIds); + private LocalResolver resolver = new LocalResolver(publicIds, systemIds); private String WEB_22_LOCAL; private String WEB_31_LOCAL; private String WEBCOMMON_31_LOCAL; @Before public void init() { - publicIds.put(XmlIdentifiers.WEB_22_PUBLIC, - "/javax/servlet/resources/web-app_2_2.dtd"); - systemIds.put(XmlIdentifiers.WEB_31_XSD, - "/javax/servlet/resources/web-app_3_1.xsd"); - WEB_22_LOCAL = getClass().getResource( - "/javax/servlet/resources/web-app_2_2.dtd").toExternalForm(); - WEB_31_LOCAL = getClass().getResource( - "/javax/servlet/resources/web-app_3_1.xsd").toExternalForm(); - WEBCOMMON_31_LOCAL = getClass().getResource( - "/javax/servlet/resources/web-common_3_1.xsd").toExternalForm(); + WEB_22_LOCAL = urlFor("resources/web-app_2_2.dtd"); + WEB_31_LOCAL = urlFor("resources/web-app_3_1.xsd"); + WEBCOMMON_31_LOCAL = urlFor("resources/web-common_3_1.xsd"); + publicIds.put(XmlIdentifiers.WEB_22_PUBLIC, WEB_22_LOCAL); + systemIds.put(XmlIdentifiers.WEB_31_XSD, WEB_31_LOCAL); + systemIds.put(WEBCOMMON_31_LOCAL, WEBCOMMON_31_LOCAL); + } + + public String urlFor(String id) { + return ServletContext.class.getResource(id).toExternalForm(); } @Test --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org