craigmcc    01/01/02 16:17:09

  Modified:    catalina/src/share/org/apache/catalina/core
                        ApplicationContext.java
               catalina/src/share/org/apache/catalina/session
                        StandardSession.java
  Log:
  Do not fire "attributeRemoved" application events when the app tries to
  remove session or servlet context attributes that do not exist.
  
  PR: BugRat Bug Report #681.
  Submitted by: Ramesh Mandava <[EMAIL PROTECTED]>
  
  Revision  Changes    Path
  1.9       +12 -7     
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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ApplicationContext.java   2000/11/03 00:21:15     1.8
  +++ ApplicationContext.java   2001/01/03 00:17:06     1.9
  @@ -1,7 +1,7 @@
   /*
  - * $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 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v
 1.9 2001/01/03 00:17:06 craigmcc Exp $
  + * $Revision: 1.9 $
  + * $Date: 2001/01/03 00:17:06 $
    *
    * ====================================================================
    *
  @@ -100,7 +100,7 @@
    * associated with each instance of <code>StandardContext</code>.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.8 $ $Date: 2000/11/03 00:21:15 $
  + * @version $Revision: 1.9 $ $Date: 2001/01/03 00:17:06 $
    */
   
   public final class ApplicationContext
  @@ -572,15 +572,20 @@
       public void removeAttribute(String name) {
   
           Object value = null;
  +        boolean found = false;
   
        // Remove the specified attribute
        synchronized (attributes) {
  -         value = attributes.get(name);
  -         attributes.remove(name);
  +            found = attributes.containsKey(name);
  +            if (found) {
  +                value = attributes.get(name);
  +                attributes.remove(name);
  +            } else {
  +                return;
  +            }
        }
   
        // Notify interested application event listeners
  -     // FIXME - Assumes we notify even if the attribute was not there?
        Object listeners[] = context.getApplicationListeners();
        if ((listeners == null) || (listeners.length == 0))
            return;
  
  
  
  1.9       +12 -7     
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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- StandardSession.java      2000/11/03 00:21:17     1.8
  +++ StandardSession.java      2001/01/03 00:17:08     1.9
  @@ -1,7 +1,7 @@
   /*
  - * $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 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java,v
 1.9 2001/01/03 00:17:08 craigmcc Exp $
  + * $Revision: 1.9 $
  + * $Date: 2001/01/03 00:17:08 $
    *
    * ====================================================================
    *
  @@ -109,7 +109,7 @@
    * @author Craig R. McClanahan
    * @author Sean Legassick
    * @author <a href="mailto:[EMAIL PROTECTED]">Jon S. Stevens</a>
  - * @version $Revision: 1.8 $ $Date: 2000/11/03 00:21:17 $
  + * @version $Revision: 1.9 $ $Date: 2001/01/03 00:17:08 $
    */
   
   final class StandardSession
  @@ -853,9 +853,15 @@
   
        // Remove this attribute from our collection
        Object value = null;
  +        boolean found = false;
        synchronized (attributes) {
  -         value = attributes.get(name);
  -         attributes.remove(name);
  +            found = attributes.containsKey(name);
  +            if (found) {
  +                value = attributes.get(name);
  +                attributes.remove(name);
  +            } else {
  +                return;
  +            }
        }
   
        // Call the valueUnbound() method if necessary
  @@ -866,7 +872,6 @@
            ((HttpSessionBindingListener) value).valueUnbound(event);
   
        // Notify interested application event listeners
  -     // FIXME - Assumes we notify even if the attribute was not there?
        StandardContext context = (StandardContext) manager.getContainer();
        Object listeners[] = context.getApplicationListeners();
        if (listeners == null)
  
  
  

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

Reply via email to