org.seasar.jms.core.interceptor
クラス SendReturnValueInterceptor

java.lang.Object
  上位を拡張 org.seasar.jms.core.interceptor.AbstractSendMessageInterceptor
      上位を拡張 org.seasar.jms.core.interceptor.SendReturnValueInterceptor
すべての実装されたインタフェース:
Advice, Interceptor, MethodInterceptor

public class SendReturnValueInterceptor
extends AbstractSendMessageInterceptor

ターゲットメソッドの戻り値をJMSメッセージとして送信するインターセプタです。

ターゲットメソッドが例外をスローすることなく終了した場合、MessageSenderを使用してJMSメッセージを送信します。

送信するJMSメッセージはaddMessageFactory(java.lang.Class, java.lang.Class>)によって登録されたMessageFactoryによって作成されます。 MessageFactoryはターゲットメソッドの戻り値型に対応付けることができます。 デフォルトでは次のMessageFactoryが登録されています。

戻り値の型 MessageFactoryの実装クラス
String TextMessageFactory
byte[] BytesMessageFactory
Map MapMessageFactory
Serializable ObjectMessageFactory

どのMessageFactoryが使用されるかは登録される順序に依存します。
ターゲットメソッドの戻り値を代入可能な戻り値型に対応付けられているMessageFactoryを 登録順に探し、最初に見つかったものが選択されます。

デフォルトで登録されているマッピングの場合、ターゲットメソッドがStringを返すと TextMessageFactoryObjectMessageFactoryのどちらでもJMSメッセージを作成できますが、 先に登録されているTextMessageFactoryが選択されます。

作成者:
koichik

フィールドの概要
protected  Map<Class<?>,Class<? extends MessageFactory<? extends Message>>> factories
          MessageFactoryMap
 
クラス org.seasar.jms.core.interceptor.AbstractSendMessageInterceptor から継承されたフィールド
componentDef, container, messageSenderName
 
コンストラクタの概要
SendReturnValueInterceptor()
          インスタンスを構築します。
 
メソッドの概要
 void addMessageFactory(Class<?> returnType, Class<? extends MessageFactory<? extends Message>> messageFactoryClass)
          ターゲットメソッドの戻り値型に対応するJMSメッセージのファクトリのクラスを追加します。
 void clearFactories()
          登録されているMessageFactoryをクリアします。
protected  MessageFactory<?> createMessageFactory(Object returnValue)
          ターゲットメソッドの戻り値型に対応するMessageFactoryを作成して返します。
 Object invoke(MethodInvocation invocation)
          ターゲットメソッドが例外をスローすることなく終了した後にJMSメッセージを送信します。
 
クラス org.seasar.jms.core.interceptor.AbstractSendMessageInterceptor から継承されたメソッド
getMessageSender, initialize, proceed, setContainer, setMessageSenderName
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

factories

protected Map<Class<?>,Class<? extends MessageFactory<? extends Message>>> factories
MessageFactoryMap

コンストラクタの詳細

SendReturnValueInterceptor

public SendReturnValueInterceptor()
インスタンスを構築します。

メソッドの詳細

clearFactories

public void clearFactories()
登録されているMessageFactoryをクリアします。


addMessageFactory

public void addMessageFactory(Class<?> returnType,
                              Class<? extends MessageFactory<? extends Message>> messageFactoryClass)
ターゲットメソッドの戻り値型に対応するJMSメッセージのファクトリのクラスを追加します。

パラメータ:
returnType - ターゲットメソッドの戻り値型
messageFactoryClass - 戻り値型に対応したJMSメッセージのファクトリ

invoke

public Object invoke(MethodInvocation invocation)
              throws Throwable
ターゲットメソッドが例外をスローすることなく終了した後にJMSメッセージを送信します。

パラメータ:
invocation - ターゲットメソッドの呼び出しを表現するオブジェクト
戻り値:
ターゲットメソッドの戻り値
例外:
Throwable - ターゲットメソッドの実行時あるいはJMSメッセージの送信時に例外が発生した場合にスローされます

createMessageFactory

protected MessageFactory<?> createMessageFactory(Object returnValue)
ターゲットメソッドの戻り値型に対応するMessageFactoryを作成して返します。

ターゲットメソッドの戻り値を代入可能な戻り値型に対応付けられているMessageFactoryを 登録順に探し、最初に見つかったMessageFactoryをインスタンス化します。

パラメータ:
returnValue - ターゲットメソッドの戻り値
戻り値:
ターゲットメソッドの戻り値型に対応するMessageFactory
例外:
SIllegalStateException - ターゲットメソッドの戻り値型に対応するMessageFactoryが見つからない場合にスローされます


Copyright © 2005-2009 The Seasar Foundation. All Rights Reserved.