Expose a container event for changing the session ID
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 29 Apr 2011 17:49:37 +0000 (17:49 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 29 Apr 2011 17:49:37 +0000 (17:49 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1097899 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/Context.java
java/org/apache/catalina/session/ManagerBase.java
webapps/docs/changelog.xml

index 6adfed8..90473d5 100644 (file)
@@ -87,6 +87,11 @@ public interface Context extends Container {
      */
     public static final String  CLEAR_WELCOME_FILES_EVENT = "clearWelcomeFiles";
 
+    /**
+     * Container event for changing the ID of a session.
+     */
+    public static final String CHANGE_SESSION_ID_EVENT = "changeSessionId";
+
     // ------------------------------------------------------------- Properties
 
     /**
index f9604d1..6363775 100644 (file)
@@ -768,7 +768,11 @@ public abstract class ManagerBase extends LifecycleMBeanBase
      */
     @Override
     public void changeSessionId(Session session) {
+        String oldId = session.getIdInternal();
         session.setId(generateSessionId(), false);
+        String newId = session.getIdInternal();
+        container.fireContainerEvent(Context.CHANGE_SESSION_ID_EVENT,
+                new String[] {oldId, newId});
     }
     
     
index c1a5647..7cea543 100644 (file)
         Ensure response is committed when <code>AsyncContext#complete()</code>
         is called. (markt)
       </fix>
+      <add>
+        Add a container event that is fired when a session&apos;s ID is changed,
+        e.g. on authentication. (markt)
+      </add>
     </changelog>
   </subsection>
   <subsection name="Coyote">