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

nablarch.fw.web.servlet.SessionAttributeMap Maven / Gradle / Ivy

The newest version!
package nablarch.fw.web.servlet;

import java.util.Collections;
import java.util.Enumeration;
import java.util.List;

import jakarta.servlet.http.HttpSession;

import nablarch.core.util.map.AttributeMap;
import nablarch.core.util.map.EnumerableIterator;

/**
 * {@link HttpSession}オブジェクトに対してMapインターフェースを与えるラッパー。
 *
 * @author Iwauo Tajima 
 */
public class SessionAttributeMap extends AttributeMap {

    /**
     * HTTPセッションに対する、Mapインターフェースへのラッパーを作成する。
     * @param servletSession HTTPセッションオブジェクト
     */
    public SessionAttributeMap(HttpSession servletSession) {
        this.session = servletSession;
    }

    /** HTTPセッションオブジェクト */
    private HttpSession session;

    /**
     * このMapの実体であるHTTPSessionオブジェクトを返す。
     * @return このMapの実体であるHTTPSession
     */
    public HttpSession getBackend() {
        return session;
    }

    /**
     * このMapの実体であるHTTPSessionオブジェクトを設定する。
     * @param session このMapの実体であるHTTPSession
     * @return このオブジェクト自体
     */
    public SessionAttributeMap setBackend(HttpSession session) {
        this.session = session;
        return this;
    }


    /** {@inheritDoc} */
    @Override
    public Object getAttribute(String name) {
        try {
            return session.getAttribute(name);
        } catch (IllegalStateException ignored) {
            // 並行するスレッドによりセッションがinvalidate()された場合など、
            // 通常の操作で発生しうるため、この例外は無視する。
            return null;
        }
    }

    /** {@inheritDoc} */
    @Override
    @SuppressWarnings("unchecked")
    public Enumeration getAttributeNames() {
        try {
            return session.getAttributeNames();
        } catch (IllegalStateException ignored) {
            // 並行するスレッドによりセッションがinvalidate()された場合など、
            // 通常の操作で発生しうるため、この例外は無視する。
            List empty = Collections.emptyList();
            return new EnumerableIterator(empty.iterator());
        }
    }

    /** {@inheritDoc} */
    @Override
    public void setAttribute(String name, Object value) {
        try {
            session.setAttribute(name, value);
        } catch (IllegalStateException ignored) {
            // 並行するスレッドによりセッションがinvalidate()された場合など、
            // 通常の操作で発生しうるため、この例外は無視する。
            return;
        }
    }

    /** {@inheritDoc} */
    @Override
    public void removeAttribute(String name) {
        try {
            session.removeAttribute(name);
        } catch (IllegalStateException ignored) {
            // 並行するスレッドによりセッションがinvalidate()された場合など、
            // 通常の操作で発生しうるため、この例外は無視する。
            return;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy