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 2001/10/12 01:30:58 UTC

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util InstanceSupport.java

craigmcc    01/10/11 16:30:58

  Modified:    catalina/src/share/org/apache/catalina InstanceEvent.java
               catalina/src/share/org/apache/catalina/core
                        ApplicationFilterChain.java StandardWrapper.java
               catalina/src/share/org/apache/catalina/util
                        InstanceSupport.java
  Log:
  Enhance InstanceEvent reporting to include any exception that was thrown
  during the process being reported by this event.  This applies to any of
  the "AFTER" events.
  
  Revision  Changes    Path
  1.7       +121 -4    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/InstanceEvent.java
  
  Index: InstanceEvent.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/InstanceEvent.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- InstanceEvent.java	2001/08/01 03:04:04	1.6
  +++ InstanceEvent.java	2001/10/11 23:30:58	1.7
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/InstanceEvent.java,v 1.6 2001/08/01 03:04:04 craigmcc Exp $
  - * $Revision: 1.6 $
  - * $Date: 2001/08/01 03:04:04 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/InstanceEvent.java,v 1.7 2001/10/11 23:30:58 craigmcc Exp $
  + * $Revision: 1.7 $
  + * $Date: 2001/10/11 23:30:58 $
    *
    * ====================================================================
    *
  @@ -78,7 +78,7 @@
    * as opposed to the Wrapper component that manages it.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.6 $ $Date: 2001/08/01 03:04:04 $
  + * @version $Revision: 1.7 $ $Date: 2001/10/11 23:30:58 $
    */
   
   public final class InstanceEvent
  @@ -203,6 +203,28 @@
   
       /**
        * Construct a new InstanceEvent with the specified parameters.  This
  +     * constructor is used for filter lifecycle events.
  +     *
  +     * @param wrapper Wrapper managing this servlet instance
  +     * @param filter Filter instance for which this event occurred
  +     * @param type Event type (required)
  +     * @param exception Exception that occurred
  +     */
  +    public InstanceEvent(Wrapper wrapper, Filter filter, String type,
  +                         Throwable exception) {
  +
  +      super(wrapper);
  +      this.wrapper = wrapper;
  +      this.filter = filter;
  +      this.servlet = null;
  +      this.type = type;
  +      this.exception = exception;
  +
  +    }
  +
  +
  +    /**
  +     * Construct a new InstanceEvent with the specified parameters.  This
        * constructor is used for filter processing events.
        *
        * @param wrapper Wrapper managing this servlet instance
  @@ -227,6 +249,33 @@
   
       /**
        * Construct a new InstanceEvent with the specified parameters.  This
  +     * constructor is used for filter processing events.
  +     *
  +     * @param wrapper Wrapper managing this servlet instance
  +     * @param filter Filter instance for which this event occurred
  +     * @param type Event type (required)
  +     * @param request Servlet request we are processing
  +     * @param response Servlet response we are processing
  +     * @param exception Exception that occurred
  +     */
  +    public InstanceEvent(Wrapper wrapper, Filter filter, String type,
  +                         ServletRequest request, ServletResponse response,
  +                         Throwable exception) {
  +
  +      super(wrapper);
  +      this.wrapper = wrapper;
  +      this.filter = filter;
  +      this.servlet = null;
  +      this.type = type;
  +      this.request = request;
  +      this.response = response;
  +      this.exception = exception;
  +
  +    }
  +
  +
  +    /**
  +     * Construct a new InstanceEvent with the specified parameters.  This
        * constructor is used for processing servlet lifecycle events.
        *
        * @param wrapper Wrapper managing this servlet instance
  @@ -246,6 +295,28 @@
   
       /**
        * Construct a new InstanceEvent with the specified parameters.  This
  +     * constructor is used for processing servlet lifecycle events.
  +     *
  +     * @param wrapper Wrapper managing this servlet instance
  +     * @param servlet Servlet instance for which this event occurred
  +     * @param type Event type (required)
  +     * @param exception Exception that occurred
  +     */
  +    public InstanceEvent(Wrapper wrapper, Servlet servlet, String type,
  +                         Throwable exception) {
  +
  +      super(wrapper);
  +      this.wrapper = wrapper;
  +      this.filter = null;
  +      this.servlet = servlet;
  +      this.type = type;
  +      this.exception = exception;
  +
  +    }
  +
  +
  +    /**
  +     * Construct a new InstanceEvent with the specified parameters.  This
        * constructor is used for processing servlet processing events.
        *
        * @param wrapper Wrapper managing this servlet instance
  @@ -268,10 +339,45 @@
       }
   
   
  +    /**
  +     * Construct a new InstanceEvent with the specified parameters.  This
  +     * constructor is used for processing servlet processing events.
  +     *
  +     * @param wrapper Wrapper managing this servlet instance
  +     * @param servlet Servlet instance for which this event occurred
  +     * @param type Event type (required)
  +     * @param request Servlet request we are processing
  +     * @param response Servlet response we are processing
  +     * @param exception Exception that occurred
  +     */
  +    public InstanceEvent(Wrapper wrapper, Servlet servlet, String type,
  +                         ServletRequest request, ServletResponse response,
  +                         Throwable exception) {
  +
  +      super(wrapper);
  +      this.wrapper = wrapper;
  +      this.filter = null;
  +      this.servlet = servlet;
  +      this.type = type;
  +      this.request = request;
  +      this.response = response;
  +      this.exception = exception;
  +
  +    }
  +
  +
       // ----------------------------------------------------- Instance Variables
   
   
       /**
  +     * The exception that was thrown during the processing being reported
  +     * by this event (AFTER_INIT_EVENT, AFTER_SERVICE_EVENT, 
  +     * AFTER_DESTROY_EVENT, AFTER_DISPATCH_EVENT, and AFTER_FILTER_EVENT only).
  +     */
  +    private Throwable exception = null;
  +
  +
  +    /**
        * The Filter instance for which this event occurred (BEFORE_FILTER_EVENT
        * and AFTER_FILTER_EVENT only).
        */
  @@ -312,6 +418,17 @@
   
   
       // ------------------------------------------------------------- Properties
  +
  +
  +    /**
  +     * Return the exception that occurred during the processing
  +     * that was reported by this event.
  +     */
  +    public Throwable getException() {
  +
  +        return (this.exception);
  +
  +    }
   
   
       /**
  
  
  
  1.11      +12 -12    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationFilterChain.java
  
  Index: ApplicationFilterChain.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationFilterChain.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ApplicationFilterChain.java	2001/07/30 20:35:49	1.10
  +++ ApplicationFilterChain.java	2001/10/11 23:30:58	1.11
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationFilterChain.java,v 1.10 2001/07/30 20:35:49 craigmcc Exp $
  - * $Revision: 1.10 $
  - * $Date: 2001/07/30 20:35:49 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationFilterChain.java,v 1.11 2001/10/11 23:30:58 craigmcc Exp $
  + * $Revision: 1.11 $
  + * $Date: 2001/10/11 23:30:58 $
    *
    * ====================================================================
    *
  @@ -92,7 +92,7 @@
    * method itself.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.10 $ $Date: 2001/07/30 20:35:49 $
  + * @version $Revision: 1.11 $ $Date: 2001/10/11 23:30:58 $
    */
   
   final class ApplicationFilterChain implements FilterChain {
  @@ -216,22 +216,22 @@
               } catch (IOException e) {
                   if (filter != null)
                       support.fireInstanceEvent(InstanceEvent.AFTER_FILTER_EVENT,
  -                                              filter, request, response);
  +                                              filter, request, response, e);
                   throw e;
               } catch (ServletException e) {
                   if (filter != null)
                       support.fireInstanceEvent(InstanceEvent.AFTER_FILTER_EVENT,
  -                                              filter, request, response);
  +                                              filter, request, response, e);
                   throw e;
               } catch (RuntimeException e) {
                   if (filter != null)
                       support.fireInstanceEvent(InstanceEvent.AFTER_FILTER_EVENT,
  -                                              filter, request, response);
  +                                              filter, request, response, e);
                   throw e;
               } catch (Throwable e) {
                   if (filter != null)
                       support.fireInstanceEvent(InstanceEvent.AFTER_FILTER_EVENT,
  -                                              filter, request, response);
  +                                              filter, request, response, e);
                   throw new ServletException
                     (sm.getString("filterChain.filter"), e);
               }
  @@ -253,19 +253,19 @@
                                         servlet, request, response);
           } catch (IOException e) {
               support.fireInstanceEvent(InstanceEvent.AFTER_SERVICE_EVENT,
  -                                      servlet, request, response);
  +                                      servlet, request, response, e);
               throw e;
           } catch (ServletException e) {
               support.fireInstanceEvent(InstanceEvent.AFTER_SERVICE_EVENT,
  -                                      servlet, request, response);
  +                                      servlet, request, response, e);
               throw e;
           } catch (RuntimeException e) {
               support.fireInstanceEvent(InstanceEvent.AFTER_SERVICE_EVENT,
  -                                      servlet, request, response);
  +                                      servlet, request, response, e);
               throw e;
           } catch (Throwable e) {
               support.fireInstanceEvent(InstanceEvent.AFTER_SERVICE_EVENT,
  -                                      servlet, request, response);
  +                                      servlet, request, response, e);
               throw new ServletException
                 (sm.getString("filterChain.servlet"), e);
           }
  
  
  
  1.31      +8 -8      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.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- StandardWrapper.java	2001/09/28 03:24:07	1.30
  +++ StandardWrapper.java	2001/10/11 23:30:58	1.31
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardWrapper.java,v 1.30 2001/09/28 03:24:07 remm Exp $
  - * $Revision: 1.30 $
  - * $Date: 2001/09/28 03:24:07 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardWrapper.java,v 1.31 2001/10/11 23:30:58 craigmcc Exp $
  + * $Revision: 1.31 $
  + * $Date: 2001/10/11 23:30:58 $
    *
    * ====================================================================
    *
  @@ -105,7 +105,7 @@
    * make them efficient are counter-productive.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.30 $ $Date: 2001/09/28 03:24:07 $
  + * @version $Revision: 1.31 $ $Date: 2001/10/11 23:30:58 $
    */
   
   public final class StandardWrapper
  @@ -846,18 +846,18 @@
                                                 servlet);
           } catch (UnavailableException f) {
               instanceSupport.fireInstanceEvent(InstanceEvent.AFTER_INIT_EVENT,
  -                                              servlet);
  +                                              servlet, f);
               unavailable(f);
               throw f;
           } catch (ServletException f) {
               instanceSupport.fireInstanceEvent(InstanceEvent.AFTER_INIT_EVENT,
  -                                              servlet);
  +                                              servlet, f);
               // If the servlet wanted to be unavailable it would have
               // said so, so do not call unavailable(null).
               throw f;
           } catch (Throwable f) {
               instanceSupport.fireInstanceEvent(InstanceEvent.AFTER_INIT_EVENT,
  -                                              servlet);
  +                                              servlet, f);
               // If the servlet wanted to be unavailable it would have
               // said so, so do not call unavailable(null).
               throw new ServletException
  @@ -1005,7 +1005,7 @@
                 (InstanceEvent.AFTER_DESTROY_EVENT, instance);
           } catch (Throwable t) {
               instanceSupport.fireInstanceEvent
  -              (InstanceEvent.AFTER_DESTROY_EVENT, instance);
  +              (InstanceEvent.AFTER_DESTROY_EVENT, instance, t);
               instance = null;
               fireContainerEvent("unload", this);
               unloading = false;
  
  
  
  1.5       +120 -4    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util/InstanceSupport.java
  
  Index: InstanceSupport.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util/InstanceSupport.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- InstanceSupport.java	2001/07/30 20:35:49	1.4
  +++ InstanceSupport.java	2001/10/11 23:30:58	1.5
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util/InstanceSupport.java,v 1.4 2001/07/30 20:35:49 craigmcc Exp $
  - * $Revision: 1.4 $
  - * $Date: 2001/07/30 20:35:49 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util/InstanceSupport.java,v 1.5 2001/10/11 23:30:58 craigmcc Exp $
  + * $Revision: 1.5 $
  + * $Date: 2001/10/11 23:30:58 $
    *
    * ====================================================================
    *
  @@ -79,7 +79,7 @@
    * registered InstanceListeners.
    *
    * @author Craig R. McClanahan
  - * @version $Id: InstanceSupport.java,v 1.4 2001/07/30 20:35:49 craigmcc Exp $
  + * @version $Id: InstanceSupport.java,v 1.5 2001/10/11 23:30:58 craigmcc Exp $
    */
   
   public final class InstanceSupport {
  @@ -184,6 +184,33 @@
        *
        * @param type Event type
        * @param filter The relevant Filter for this event
  +     * @param exception Exception that occurred
  +     */
  +    public void fireInstanceEvent(String type, Filter filter,
  +                                  Throwable exception) {
  +
  +        if (listeners.length == 0)
  +            return;
  +
  +        InstanceEvent event = new InstanceEvent(wrapper, filter, type,
  +                                                exception);
  +        InstanceListener interested[] = null;
  +        synchronized (listeners) {
  +            interested = (InstanceListener[]) listeners.clone();
  +        }
  +        for (int i = 0; i < interested.length; i++)
  +            interested[i].instanceEvent(event);
  +
  +    }
  +
  +
  +    /**
  +     * Notify all lifecycle event listeners that a particular event has
  +     * occurred for this Container.  The default implementation performs
  +     * this notification synchronously using the calling thread.
  +     *
  +     * @param type Event type
  +     * @param filter The relevant Filter for this event
        * @param request The servlet request we are processing
        * @param response The servlet response we are processing
        */
  @@ -212,6 +239,37 @@
        * this notification synchronously using the calling thread.
        *
        * @param type Event type
  +     * @param filter The relevant Filter for this event
  +     * @param request The servlet request we are processing
  +     * @param response The servlet response we are processing
  +     * @param exception Exception that occurred
  +     */
  +    public void fireInstanceEvent(String type, Filter filter,
  +                                  ServletRequest request,
  +                                  ServletResponse response,
  +                                  Throwable exception) {
  +
  +        if (listeners.length == 0)
  +            return;
  +
  +        InstanceEvent event = new InstanceEvent(wrapper, filter, type,
  +                                                request, response, exception);
  +        InstanceListener interested[] = null;
  +        synchronized (listeners) {
  +            interested = (InstanceListener[]) listeners.clone();
  +        }
  +        for (int i = 0; i < interested.length; i++)
  +            interested[i].instanceEvent(event);
  +
  +    }
  +
  +
  +    /**
  +     * Notify all lifecycle event listeners that a particular event has
  +     * occurred for this Container.  The default implementation performs
  +     * this notification synchronously using the calling thread.
  +     *
  +     * @param type Event type
        * @param servlet The relevant Servlet for this event
        */
       public void fireInstanceEvent(String type, Servlet servlet) {
  @@ -237,6 +295,33 @@
        *
        * @param type Event type
        * @param servlet The relevant Servlet for this event
  +     * @param exception Exception that occurred
  +     */
  +    public void fireInstanceEvent(String type, Servlet servlet,
  +                                  Throwable exception) {
  +
  +        if (listeners.length == 0)
  +            return;
  +
  +        InstanceEvent event = new InstanceEvent(wrapper, servlet, type,
  +                                                exception);
  +        InstanceListener interested[] = null;
  +        synchronized (listeners) {
  +            interested = (InstanceListener[]) listeners.clone();
  +        }
  +        for (int i = 0; i < interested.length; i++)
  +            interested[i].instanceEvent(event);
  +
  +    }
  +
  +
  +    /**
  +     * Notify all lifecycle event listeners that a particular event has
  +     * occurred for this Container.  The default implementation performs
  +     * this notification synchronously using the calling thread.
  +     *
  +     * @param type Event type
  +     * @param servlet The relevant Servlet for this event
        * @param request The servlet request we are processing
        * @param response The servlet response we are processing
        */
  @@ -249,6 +334,37 @@
   
           InstanceEvent event = new InstanceEvent(wrapper, servlet, type,
                                                   request, response);
  +        InstanceListener interested[] = null;
  +        synchronized (listeners) {
  +            interested = (InstanceListener[]) listeners.clone();
  +        }
  +        for (int i = 0; i < interested.length; i++)
  +            interested[i].instanceEvent(event);
  +
  +    }
  +
  +
  +    /**
  +     * Notify all lifecycle event listeners that a particular event has
  +     * occurred for this Container.  The default implementation performs
  +     * this notification synchronously using the calling thread.
  +     *
  +     * @param type Event type
  +     * @param servlet The relevant Servlet for this event
  +     * @param request The servlet request we are processing
  +     * @param response The servlet response we are processing
  +     * @param exception Exception that occurred
  +     */
  +    public void fireInstanceEvent(String type, Servlet servlet,
  +                                  ServletRequest request,
  +                                  ServletResponse response,
  +                                  Throwable exception) {
  +
  +        if (listeners.length == 0)
  +            return;
  +
  +        InstanceEvent event = new InstanceEvent(wrapper, servlet, type,
  +                                                request, response, exception);
           InstanceListener interested[] = null;
           synchronized (listeners) {
               interested = (InstanceListener[]) listeners.clone();