/*
 * JBoss, Home of Professional Open Source.
 * Copyright 2014 Red Hat, Inc., and individual contributors
 * as indicated by the @author tags.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package io.undertow.servlet.spec;

import io.undertow.server.HttpServerExchange;
import io.undertow.server.session.SessionConfig;
import io.undertow.servlet.UndertowServletMessages;

import javax.servlet.SessionCookieConfig;

Author:Stuart Douglas
/** * @author Stuart Douglas */
public class SessionCookieConfigImpl implements SessionCookieConfig, SessionConfig { private final ServletContextImpl servletContext; private final io.undertow.server.session.SessionCookieConfig delegate; private SessionConfig fallback; public SessionCookieConfigImpl(final ServletContextImpl servletContext) { this.servletContext = servletContext; this.delegate = new io.undertow.server.session.SessionCookieConfig(); } @Override public String rewriteUrl(final String originalUrl, final String sessionid) { if(fallback != null) { return fallback.rewriteUrl(originalUrl, sessionid); } return originalUrl; } @Override public void setSessionId(final HttpServerExchange exchange, final String sessionId) { delegate.setSessionId(exchange, sessionId); } @Override public void clearSession(final HttpServerExchange exchange, final String sessionId) { delegate.clearSession(exchange, sessionId); } @Override public String findSessionId(final HttpServerExchange exchange) { String existing = delegate.findSessionId(exchange); if(existing != null) { return existing; } if(fallback != null) { return fallback.findSessionId(exchange); } return null; } @Override public SessionCookieSource sessionCookieSource(HttpServerExchange exchange) { String existing = delegate.findSessionId(exchange); if (existing != null) { return SessionCookieSource.COOKIE; } if(fallback != null) { String id = fallback.findSessionId(exchange); return id != null ? fallback.sessionCookieSource(exchange) : SessionCookieSource.NONE; } return SessionCookieSource.NONE; } public String getName() { return delegate.getCookieName(); } public void setName(final String name) { if(servletContext.isInitialized()) { throw UndertowServletMessages.MESSAGES.servletContextAlreadyInitialized(); } delegate.setCookieName(name); } public String getDomain() { return delegate.getDomain(); } public void setDomain(final String domain) { if(servletContext.isInitialized()) { throw UndertowServletMessages.MESSAGES.servletContextAlreadyInitialized(); } delegate.setDomain(domain); } public String getPath() { return delegate.getPath(); } public void setPath(final String path) { if(servletContext.isInitialized()) { throw UndertowServletMessages.MESSAGES.servletContextAlreadyInitialized(); } delegate.setPath(path); } public String getComment() { return delegate.getComment(); } public void setComment(final String comment) { if(servletContext.isInitialized()) { throw UndertowServletMessages.MESSAGES.servletContextAlreadyInitialized(); } delegate.setComment(comment); } public boolean isHttpOnly() { return delegate.isHttpOnly(); } public void setHttpOnly(final boolean httpOnly) { if(servletContext.isInitialized()) { throw UndertowServletMessages.MESSAGES.servletContextAlreadyInitialized(); } delegate.setHttpOnly(httpOnly); } public boolean isSecure() { return delegate.isSecure(); } public void setSecure(final boolean secure) { if(servletContext.isInitialized()) { throw UndertowServletMessages.MESSAGES.servletContextAlreadyInitialized(); } delegate.setSecure(secure); } public int getMaxAge() { return delegate.getMaxAge(); } public void setMaxAge(final int maxAge) { if(servletContext.isInitialized()) { throw UndertowServletMessages.MESSAGES.servletContextAlreadyInitialized(); } this.delegate.setMaxAge(maxAge); } public SessionConfig getFallback() { return fallback; } public void setFallback(final SessionConfig fallback) { this.fallback = fallback; } }