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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to