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

Reply via email to