package com.pgf.mqspring.component; import java.text.MessageFormat; import org.springframework.context.support.ResourceBundleMessageSource; import com.pgf.mqspring.constant.MqSpringMessageId; /** * MessageSource実装クラス *

* メッセージIdに紐づくメッセージを取得する。 * */ public class MqSpringMessageSourceComponent extends ResourceBundleMessageSource { /** メッセージフォーマット */ private static final String MESSAGE_FORMAT = "[{0}] [{1}]:{2}"; /** デフォルトメッセージフォーマット */ private static final String DEFAULT_FORMAT = "{0}の取得に失敗しました。"; /** アプリケーション名 */ private final String appName; /** コンストラクタ */ public MqSpringMessageSourceComponent(String appName) { this.appName = appName; } /** * メッセージ取得 *

* 基底クラス.getMessageを実行し、メッセージを取得する。以下引数。
*  ・引数のメッセージID.name()
*  ・引数の可変長置換文字列
*  ・引数のメッセージID.name()+"の取得に失敗しました。"
*  ・基底クラス.getDefaultLocale()
* 以下の形式でメッセージを返却する。
* メッセージが存在する場合
*  "[アプリケーション名] ["+引数のメッセージID.name()+"]:"+メッセージ
* メッセージが存在しない場合
*  "[アプリケーション名] ["+引数のメッセージID.name()+"]:"+引数のメッセージID.name()+"の取得に失敗しました。"
* * @param messageId メッセージID * @param args 可変長置換文字列 * @return メッセージIdに紐づくメッセージ */ public String getMessage(MqSpringMessageId messageId, Object... args) { String rawMessage = super.getMessage(messageId.name(), args, MessageFormat.format(DEFAULT_FORMAT, messageId), getDefaultLocale()); return MessageFormat.format(MESSAGE_FORMAT, appName, messageId.name(), rawMessage); } }