/*
 * Copyright (c) 2014, 2020 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package org.glassfish.grizzly.servlet;

import org.glassfish.grizzly.http.Cookie;
import org.glassfish.grizzly.http.server.DefaultSessionManager;
import org.glassfish.grizzly.http.server.Request;
import org.glassfish.grizzly.http.server.Session;
import org.glassfish.grizzly.http.server.SessionManager;
import org.glassfish.grizzly.http.server.util.Globals;

The Servlet-aware SessionManager implementation.
/** * The Servlet-aware {@link SessionManager} implementation. */
public class ServletSessionManager implements SessionManager {
Returns:DefaultSessionManager singleton
/** * @return <tt>DefaultSessionManager</tt> singleton */
public static SessionManager instance() { return LazyHolder.INSTANCE; } // Lazy initialization of ServletSessionManager private static class LazyHolder { private static final ServletSessionManager INSTANCE = new ServletSessionManager(); } private final SessionManager defaultManager = DefaultSessionManager.instance(); private String sessionCookieName = Globals.SESSION_COOKIE_NAME; private ServletSessionManager() { } @Override public Session getSession(final Request request, final String requestedSessionId) { return defaultManager.getSession(request, requestedSessionId); } @Override public Session createSession(final Request request) { return defaultManager.createSession(request); } @Override public String changeSessionId(final Request request, final Session session) { return defaultManager.changeSessionId(request, session); } @Override public void configureSessionCookie(final Request request, final Cookie cookie) { defaultManager.configureSessionCookie(request, cookie); final HttpServletRequestImpl servletRequest = ServletHandler.getServletRequest(request); assert servletRequest != null; final jakarta.servlet.SessionCookieConfig cookieConfig = servletRequest.getContextImpl().getSessionCookieConfig(); if (cookieConfig.getDomain() != null) { cookie.setDomain(cookieConfig.getDomain()); } if (cookieConfig.getPath() != null) { cookie.setPath(cookieConfig.getPath()); } if (cookieConfig.getComment() != null) { cookie.setVersion(1); cookie.setComment(cookieConfig.getComment()); } cookie.setSecure(cookieConfig.isSecure()); cookie.setHttpOnly(cookieConfig.isHttpOnly()); cookie.setMaxAge(cookieConfig.getMaxAge()); } @Override public void setSessionCookieName(final String name) { if (name != null && !name.isEmpty()) { sessionCookieName = name; } } @Override public String getSessionCookieName() { return sessionCookieName; } }