From bc3fa13bbad63d446fe1c72f2f2b9940d60ee3e4 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 9 Sep 2021 07:42:55 -0500 Subject: [PATCH] Issue #6752 - Extensible DefaultSessionCache map implementation Signed-off-by: Joakim Erdfelt --- .../jetty/server/session/DefaultSessionCache.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/DefaultSessionCache.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/DefaultSessionCache.java index a834cc6c6c2d..bf29e0af39c5 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/DefaultSessionCache.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/DefaultSessionCache.java @@ -14,6 +14,7 @@ package org.eclipse.jetty.server.session; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; import java.util.function.Function; import javax.servlet.http.HttpServletRequest; @@ -27,7 +28,7 @@ /** * DefaultSessionCache * - * A session store that keeps its sessions in memory in a hashmap + * A session store that keeps its sessions in memory within a concurrent map */ @ManagedObject public class DefaultSessionCache extends AbstractSessionCache @@ -37,7 +38,7 @@ public class DefaultSessionCache extends AbstractSessionCache /** * The cache of sessions in a hashmap */ - protected ConcurrentHashMap _sessions = new ConcurrentHashMap<>(); + private final ConcurrentMap _sessions; private final CounterStatistic _stats = new CounterStatistic(); @@ -45,8 +46,18 @@ public class DefaultSessionCache extends AbstractSessionCache * @param manager The SessionHandler related to this SessionCache */ public DefaultSessionCache(SessionHandler manager) + { + this(manager, new ConcurrentHashMap<>()); + } + + /** + * @param manager The SessionHandler related to this SessionCache + * @param sessionMap The session map implementation to use + */ + public DefaultSessionCache(SessionHandler manager, ConcurrentMap sessionMap) { super(manager); + this._sessions = sessionMap; } /**