luehe       2004/10/28 09:42:37

  Modified:    catalina/src/share/org/apache/catalina/core
                        StandardWrapper.java
  Log:
  Prevent NPE when servlet class is not an instance of HttpServlet.
  Return hardcoded set of methods in this case.
  
  Revision  Changes    Path
  1.55      +13 -3     
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardWrapper.java
  
  Index: StandardWrapper.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardWrapper.java,v
  retrieving revision 1.54
  retrieving revision 1.55
  diff -u -r1.54 -r1.55
  --- StandardWrapper.java      27 Oct 2004 22:58:17 -0000      1.54
  +++ StandardWrapper.java      28 Oct 2004 16:42:37 -0000      1.55
  @@ -73,6 +73,10 @@
   
       private static org.apache.commons.logging.Log log=
           org.apache.commons.logging.LogFactory.getLog( StandardWrapper.class );
  +
  +    private static final String[] DEFAULT_SERVLET_METHODS = new String[] {
  +                                                    "GET", "HEAD", "POST" };
  +
       // ----------------------------------------------------------- Constructors
   
   
  @@ -563,12 +567,18 @@
        * servlet
        */
       public String[] getServletMethods() throws ServletException {
  -     
  +
  +        Class servletClazz = loadServlet().getClass();
  +        if (!javax.servlet.http.HttpServlet.class.isAssignableFrom(
  +                                                        servletClazz)) {
  +            return DEFAULT_SERVLET_METHODS;
  +        }
  +
           HashSet allow = new HashSet();
           allow.add("TRACE");
           allow.add("OPTIONS");
        
  -        Method[] methods = getAllDeclaredMethods(loadServlet().getClass());
  +        Method[] methods = getAllDeclaredMethods(servletClazz);
           for (int i=0; methods != null && i<methods.length; i++) {
               Method m = methods[i];
            
  
  
  

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

Reply via email to