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 b178bd68a289..93aa8c7b8793 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 @@ -13,6 +13,7 @@ package org.eclipse.jetty.server.session; +import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.function.Function; @@ -28,7 +29,7 @@ /** * DefaultSessionCache * - * A session store that keeps its sessions in memory in a concurrent map + * A session store that keeps its sessions in memory within a concurrent map */ @ManagedObject public class DefaultSessionCache extends AbstractSessionCache @@ -38,7 +39,7 @@ public class DefaultSessionCache extends AbstractSessionCache /** * The cache of sessions in a concurrent map */ - protected ConcurrentMap _sessions = new ConcurrentHashMap<>(); + private final ConcurrentMap _sessions; private final CounterStatistic _stats = new CounterStatistic(); @@ -46,8 +47,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 sessions The session map implementation to use + */ + public DefaultSessionCache(SessionHandler manager, ConcurrentMap sessions) { super(manager); + _sessions = Objects.requireNonNull(sessions, "Session Map may not be null"); } /**