All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nablarch.common.web.handler.threadcontext.TimeZoneAttributeInHttpCookie Maven / Gradle / Ivy

package nablarch.common.web.handler.threadcontext;

import javax.servlet.http.Cookie;

import nablarch.core.util.annotation.Published;
import nablarch.fw.ExecutionContext;
import nablarch.fw.web.HttpRequest;
import nablarch.fw.web.servlet.ServletExecutionContext;

/**
 * クッキーを使用してタイムゾーンの保持を行うクラス。
 *
 * クッキーのhttpOnly属性はアプリケーションで使用しているServlet APIがサポートしている場合のみ設定する。
 *
 * @author Kiyohito Itoh
 */
@Published(tag = "architect")
public class TimeZoneAttributeInHttpCookie extends TimeZoneAttributeInHttpSupport {

    /** クッキー処理のサポート */
    private final CookieSupport cookieSupport
            = new CookieSupport(ExecutionContext.FW_PREFIX + "timeZone");

    /**
     * タイムゾーンを保持するクッキーの名前を設定する。
     * @param cookieName タイムゾーンを保持するクッキーの名前
     */
    public void setCookieName(String cookieName) {
        cookieSupport.setCookieName(cookieName);
    }

    /**
     * タイムゾーンを保持するクッキーが送信されるURIのパス階層を設定する。
     * @param cookiePath タイムゾーンを保持するクッキーが送信されるURIのパス階層
     */
    public void setCookiePath(String cookiePath) {
        cookieSupport.setCookiePath(cookiePath);
    }

    /**
     * タイムゾーンを保持するクッキーが送信されるドメイン階層を設定する。
     * @param cookieDomain タイムゾーンを保持するクッキーが送信されるドメイン階層
     */
    public void setCookieDomain(String cookieDomain) {
        cookieSupport.setCookieDomain(cookieDomain);
    }

    /**
     * タイムゾーンを保持するクッキーの最長存続期間(秒単位)を設定する。
     * @param cookieMaxAge タイムゾーンを保持するクッキーの最長存続期間(秒単位)
     */
    public void setCookieMaxAge(Integer cookieMaxAge) {
        cookieSupport.setCookieMaxAge(cookieMaxAge);
    }

    /**
     * タイムゾーンを保持するクッキーのsecure属性を設定する。
     * (デフォルトではsecure属性を設定しない)
     * @param secure secure属性を設定するか否か(真の場合、secure属性を設定する)
     */
    public void setCookieSecure(boolean secure) {
        cookieSupport.setCookieSecure(secure);
    }

    /**
     * 保持するクッキーのhttpOnly属性有無を指定する。
     * (デフォルトではサポートしていればhttpOnly属性を設定する)
     * @param httpOnly httpOnly属性を設定するか否か(真の場合、httpOnly属性を設定する)
     */
    public void setCookieHttpOnly(boolean httpOnly) {
        cookieSupport.setCookieHttpOnly(httpOnly);
    }

    @Override
    protected void keepTimeZone(HttpRequest req, ServletExecutionContext ctx, String timeZone) {
        Cookie cookie = cookieSupport.createCookie(ctx, timeZone);
        ctx.getServletResponse().addCookie(cookie);
    }

    @Override
    protected String getKeepingTimeZone(HttpRequest req, ServletExecutionContext ctx) {
        return cookieSupport.getCookieValue(ctx);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy