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

nablarch.common.web.token.BasicDoubleSubmissionHandler Maven / Gradle / Ivy

package nablarch.common.web.token;

import nablarch.core.message.ApplicationException;
import nablarch.core.message.Message;
import nablarch.core.message.MessageLevel;
import nablarch.core.message.MessageUtil;
import nablarch.core.util.StringUtil;
import nablarch.fw.ExecutionContext;
import nablarch.fw.Handler;
import nablarch.fw.web.HttpErrorResponse;
import nablarch.fw.web.HttpRequest;
import nablarch.fw.web.HttpResponse;
/**
 * {@link DoubleSubmissionHandler}の基本実装クラス。
 * @author Kiyohito Itoh
 */
public class BasicDoubleSubmissionHandler implements DoubleSubmissionHandler {

    /** 二重サブミットと判定した場合の遷移先のリソースパス */
    private String path;
    
    /** 二重サブミットと判定した場合の遷移先画面に表示するエラーメッセージに使用するメッセージID */
    private String messageId;
    
    /** 二重サブミットと判定した場合のレスポンスステータス */
    private int statusCode = 400;
    
    /**
     * 二重サブミットと判定した場合の遷移先のリソースパスを設定する。
* {@link OnDoubleSubmission}アノテーションで個別に指定していない場合は、ここに指定したリソースパスを使用する。 * @param path 二重サブミットと判定した場合の遷移先のリソースパス */ public void setPath(String path) { this.path = path; } /** * 二重サブミットと判定した場合の遷移先画面に表示するエラーメッセージに使用するメッセージIDを設定する。 * {@link OnDoubleSubmission}アノテーションで個別に指定していない場合は、ここに指定したメッセージIDを使用する。 * @param messageId 二重サブミットと判定した場合の遷移先画面に表示するエラーメッセージに使用するメッセージID */ public void setMessageId(String messageId) { this.messageId = messageId; } /** * 二重サブミットと判定した場合のレスポンスステータスを設定する。 * {@link OnDoubleSubmission}アノテーションで個別に指定していない場合は、ここに指定したレスポンスステータスを使用する。 * デフォルトは400。 * @param statusCode 二重サブミットと判定した場合のレスポンスステータス */ public void setStatusCode(int statusCode) { this.statusCode = statusCode; } /** * {@inheritDoc} *
     * {@link HttpErrorResponse}を生成して返す。
     * 
     * {@link OnDoubleSubmission}アノテーションの属性が指定されている場合は、アノテーションの属性を使用する。
     * アノテーションの属性が指定されていない場合は、自身に設定されている値を使用する。
     * 
     * メッセージIDが指定されていない場合は、メッセージの取得を行わない。
     * 
*/ public HttpResponse handle(HttpRequest request, ExecutionContext context, Handler originalHandler, OnDoubleSubmission annotation) { if (!TokenUtil.isValidToken(request, context)) { String usingPath = annotation.path(); if (StringUtil.isNullOrEmpty(usingPath)) { usingPath = path; } String usingMessageId = annotation.messageId(); if (StringUtil.isNullOrEmpty(usingMessageId)) { usingMessageId = messageId; } int usingStatusCode = annotation.statusCode(); if (usingStatusCode == -1) { usingStatusCode = statusCode; } if (usingMessageId == null) { throw new HttpErrorResponse(usingStatusCode, usingPath); } else { Message message = MessageUtil.createMessage(MessageLevel.ERROR, usingMessageId); throw new HttpErrorResponse(usingStatusCode, usingPath, new ApplicationException(message)); } } return originalHandler.handle(request, context); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy