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

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

package nablarch.fw.web.servlet;

import nablarch.fw.web.HttpCookie;
import nablarch.fw.web.HttpRequest;

import javax.servlet.ServletInputStream;
import javax.servlet.http.Cookie;
import java.io.IOException;
import java.util.Map;
import java.util.regex.Pattern;

/**
 * サーブレットのHTTPリクエスト処理に関連するオブジェクト
 * (HttpServletRequest/HttpServletResponse/ServletContext)への参照を
 * 集約するクラス。
 * 
 * @author Iwauo Tajima 
 */
public class HttpRequestWrapper extends HttpRequest {

    /** サーブレットリクエスト */
    private final NablarchHttpServletRequestWrapper servletRequest;

    /** HttpCookie */
    private final HttpCookie httpCookie;

    /**
     * コンストラクタ
     * @param req サーブレットリクエスト
     */
    public HttpRequestWrapper(final NablarchHttpServletRequestWrapper req) {

        servletRequest  = req;
        
        final String contextPath = req.getContextPath();
        final String requestUri = req.getRequestURI().replaceFirst(Pattern.quote(contextPath), "");
        setRequestUri(requestUri);

        httpCookie = new HttpCookie();
        Cookie[] cookies = servletRequest.getCookies();
        if (cookies != null) {
            for (Cookie cookie : cookies) {
                httpCookie.put(cookie.getName(), cookie.getValue());
            }
        }
    }

    @Override
    public String getMethod() {
        return servletRequest.getMethod().trim();
    }

    @Override
    public String getHttpVersion() {
        return servletRequest.getProtocol().trim();
    }

    @Override
    public Map getParamMap() {
        return servletRequest.getParameterMap();
    }

    @Override
    public String[] getParam(final String name) {
        return servletRequest.getParameterMap().get(name);
    }

    @Override
    public HttpRequest setParam(final String name, final String... params) {
        servletRequest.getParameterMap().put(name, params);
        return this;
    }

    @Override
    public HttpRequest setParamMap(final Map params) {
        servletRequest.setParamMap(params);
        return this;
    }

    @Override
    public Map getHeaderMap() {
        return servletRequest.getHeaderMap();
    }

    @Override
    public String getHeader(final String headerName) {
        return servletRequest.getHeader(headerName);
    }

    @Override
    public HttpCookie getCookie() {
        return httpCookie;
    }

    /**
     * 入力ストリームを取得する。
* * @return 入力ストリーム */ public ServletInputStream getInputStream() { try { return servletRequest.getInputStream(); } catch (IOException e) { throw new nablarch.fw.results.InternalError(e); } } /** * Content-Typeを取得する。
* * @return Content-Type */ public String getContentType() { final String type1 = servletRequest.getHeader("Content-Type"); final String type2 = servletRequest.getContentType(); if (type1 == null) { return type2; } if (type2 == null) { return type1; } return type1.length() <= type2.length() ? type2 : type1; } /** * Content-Lengthを取得する。
* * @return Content-Length */ public int getContentLength() { return servletRequest.getContentLength(); } /** * エンコーディングを取得する。
* * @return エンコーディング */ public String getCharacterEncoding() { return servletRequest.getCharacterEncoding(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy