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: [email protected]
For additional commands, e-mail: [email protected]