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/08/18 21:42:38 UTC

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

craigmcc    00/08/18 12:42:25

  Modified:    catalina/src/share/org/apache/catalina/session
                        StandardSession.java
  Log:
  Oops, forgot to support "sessionCreated()" and "sessionDestroyed()"
  application events.  These events are now sent to the registered listeners
  that implement HttpSessionListener.
  
  Revision  Changes    Path
  1.3       +48 -4     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.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- StandardSession.java	2000/08/17 18:41:35	1.2
  +++ StandardSession.java	2000/08/18 19:42:19	1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java,v 1.2 2000/08/17 18:41:35 craigmcc Exp $
  - * $Revision: 1.2 $
  - * $Date: 2000/08/17 18:41:35 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java,v 1.3 2000/08/18 19:42:19 craigmcc Exp $
  + * $Revision: 1.3 $
  + * $Date: 2000/08/18 19:42:19 $
    *
    * ====================================================================
    *
  @@ -81,6 +81,8 @@
   import javax.servlet.http.HttpSessionBindingEvent;
   import javax.servlet.http.HttpSessionBindingListener;
   import javax.servlet.http.HttpSessionContext;
  +import javax.servlet.http.HttpSessionEvent;
  +import javax.servlet.http.HttpSessionListener;
   import org.apache.catalina.Context;
   import org.apache.catalina.Manager;
   import org.apache.catalina.Session;
  @@ -106,7 +108,7 @@
    * @author Craig R. McClanahan
    * @author Sean Legassick
    * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a>
  - * @version $Revision: 1.2 $ $Date: 2000/08/17 18:41:35 $
  + * @version $Revision: 1.3 $ $Date: 2000/08/18 19:42:19 $
    */
   
   final class StandardSession
  @@ -276,6 +278,26 @@
   	if ((manager != null) && (manager instanceof ManagerBase))
   	    ((ManagerBase) manager).add(this);
   
  +	// Notify interested application event listeners
  +	Context context = (Context) manager.getContainer();
  +	Object listeners[] = context.getApplicationListeners();
  +	if (listeners != null) {
  +	    HttpSessionEvent event =
  +	      new HttpSessionEvent(getSession());
  +	    for (int i = 0; i < listeners.length; i++) {
  +		if (!(listeners[i] instanceof HttpSessionListener))
  +		    continue;
  +		try {
  +		    HttpSessionListener listener =
  +		      (HttpSessionListener) listeners[i];
  +		    listener.sessionCreated(event);
  +		} catch (Throwable t) {
  +		  // FIXME - should we do anything besides log these?
  +		  log(sm.getString("standardSession.sessionEvent"), t);
  +		}
  +	    }
  +	}
  +
       }
   
   
  @@ -435,6 +457,28 @@
   	String keys[] = keys();
   	for (int i = 0; i < keys.length; i++)
   	    removeAttribute(keys[i]);
  +
  +	// Notify interested application event listeners
  +	// FIXME - Assumes we call listeners in reverse order
  +	Context context = (Context) manager.getContainer();
  +	Object listeners[] = context.getApplicationListeners();
  +	if (listeners != null) {
  +	    HttpSessionEvent event =
  +	      new HttpSessionEvent(getSession());
  +	    for (int i = 0; i < listeners.length; i++) {
  +	        int j = (listeners.length - 1) - i;
  +		if (!(listeners[j] instanceof HttpSessionListener))
  +		    continue;
  +		try {
  +		    HttpSessionListener listener =
  +		      (HttpSessionListener) listeners[j];
  +		    listener.sessionDestroyed(event);
  +		} catch (Throwable t) {
  +		  // FIXME - should we do anything besides log these?
  +		  log(sm.getString("standardSession.sessionEvent"), t);
  +		}
  +	    }
  +	}
   
   	// Mark this session as invalid
   	setValid(false);