remm        02/02/02 04:57:43

  Modified:    catalina/src/share/org/apache/catalina/loader
                        WebappClassLoader.java
  Log:
  - Modify the way class triggers work to be less restrictive, which fixes problems
    with webapps which use Xerces (since Xerces 1 is not API compatible with
    Xerces 2).
  
  Revision  Changes    Path
  1.33      +32 -9     
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
  
  Index: WebappClassLoader.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- WebappClassLoader.java    28 Jan 2002 23:06:00 -0000      1.32
  +++ WebappClassLoader.java    2 Feb 2002 12:57:43 -0000       1.33
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
 1.32 2002/01/28 23:06:00 remm Exp $
  - * $Revision: 1.32 $
  - * $Date: 2002/01/28 23:06:00 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
 1.33 2002/02/02 12:57:43 remm Exp $
  + * $Revision: 1.33 $
  + * $Date: 2002/02/02 12:57:43 $
    *
    * ====================================================================
    *
  @@ -122,7 +122,7 @@
    *
    * @author Remy Maucherat
    * @author Craig R. McClanahan
  - * @version $Revision: 1.32 $ $Date: 2002/01/28 23:06:00 $
  + * @version $Revision: 1.33 $ $Date: 2002/02/02 12:57:43 $
    */
   public class WebappClassLoader
       extends URLClassLoader
  @@ -161,17 +161,34 @@
           "com.sun.jndi.ldap.LdapCtxFactory",      // LDAP      added in 1.3
           "com.sun.net.ssl.internal.ssl.Provider", // JSSE      added in 1.4
           "javax.security.auth.Subject",           // JAAS      added in 1.4
  -        "javax.naming.Context",                  // JNDI      added in 1.3
  -        "javax.net.SocketFactory",               // JSSE      added in 1.4
  -        "javax.security.cert.X509Certificate",   // JSSE      added in 1.4
  -        "javax.sql.DataSource",                  // JDBC ext. added in 1.4
  -        "javax.xml.parsers.DocumentBuilder",     // JAXP      added in 1.4
  +        //"javax.net.SocketFactory",               // JSSE      added in 1.4
  +        //"javax.security.cert.X509Certificate",   // JSSE      added in 1.4
  +        //"javax.sql.DataSource",                  // JDBC ext. added in 1.4
  +        //"javax.xml.parsers.DocumentBuilder",     // JAXP      added in 1.4
           "javax.servlet.Servlet",                 // Servlet API
           // "org.apache.crimson.jaxp.DocumentBuilderImpl",
                                                    // Crimson   added in 1.4
       };
   
   
  +    /**
  +     * The set of trigger classes that will cause a proposed repository not
  +     * to be added if this class is visible to the class loader that loaded
  +     * this factory class.  Typically, trigger classes will be listed for
  +     * components that have been integrated into the JDK for later versions,
  +     * but where the corresponding JAR files are required to run on
  +     * earlier versions.
  +     */
  +    private static final String[] classTriggers = {
  +        "javax.net.",                                // JSSE      added in 1.4
  +        "javax.security.cert.",                      // JSSE      added in 1.4
  +        "javax.naming.",                             // JNDI      added in 1.3
  +        "javax.xml.",                                // JAXP      added in 1.4
  +        "org.xml.sax.",
  +        "org.w3c.dom."
  +    };
  +
  +
       // ----------------------------------------------------------- Constructors
   
   
  @@ -1894,6 +1911,7 @@
               return false;
   
           // Looking up the package
  +        /*
           String packageName = null;
           int pos = name.lastIndexOf('.');
           if (pos != -1)
  @@ -1909,6 +1927,11 @@
               return false;
           if (packageName.equals("javax.servlet.jsp.tagext"))
               return false;
  +        */
  +        for (int i = 0; i < classTriggers.length; i++) {
  +            if (name.startsWith(classTriggers[i]))
  +                return false;
  +        }
   
           return true;
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to