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...@locus.apache.org on 2000/11/03 01:21:18 UTC

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session StandardSession.java

craigmcc    00/11/02 16:21:17

  Modified:    catalina/src/share/org/apache/catalina/core
                        ApplicationContext.java ContainerBase.java
                        StandardContext.java
               catalina/src/share/org/apache/catalina/session
                        StandardSession.java
  Log:
  Extend the set of container events to include notification before and
  after instances of application event listeners are invoked.  In each case,
  the listener instance is passed as the data object associated with this
  event.
  
  Revision  Changes    Path
  1.8       +33 -12    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java
  
  Index: ApplicationContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ApplicationContext.java	2000/10/21 13:39:52	1.7
  +++ ApplicationContext.java	2000/11/03 00:21:15	1.8
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v 1.7 2000/10/21 13:39:52 craigmcc Exp $
  - * $Revision: 1.7 $
  - * $Date: 2000/10/21 13:39:52 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v 1.8 2000/11/03 00:21:15 craigmcc Exp $
  + * $Revision: 1.8 $
  + * $Date: 2000/11/03 00:21:15 $
    *
    * ====================================================================
    *
  @@ -100,7 +100,7 @@
    * associated with each instance of <code>StandardContext</code>.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.7 $ $Date: 2000/10/21 13:39:52 $
  + * @version $Revision: 1.8 $ $Date: 2000/11/03 00:21:15 $
    */
   
   public final class ApplicationContext
  @@ -582,7 +582,7 @@
   	// Notify interested application event listeners
   	// FIXME - Assumes we notify even if the attribute was not there?
   	Object listeners[] = context.getApplicationListeners();
  -	if (listeners == null)
  +	if ((listeners == null) || (listeners.length == 0))
   	    return;
   	ServletContextAttributeEvent event =
   	  new ServletContextAttributeEvent(context.getServletContext(),
  @@ -590,11 +590,17 @@
   	for (int i = 0; i < listeners.length; i++) {
   	    if (!(listeners[i] instanceof ServletContextAttributesListener))
   	        continue;
  +            ServletContextAttributesListener listener =
  +	        (ServletContextAttributesListener) listeners[i];
   	    try {
  -	        ServletContextAttributesListener listener =
  -		  (ServletContextAttributesListener) listeners[i];
  +                context.fireContainerEvent("beforeContextAttributeRemoved",
  +                                           listener);
   		listener.attributeRemoved(event);
  +                context.fireContainerEvent("afterContextAttributeRemoved",
  +                                           listener);
   	    } catch (Throwable t) {
  +                context.fireContainerEvent("afterContextAttributeRemoved",
  +                                           listener);
   	        // FIXME - should we do anything besides log these?
   	        log(sm.getString("applicationContext.attributeEvent"), t);
   	    }
  @@ -623,7 +629,7 @@
   
   	// Notify interested application event listeners
   	Object listeners[] = context.getApplicationListeners();
  -	if (listeners == null)
  +	if ((listeners == null) || (listeners.length == 0))
   	    return;
   	ServletContextAttributeEvent event =
   	  new ServletContextAttributeEvent(context.getServletContext(),
  @@ -631,14 +637,29 @@
   	for (int i = 0; i < listeners.length; i++) {
   	    if (!(listeners[i] instanceof ServletContextAttributesListener))
   	        continue;
  +            ServletContextAttributesListener listener =
  +	        (ServletContextAttributesListener) listeners[i];
   	    try {
  -	        ServletContextAttributesListener listener =
  -		  (ServletContextAttributesListener) listeners[i];
  -		if (replaced)
  +		if (replaced) {
  +                    context.fireContainerEvent("beforeContextAttributeReplaced",
  +                                               listener);
   		    listener.attributeReplaced(event);
  -		else
  +                    context.fireContainerEvent("afterContextAttributeReplaced",
  +                                               listener);
  +		} else {
  +                    context.fireContainerEvent("beforeContextAttributeAdded",
  +                                               listener);
   		    listener.attributeAdded(event);
  +                    context.fireContainerEvent("afterContextAttributeAdded",
  +                                               listener);
  +                }
   	    } catch (Throwable t) {
  +                if (replaced)
  +                    context.fireContainerEvent("afterContextAttributeReplaced",
  +                                               listener);
  +                else
  +                    context.fireContainerEvent("afterContextAttributeAdded",
  +                                               listener);
   	        // FIXME - should we do anything besides log these?
   	        log(sm.getString("applicationContext.attributeEvent"), t);
   	    }
  
  
  
  1.5       +7 -5      jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java
  
  Index: ContainerBase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ContainerBase.java	2000/09/30 19:15:45	1.4
  +++ ContainerBase.java	2000/11/03 00:21:15	1.5
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v 1.4 2000/09/30 19:15:45 craigmcc Exp $
  - * $Revision: 1.4 $
  - * $Date: 2000/09/30 19:15:45 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v 1.5 2000/11/03 00:21:15 craigmcc Exp $
  + * $Revision: 1.5 $
  + * $Date: 2000/11/03 00:21:15 $
    *
    * ====================================================================
    *
  @@ -150,7 +150,7 @@
    * class comments of the implementation class.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.4 $ $Date: 2000/09/30 19:15:45 $
  + * @version $Revision: 1.5 $ $Date: 2000/11/03 00:21:15 $
    */
   
   public abstract class ContainerBase
  @@ -1385,8 +1385,10 @@
        * @param type Event type
        * @param data Event data
        */
  -    protected void fireContainerEvent(String type, Object data) {
  +    public void fireContainerEvent(String type, Object data) {
   
  +        if (listeners.size() < 1)
  +            return;
   	ContainerEvent event = new ContainerEvent(this, type, data);
   	ContainerListener list[] = new ContainerListener[0];
   	synchronized (listeners) {
  
  
  
  1.26      +14 -8     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java
  
  Index: StandardContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- StandardContext.java	2000/11/02 06:14:09	1.25
  +++ StandardContext.java	2000/11/03 00:21:15	1.26
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v 1.25 2000/11/02 06:14:09 remm Exp $
  - * $Revision: 1.25 $
  - * $Date: 2000/11/02 06:14:09 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v 1.26 2000/11/03 00:21:15 craigmcc Exp $
  + * $Revision: 1.26 $
  + * $Date: 2000/11/03 00:21:15 $
    *
    * ====================================================================
    *
  @@ -127,7 +127,7 @@
    *
    * @author Craig R. McClanahan
    * @author Remy Maucherat
  - * @version $Revision: 1.25 $ $Date: 2000/11/02 06:14:09 $
  + * @version $Revision: 1.26 $ $Date: 2000/11/03 00:21:15 $
    */
   
   public final class StandardContext
  @@ -2686,11 +2686,14 @@
                   continue;
   	    if (!(instances[i] instanceof ServletContextListener))
   	        continue;
  +            ServletContextListener listener =
  +                (ServletContextListener) instances[i];
   	    try {
  -	        ServletContextListener listener =
  -		  (ServletContextListener) instances[i];
  +                fireContainerEvent("beforeContextInitialized", listener);
   		listener.contextInitialized(event);
  +                fireContainerEvent("afterContextInitialized", listener);
   	    } catch (Throwable t) {
  +                fireContainerEvent("afterContextInitialized", listener);
   	        log(sm.getString("standardContext.listenerStart",
                                    instances[i].getClass().getName()), t);
                   ok = false;
  @@ -2723,11 +2726,14 @@
                   continue;
   	    if (!(listeners[j] instanceof ServletContextListener))
   	        continue;
  +            ServletContextListener listener =
  +                (ServletContextListener) listeners[j];
   	    try {
  -	        ServletContextListener listener =
  -		  (ServletContextListener) listeners[j];
  +                fireContainerEvent("beforeContextDestroyed", listener);
   		listener.contextDestroyed(event);
  +                fireContainerEvent("beforeContextDestroyed", listener);
   	    } catch (Throwable t) {
  +                fireContainerEvent("beforeContextDestroyed", listener);
   	        log(sm.getString("standardContext.listenerStop",
                                    listeners[j].getClass().getName()), t);
                   ok = false;
  
  
  
  1.8       +52 -18    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java
  
  Index: StandardSession.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- StandardSession.java	2000/10/18 18:15:54	1.7
  +++ StandardSession.java	2000/11/03 00:21:17	1.8
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java,v 1.7 2000/10/18 18:15:54 craigmcc Exp $
  - * $Revision: 1.7 $
  - * $Date: 2000/10/18 18:15:54 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java,v 1.8 2000/11/03 00:21:17 craigmcc Exp $
  + * $Revision: 1.8 $
  + * $Date: 2000/11/03 00:21:17 $
    *
    * ====================================================================
    *
  @@ -86,6 +86,7 @@
   import org.apache.catalina.Context;
   import org.apache.catalina.Manager;
   import org.apache.catalina.Session;
  +import org.apache.catalina.core.StandardContext;
   import org.apache.catalina.util.Enumerator;
   import org.apache.catalina.util.StringManager;
   
  @@ -108,7 +109,7 @@
    * @author Craig R. McClanahan
    * @author Sean Legassick
    * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a>
  - * @version $Revision: 1.7 $ $Date: 2000/10/18 18:15:54 $
  + * @version $Revision: 1.8 $ $Date: 2000/11/03 00:21:17 $
    */
   
   final class StandardSession
  @@ -311,7 +312,7 @@
   	    ((ManagerBase) manager).add(this);
   
   	// Notify interested application event listeners
  -	Context context = (Context) manager.getContainer();
  +	StandardContext context = (StandardContext) manager.getContainer();
   	Object listeners[] = context.getApplicationListeners();
   	if (listeners != null) {
   	    HttpSessionEvent event =
  @@ -319,11 +320,17 @@
   	    for (int i = 0; i < listeners.length; i++) {
   		if (!(listeners[i] instanceof HttpSessionListener))
   		    continue;
  +                HttpSessionListener listener =
  +                    (HttpSessionListener) listeners[i];
   		try {
  -		    HttpSessionListener listener =
  -		      (HttpSessionListener) listeners[i];
  +                    context.fireContainerEvent("beforeSessionCreated",
  +                                               listener);
   		    listener.sessionCreated(event);
  +                    context.fireContainerEvent("afterSessionCreated",
  +                                               listener);
   		} catch (Throwable t) {
  +                    context.fireContainerEvent("afterSessionCreated",
  +                                               listener);
   		  // FIXME - should we do anything besides log these?
   		  log(sm.getString("standardSession.sessionEvent"), t);
   		}
  @@ -494,7 +501,7 @@
   
   	// Notify interested application event listeners
   	// FIXME - Assumes we call listeners in reverse order
  -	Context context = (Context) manager.getContainer();
  +	StandardContext context = (StandardContext) manager.getContainer();
   	Object listeners[] = context.getApplicationListeners();
   	if (listeners != null) {
   	    HttpSessionEvent event =
  @@ -503,11 +510,17 @@
   	        int j = (listeners.length - 1) - i;
   		if (!(listeners[j] instanceof HttpSessionListener))
   		    continue;
  +                HttpSessionListener listener =
  +                    (HttpSessionListener) listeners[j];
   		try {
  -		    HttpSessionListener listener =
  -		      (HttpSessionListener) listeners[j];
  +                    context.fireContainerEvent("beforeSessionDestroyed",
  +                                               listener);
   		    listener.sessionDestroyed(event);
  +                    context.fireContainerEvent("afterSessionDestroyed",
  +                                               listener);
   		} catch (Throwable t) {
  +                    context.fireContainerEvent("afterSessionDestroyed",
  +                                               listener);
   		  // FIXME - should we do anything besides log these?
   		  log(sm.getString("standardSession.sessionEvent"), t);
   		}
  @@ -854,18 +867,24 @@
   
   	// Notify interested application event listeners
   	// FIXME - Assumes we notify even if the attribute was not there?
  -	Context context = (Context) manager.getContainer();
  +	StandardContext context = (StandardContext) manager.getContainer();
   	Object listeners[] = context.getApplicationListeners();
   	if (listeners == null)
   	    return;
   	for (int i = 0; i < listeners.length; i++) {
   	    if (!(listeners[i] instanceof HttpSessionAttributesListener))
   	        continue;
  +            HttpSessionAttributesListener listener =
  +                (HttpSessionAttributesListener) listeners[i];
   	    try {
  -	        HttpSessionAttributesListener listener =
  -		  (HttpSessionAttributesListener) listeners[i];
  +                context.fireContainerEvent("beforeSessionAttributeRemoved",
  +                                           listener);
   		listener.attributeRemoved(event);
  +                context.fireContainerEvent("afterSessionAttributeRemoved",
  +                                           listener);
   	    } catch (Throwable t) {
  +                context.fireContainerEvent("afterSessionAttributeRemoved",
  +                                           listener);
   	        // FIXME - should we do anything besides log these?
   	        log(sm.getString("standardSession.attributeEvent"), t);
   	    }
  @@ -947,21 +966,36 @@
   	    ((HttpSessionBindingListener) value).valueBound(event);
   
   	// Notify interested application event listeners
  -	Context context = (Context) manager.getContainer();
  +	StandardContext context = (StandardContext) manager.getContainer();
   	Object listeners[] = context.getApplicationListeners();
   	if (listeners == null)
   	    return;
   	for (int i = 0; i < listeners.length; i++) {
   	    if (!(listeners[i] instanceof HttpSessionAttributesListener))
   	        continue;
  +            HttpSessionAttributesListener listener =
  +                (HttpSessionAttributesListener) listeners[i];
   	    try {
  -	        HttpSessionAttributesListener listener =
  -		  (HttpSessionAttributesListener) listeners[i];
  -		if (unbound != null)
  +		if (unbound != null) {
  +                    context.fireContainerEvent("beforeSessionAttributeReplaced",
  +                                               listener);
   		    listener.attributeReplaced(event);
  -		else
  +                    context.fireContainerEvent("afterSessionAttributeReplaced",
  +                                               listener);
  +		} else {
  +                    context.fireContainerEvent("beforeSessionAttributeAdded",
  +                                               listener);
   		    listener.attributeAdded(event);
  +                    context.fireContainerEvent("afterSessionAttributeAdded",
  +                                               listener);
  +                }
   	    } catch (Throwable t) {
  +                if (unbound != null)
  +                    context.fireContainerEvent("afterSessionAttributeReplaced",
  +                                               listener);
  +                else
  +                    context.fireContainerEvent("afterSessionAttributeAdded",
  +                                               listener);
   	        // FIXME - should we do anything besides log these?
   	        log(sm.getString("standardSession.attributeEvent"), t);
   	    }