nablarch.fw.handler
クラス DispatchHandler<TData,TResult,TSelf extends nablarch.fw.Handler<TData,TResult>>

java.lang.Object
  上位を拡張 nablarch.fw.handler.DispatchHandler<TData,TResult,TSelf>
型パラメータ:
TData - ハンドラに対する入力オブジェクトの型
TResult - ハンドラの処理結果オブジェクトの型
TSelf - 具象ハンドラの型
すべての実装されたインタフェース:
nablarch.fw.Handler<TData,TResult>
直系の既知のサブクラス:
RequestPathJavaPackageMapping

public abstract class DispatchHandler<TData,TResult,TSelf extends nablarch.fw.Handler<TData,TResult>>
extends java.lang.Object
implements nablarch.fw.Handler<TData,TResult>

ハンドラキューの委譲チェインとは独立したルールに従って、 ハンドラのディスパッチを行うハンドラ(ディスパッチャ)


コンストラクタの概要
DispatchHandler()
           
 
メソッドの概要
protected  nablarch.fw.Handler<TData,TResult> createHandlerFor(java.lang.Object delegate, nablarch.fw.ExecutionContext ctx)
          渡されたインスタンスからハンドラインスタンスを作成して返す。
protected abstract  java.lang.Class<?> getHandlerClass(TData input, nablarch.fw.ExecutionContext context)
          処理を委譲するハンドラの型を決定する。
 TResult handle(TData req, nablarch.fw.ExecutionContext ctx)
           このクラスの実装では、 #getHandlerClass() で指定されるクラスのインスタンスを生成し、 ハンドラキューに追加した後、後続のハンドラに処理を委譲する。
 TSelf setImmediate(boolean immediate)
          ディスパッチされたハンドラの実行タイミングを指定する。
protected  void writeDispatchingClassLog(TData data, nablarch.fw.ExecutionContext context, java.lang.String fqn)
          アクセスログにディスパッチ先クラスを出力する。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

DispatchHandler

public DispatchHandler()
メソッドの詳細

getHandlerClass

protected abstract java.lang.Class<?> getHandlerClass(TData input,
                                                      nablarch.fw.ExecutionContext context)
                                               throws java.lang.ClassNotFoundException
処理を委譲するハンドラの型を決定する。

パラメータ:
input - 入力データ
context - 実行コンテキスト
戻り値:
処理を委譲するハンドラ
例外:
java.lang.ClassNotFoundException - 指定されたクラスが存在しなかった場合。

handle

public TResult handle(TData req,
                      nablarch.fw.ExecutionContext ctx)
このクラスの実装では、 #getHandlerClass() で指定されるクラスのインスタンスを生成し、 ハンドラキューに追加した後、後続のハンドラに処理を委譲する。 ハンドラの追加位置はimmediateの値に従って以下のように変化する。
   immediate = true : ハンドラキューの先頭に追加。(即時に実行される。)
   immediate = false: ハンドラキューの末尾に追加。 
 

定義:
インタフェース nablarch.fw.Handler<TData,TResult> 内の handle

createHandlerFor

protected nablarch.fw.Handler<TData,TResult> createHandlerFor(java.lang.Object delegate,
                                                              nablarch.fw.ExecutionContext ctx)
渡されたインスタンスからハンドラインスタンスを作成して返す。 指定されたクラスがHandlerインターフェースを実装している場合は そのインスタンスをキャストして返す。 対象のクラスがハンドラインターフェースを実装していない場合でも、 MethodBinderが実行コンテキストに設定されていれば、それを使用して Handlerインターフェースのラッパーを作成して返す。 MethodBinderも存在しない場合はnullを返す。

パラメータ:
delegate - インスタンス
ctx - 実行コンテキスト
戻り値:
ハンドラインスタンス

setImmediate

public TSelf setImmediate(boolean immediate)
ディスパッチされたハンドラの実行タイミングを指定する。

パラメータ:
immediate - trueの場合は、ディスパッチされたハンドラをハンドラキューの先端に追加する。 falseの場合は、ディスパッチされたハンドラをハンドラキューの最後尾に追加する。
戻り値:
このオブジェクト自体

writeDispatchingClassLog

protected void writeDispatchingClassLog(TData data,
                                        nablarch.fw.ExecutionContext context,
                                        java.lang.String fqn)
アクセスログにディスパッチ先クラスを出力する。 デフォルトでは何もしない。 必要に応じてオーバーライドすること。

パラメータ:
data - 入力データオブジェクト
context - 実行コンテキスト
fqn - ディスパッチ先クラスの完全修飾クラス名