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

nablarch.fw.web.MockHttpCookie Maven / Gradle / Ivy

The newest version!
package nablarch.fw.web;

import java.util.Map;
import java.util.regex.Pattern;

import nablarch.core.util.StringUtil;
import nablarch.core.util.annotation.Published;

/**
 * {@link HttpCookie}のテストFW用モック実装クラス。
 *
 * @author Hisaaki Shioiri
 */
@Published(tag = "architect")
public class MockHttpCookie extends HttpCookie {

    /** 区切り文字 */
    private static final Pattern SEPARATOR = Pattern.compile(";[ ]?");

    /**
     * Cookieの値を文字列に変換する。
     * 

* 変換後の値は、HTTPリクエストのCookieヘッダーに埋め込む形式でフォーマットする。 * * @return 文字列に変換した値 */ @Override public String toString() { final Map cookies = getDelegateMap(); final StringBuilder result = new StringBuilder(); for (Entry entry : cookies.entrySet()) { if (result.length() != 0) { result.append("; "); } result.append(entry.getKey()) .append('=') .append(entry.getValue()); } return result.toString(); } /** * 文字列を{@link HttpCookie}に変換する。 * * @param cookieStr HTTPリクエストのCookieヘッダー形式の文字列 * @return {@link HttpCookie} */ public static HttpCookie valueOf(final String cookieStr) { final HttpCookie result = new MockHttpCookie(); if (StringUtil.isNullOrEmpty(cookieStr)) { return result; } // キーにも値にも「;」は許容されないので、単純に「;」で分割 final String[] cookies = SEPARATOR.split(cookieStr); for (String cookie : cookies) { // Cookieのキー値には、「=」は許容されないので単純に「=」で分割可能 final int index = cookie.indexOf('='); if (index == -1) { throw new IllegalArgumentException("invalid format. Cookie String=[" + cookieStr + ']'); } final String key = cookie.substring(0, index); final String value = cookie.substring(index + 1); result.put(key, value); } return result; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy