From fea04446d7ec62d55471ebf079104c56a466ef88 Mon Sep 17 00:00:00 2001 From: Thomas Mortagne <thomas.mortagne@gmail.com> Date: Thu, 6 Feb 2025 15:09:33 +0100 Subject: [PATCH] XWIKI-22862: Provider a jakarta version of SessionCreatedEvent and SessionDestroyedEvent --- .../xwiki/container/servlet/events/SessionCreatedEvent.java | 2 ++ .../xwiki/container/servlet/events/SessionDestroyedEvent.java | 2 ++ .../xwiki/container/servlet/internal/HttpSessionManager.java | 4 ++++ .../container/servlet/internal/HttpSessionManagerTest.java | 4 ++++ 4 files changed, 12 insertions(+) diff --git a/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/main/java/org/xwiki/container/servlet/events/SessionCreatedEvent.java b/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/main/java/org/xwiki/container/servlet/events/SessionCreatedEvent.java index b8e8f9df2c3..1e685617fe1 100644 --- a/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/main/java/org/xwiki/container/servlet/events/SessionCreatedEvent.java +++ b/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/main/java/org/xwiki/container/servlet/events/SessionCreatedEvent.java @@ -40,7 +40,9 @@ * @version $Id$ * @since 14.5 * @since 14.4.1 + * @deprecated use {@link HttpSessionCreatedEvent} instead */ +@Deprecated(since = "17.1.0RC1") public class SessionCreatedEvent implements Event { @Override diff --git a/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/main/java/org/xwiki/container/servlet/events/SessionDestroyedEvent.java b/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/main/java/org/xwiki/container/servlet/events/SessionDestroyedEvent.java index 02809224d9f..a5b85faa9f4 100644 --- a/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/main/java/org/xwiki/container/servlet/events/SessionDestroyedEvent.java +++ b/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/main/java/org/xwiki/container/servlet/events/SessionDestroyedEvent.java @@ -40,7 +40,9 @@ * @version $Id$ * @since 14.5 * @since 14.4.1 + * @deprecated use {@link HttpSessionDestroyedEvent} instead */ +@Deprecated(since = "17.1.0RC1") public class SessionDestroyedEvent implements Event { @Override diff --git a/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/main/java/org/xwiki/container/servlet/internal/HttpSessionManager.java b/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/main/java/org/xwiki/container/servlet/internal/HttpSessionManager.java index 6675f84785f..48c571d1fbb 100644 --- a/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/main/java/org/xwiki/container/servlet/internal/HttpSessionManager.java +++ b/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/main/java/org/xwiki/container/servlet/internal/HttpSessionManager.java @@ -34,6 +34,8 @@ import org.xwiki.component.phase.Disposable; import org.xwiki.component.phase.Initializable; import org.xwiki.component.phase.InitializationException; +import org.xwiki.container.servlet.events.HttpSessionCreatedEvent; +import org.xwiki.container.servlet.events.HttpSessionDestroyedEvent; import org.xwiki.container.servlet.events.SessionCreatedEvent; import org.xwiki.container.servlet.events.SessionDestroyedEvent; import org.xwiki.jakartabridge.servlet.JakartaServletBridge; @@ -80,6 +82,7 @@ public void sessionCreated(HttpSessionEvent se) { HttpSession session = se.getSession(); this.sessionsList.add(session); + this.observationManager.notify(new HttpSessionCreatedEvent(), session, null); // This event is expected to be associated with a javax version of the session this.observationManager.notify(new SessionCreatedEvent(), JakartaServletBridge.toJavax(session), null); } @@ -89,6 +92,7 @@ public void sessionDestroyed(HttpSessionEvent se) { HttpSession session = se.getSession(); this.sessionsList.remove(session); + this.observationManager.notify(new HttpSessionDestroyedEvent(), session, null); // This event is expected to be associated with a javax version of the session this.observationManager.notify(new SessionDestroyedEvent(), JakartaServletBridge.toJavax(session), null); } diff --git a/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/test/java/org/xwiki/container/servlet/internal/HttpSessionManagerTest.java b/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/test/java/org/xwiki/container/servlet/internal/HttpSessionManagerTest.java index a08b6cde3c0..c856d942551 100644 --- a/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/test/java/org/xwiki/container/servlet/internal/HttpSessionManagerTest.java +++ b/xwiki-platform-core/xwiki-platform-container/xwiki-platform-container-servlet/src/test/java/org/xwiki/container/servlet/internal/HttpSessionManagerTest.java @@ -26,6 +26,8 @@ import org.junit.jupiter.api.Test; import org.xwiki.component.manager.ComponentLifecycleException; +import org.xwiki.container.servlet.events.HttpSessionCreatedEvent; +import org.xwiki.container.servlet.events.HttpSessionDestroyedEvent; import org.xwiki.container.servlet.events.SessionCreatedEvent; import org.xwiki.container.servlet.events.SessionDestroyedEvent; import org.xwiki.jakartabridge.servlet.JakartaServletBridge; @@ -71,10 +73,12 @@ void sessionCreatedAndDestroyed() this.httpSessionManager.sessionCreated(httpSessionEvent); assertEquals(1, this.httpSessionManager.getSessionList().size()); assertEquals(jakartaSession, this.httpSessionManager.getSessionList().get(0)); + verify(this.observationManager).notify(any(HttpSessionCreatedEvent.class), eq(jakartaSession), isNull()); verify(this.observationManager).notify(any(SessionCreatedEvent.class), eq(javaxSession), isNull()); this.httpSessionManager.sessionDestroyed(httpSessionEvent); assertTrue(this.httpSessionManager.getSessionList().isEmpty()); + verify(this.observationManager).notify(any(HttpSessionDestroyedEvent.class), eq(jakartaSession), isNull()); verify(this.observationManager).notify(any(SessionDestroyedEvent.class), eq(javaxSession), isNull()); } -- GitLab