You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by cr...@apache.org on 2002/01/26 03:01:57 UTC

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core StandardWrapper.java

craigmcc    02/01/25 18:01:57

  Modified:    catalina/src/share/org/apache/catalina/core
                        StandardWrapper.java
  Log:
  Remove the undocumented (and needless) restriction that container provided
  servlets must have a fully qualified name starting with org.apache.catalina.
  
  Change the name of isContainerServlet() to isContainerProvidedServlet() to
  better distinguish the fact that we're checking which class loader to use
  (in other words, was this servlet found in server/classes or server/lib) --
  checking for a ContainerServlet can be done later (when necessary) with an
  instanceof check.
  
  Revision  Changes    Path
  1.36      +19 -12    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardWrapper.java
  
  Index: StandardWrapper.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardWrapper.java,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- StandardWrapper.java	11 Dec 2001 18:56:03 -0000	1.35
  +++ StandardWrapper.java	26 Jan 2002 02:01:56 -0000	1.36
  @@ -1,13 +1,13 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardWrapper.java,v 1.35 2001/12/11 18:56:03 remm Exp $
  - * $Revision: 1.35 $
  - * $Date: 2001/12/11 18:56:03 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardWrapper.java,v 1.36 2002/01/26 02:01:56 craigmcc Exp $
  + * $Revision: 1.36 $
  + * $Date: 2002/01/26 02:01:56 $
    *
    * ====================================================================
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2002 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -102,7 +102,7 @@
    *
    * @author Craig R. McClanahan
    * @author Remy Maucherat
  - * @version $Revision: 1.35 $ $Date: 2001/12/11 18:56:03 $
  + * @version $Revision: 1.36 $ $Date: 2002/01/26 02:01:56 $
    */
   
   public final class StandardWrapper
  @@ -852,8 +852,8 @@
   
           ClassLoader classLoader = loader.getClassLoader();
   
  -        // Special case class loader for a Catalina internal servlet
  -        if (isContainerServlet(actualClass)) {
  +        // Special case class loader for a container provided servlet
  +        if (isContainerProvidedServlet(actualClass)) {
               classLoader = this.getClass().getClassLoader();
               log(sm.getString
                     ("standardWrapper.containerServlet", getName()));
  @@ -905,7 +905,7 @@
   
           // Special handling for ContainerServlet instances
           if ((servlet instanceof ContainerServlet) &&
  -            isContainerServlet(actualClass)) {
  +            isContainerProvidedServlet(actualClass)) {
               ((ContainerServlet) servlet).setWrapper(this);
           }
   
  @@ -1203,16 +1203,23 @@
   
       /**
        * Return <code>true</code> if the specified class name represents a
  -     * container class that should be loaded by the system class loader.
  +     * container provided servlet class that should be loaded by the
  +     * server class loader.
        *
        * @param name Name of the class to be checked
        */
  -    private boolean isContainerServlet(String classname) {
  +    private boolean isContainerProvidedServlet(String classname) {
   
  -        if (classname.startsWith("org.apache.catalina."))
  +        if (classname.startsWith("org.apache.catalina.")) {
               return (true);
  -        else
  +        }
  +        try {
  +            Class clazz =
  +                this.getClass().getClassLoader().loadClass(classname);
  +            return (ContainerServlet.class.isAssignableFrom(clazz));
  +        } catch (Throwable t) {
               return (false);
  +        }
   
       }
   
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>