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

nablarch.integration.messaging.wmq.provider.exception.BasicWmqMessagingExceptionFactory Maven / Gradle / Ivy

package nablarch.integration.messaging.wmq.provider.exception;

import java.util.HashSet;
import java.util.Set;

import nablarch.fw.messaging.MessagingException;
import nablarch.fw.messaging.provider.MessagingExceptionFactory;
import nablarch.fw.messaging.provider.exception.MomConnectionException;

import com.ibm.mq.MQException;
import com.ibm.mq.constants.CMQC;

/**
 * WebSphere MQを使用したメッセージング機能向けの{@link MessagingExceptionFactory}の基本実装クラス。
 * @author Kiyohito Itoh
 */
public class BasicWmqMessagingExceptionFactory implements MessagingExceptionFactory {

    /** 発生した例外がMOM接続に関する問題である場合の理由コード */
    @SuppressWarnings("serial")
    private static final Set REASON_CODES_FOR_MOM_CONNECTION_ERROR
        = new HashSet() {
            {
                add(CMQC.MQRC_CONNECTION_BROKEN);
                add(CMQC.MQRC_CONNECTION_QUIESCING);
                add(CMQC.MQRC_CONNECTION_STOPPING);
                add(CMQC.MQRC_OPEN_FAILED);
                add(CMQC.MQRC_Q_MGR_NOT_AVAILABLE);
                add(CMQC.MQRC_Q_MGR_QUIESCING);
                add(CMQC.MQRC_Q_MGR_STOPPING);
                add(CMQC.MQRC_NO_EXTERNAL_PARTICIPANTS);
                add(CMQC.MQRC_UNEXPECTED_ERROR);
            }
        };

    /**
     * {@inheritDoc}
     * 

* 発生した例外がMOM接続に関する問題である場合は、{@link MomConnectionException}を生成する。 * MOM接続に関する問題でない場合は、{@link MessagingException}を生成する。 *

* 発生した例外がMOM接続に関する問題であるか否かの判定は、 * {@link #isMomConnectionError(Throwable)}メソッドに委譲する。 */ public MessagingException createMessagingException(String message, Throwable cause) { if (isMomConnectionError(cause)) { return new MomConnectionException(message, cause); } return new MessagingException(message, cause); } /** * 発生した例外がMOM接続に関する問題であるか否かを判定する。 *

* 基本実装では、発生した例外がMQExceptionである、かつ下記理由コードの場合にtrueを返す。 *

    *
  • {@link CMQC#MQRC_CONNECTION_BROKEN}
  • *
  • {@link CMQC#MQRC_CONNECTION_QUIESCING}
  • *
  • {@link CMQC#MQRC_CONNECTION_STOPPING}
  • *
  • {@link CMQC#MQRC_OPEN_FAILED}
  • *
  • {@link CMQC#MQRC_Q_MGR_NOT_AVAILABLE}
  • *
  • {@link CMQC#MQRC_Q_MGR_QUIESCING}
  • *
  • {@link CMQC#MQRC_Q_MGR_STOPPING}
  • *
  • {@link CMQC#MQRC_NO_EXTERNAL_PARTICIPANTS}
  • *
  • {@link CMQC#MQRC_UNEXPECTED_ERROR}
  • *
* @param t 発生した例外 * @return 発生した例外がMOM接続に関する問題である場合はtrue */ protected boolean isMomConnectionError(Throwable t) { if (t instanceof MQException) { MQException e = (MQException) t; if (REASON_CODES_FOR_MOM_CONNECTION_ERROR.contains(e.reasonCode)) { return true; } } Throwable cause = t.getCause(); return cause != null && isMomConnectionError(cause); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy