craigmcc    01/02/05 18:39:43

  Modified:    catalina/src/share/org/apache/catalina/core
                        ApplicationDispatcher.java
  Log:
  Change the method used to propogate exceptions thrown by included or
  forwarded-to servlets to conform to Section 8.5 of Servlet 2.3 (Proposed
  Final Draft) Specification.  Now, run time exceptions will be propogated
  "as is", rather than being wrapped in a ServletException.
  
  Unit tests for the tester suite are forthcoming.
  
  Revision  Changes    Path
  1.13      +19 -74    
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java
  
  Index: ApplicationDispatcher.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ApplicationDispatcher.java        2001/02/04 00:49:56     1.12
  +++ ApplicationDispatcher.java        2001/02/06 02:39:43     1.13
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java,v
 1.12 2001/02/04 00:49:56 glenn Exp $
  - * $Revision: 1.12 $
  - * $Date: 2001/02/04 00:49:56 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java,v
 1.13 2001/02/06 02:39:43 craigmcc Exp $
  + * $Revision: 1.13 $
  + * $Date: 2001/02/06 02:39:43 $
    *
    * ====================================================================
    *
  @@ -97,7 +97,7 @@
    * <code>javax.servlet.ServletResponseWrapper</code>.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.12 $ $Date: 2001/02/04 00:49:56 $
  + * @version $Revision: 1.13 $ $Date: 2001/02/06 02:39:43 $
    */
   
   final class ApplicationDispatcher
  @@ -235,6 +235,8 @@
   
       /**
        * Forward this request and response to another resource for processing.
  +     * Any runtime exception, IOException, or ServletException thrown by the
  +     * called servlet will be propogated to the caller.
        *
        * @param request The servlet request to be forwarded
        * @param response The servlet response to be forwarded
  @@ -283,18 +285,8 @@
   
            if (debug >= 1)
                log(" Non-HTTP Forward");
  +            invoke(request, response);
   
  -         try {
  -             invoke(request, response);
  -         } catch (IOException e) {
  -             throw e;
  -         } catch (ServletException e) {
  -             throw e;
  -         } catch (Throwable t) {
  -             throw new ServletException
  -                 (sm.getString("applicationDispatcher.forward.throw"), t);
  -         }
  -
        }
   
        // Handle an HTTP named dispatcher forward
  @@ -302,17 +294,7 @@
   
            if (debug >= 1)
                log(" Named Dispatcher Forward");
  -
  -         try {
  -             invoke(request, response);
  -         } catch (IOException e) {
  -             throw e;
  -         } catch (ServletException e) {
  -             throw e;
  -         } catch (Throwable t) {
  -             throw new ServletException
  -                 (sm.getString("applicationDispatcher.forward.throw"), t);
  -         }
  +            invoke(request, response);
   
        }
   
  @@ -340,18 +322,8 @@
                wrequest.setQueryString(queryString);
                wrequest.mergeParameters(queryString);
            }
  +            invoke(wrequest, response);
   
  -         try {
  -             invoke(wrequest, response);
  -         } catch (IOException e) {
  -             throw e;
  -         } catch (ServletException e) {
  -             throw e;
  -         } catch (Throwable t) {
  -             throw new ServletException
  -                 (sm.getString("applicationDispatcher.forward.throw"), t);
  -         }
  -
        }
   
        // Commit and close the response before we return
  @@ -379,6 +351,8 @@
   
       /**
        * Include the response from another resource in the current response.
  +     * Any runtime exception, IOException, or ServletException thrown by the
  +     * called servlet will be propogated to the caller.
        *
        * @param request The servlet request that is including this one
        * @param response The servlet response to be appended to
  @@ -424,18 +398,8 @@
   
            if (debug >= 1)
                log(" Non-HTTP Include");
  +            invoke(request, wresponse);
   
  -         try {
  -             invoke(request, wresponse);
  -         } catch (IOException e) {
  -             throw e;
  -         } catch (ServletException e) {
  -             throw e;
  -         } catch (Throwable t) {
  -             throw new ServletException
  -                 (sm.getString("applicationDispatcher.include.throw"), t);
  -         }
  -
        }
   
        // Handle an HTTP named dispatcher include
  @@ -447,18 +411,8 @@
            ApplicationHttpRequest wrequest =
                new ApplicationHttpRequest((HttpServletRequest) request);
               wrequest.setAttribute(Globals.NAMED_DISPATCHER_ATTR, name);
  +            invoke(wrequest, wresponse);
   
  -         try {
  -             invoke(wrequest, wresponse);
  -         } catch (IOException e) {
  -             throw e;
  -         } catch (ServletException e) {
  -             throw e;
  -         } catch (Throwable t) {
  -             throw new ServletException
  -                 (sm.getString("applicationDispatcher.include.throw"), t);
  -         }
  -
        }
   
        // Handle an HTTP path based include
  @@ -493,18 +447,8 @@
                wrequest.setAttribute(Globals.QUERY_STRING_ATTR,
                                      queryString);
                wrequest.mergeParameters(queryString);
  -         }
  -
  -         try {
  -             invoke(wrequest, wresponse);
  -         } catch (IOException e) {
  -             throw e;
  -         } catch (ServletException e) {
  -             throw e;
  -         } catch (Throwable t) {
  -             throw new ServletException
  -                 (sm.getString("applicationDispatcher.include.throw"), t);
            }
  +            invoke(wrequest, wresponse);
   
        }
   
  @@ -542,6 +486,7 @@
        Servlet servlet = null;
           IOException ioException = null;
           ServletException servletException = null;
  +     RuntimeException runtimeException = null;
        boolean unavailable = false;
   
        // Check for the servlet being marked unavailable
  @@ -603,12 +548,10 @@
            log(sm.getString("applicationDispatcher.serviceException",
                             wrapper.getName()), e);
            servletException = e;
  -     } catch (Throwable e) {
  +     } catch (RuntimeException e) {
            log(sm.getString("applicationDispatcher.serviceException",
                             wrapper.getName()), e);
  -            servletException = new ServletException
  -                (sm.getString("applicationDispatcher.serviceException",
  -                              wrapper.getName()), e);
  +            runtimeException = e;
        }
   
        // Deallocate the allocated servlet instance
  @@ -632,6 +575,8 @@
               throw ioException;
           if (servletException != null)
               throw servletException;
  +     if (runtimeException != null)
  +         throw runtimeException;
   
       }
   
  
  
  

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

Reply via email to