TData - ハンドラに対する入力オブジェクトの型TResult - ハンドラの処理結果オブジェクトの型TSelf - 具象ハンドラの型public abstract class DispatchHandler<TData,TResult,TSelf extends nablarch.fw.Handler<TData,TResult>> extends Object implements nablarch.fw.Handler<TData,TResult>
| Constructor and Description |
|---|
DispatchHandler() |
| Modifier and Type | Method and Description |
|---|---|
protected nablarch.fw.Handler<TData,TResult> |
createHandlerFor(Object delegate,
nablarch.fw.ExecutionContext ctx)
渡されたインスタンスからハンドラインスタンスを作成して返す。
指定されたクラスがHandlerインターフェースを実装している場合は
そのインスタンスをキャストして返す。
対象のクラスがハンドラインターフェースを実装していない場合でも、
MethodBinderが実行コンテキストに設定されていれば、それを使用して
Handlerインターフェースのラッパーを作成して返す。
MethodBinderも存在しない場合はnullを返す。
|
protected abstract Class<?> |
getHandlerClass(TData input,
nablarch.fw.ExecutionContext context)
処理を委譲するハンドラの型を決定する。
|
TResult |
handle(TData req,
nablarch.fw.ExecutionContext ctx)
このクラスの実装では、 #getHandlerClass() で指定されるクラスのインスタンスを生成し、
ハンドラキューに追加した後、後続のハンドラに処理を委譲する。
ハンドラの追加位置は
immediateの値に従って以下のように変化する。 |
void |
setDelegateFactory(DelegateFactory delegateFactory)
ハンドラファクトリを設定する。
明示的に設定されない場合、デフォルト実装として
DefaultDelegateFactoryを使用する。 |
TSelf |
setImmediate(boolean immediate)
ディスパッチされたハンドラの実行タイミングを指定する。
|
protected void |
writeDispatchingClassLog(TData data,
nablarch.fw.ExecutionContext context,
String fqn)
アクセスログにディスパッチ先クラスを出力する。
デフォルトでは何もしない。
必要に応じてオーバーライドすること。
|
protected abstract Class<?> getHandlerClass(TData input, nablarch.fw.ExecutionContext context) throws ClassNotFoundException
input - 入力データcontext - 実行コンテキストClassNotFoundException - 指定されたクラスが存在しなかった場合。public TResult handle(TData req, nablarch.fw.ExecutionContext ctx)
immediateの値に従って以下のように変化する。
immediate = true : ハンドラキューの先頭に追加。(即時に実行される。) immediate = false: ハンドラキューの末尾に追加。
protected nablarch.fw.Handler<TData,TResult> createHandlerFor(Object delegate, nablarch.fw.ExecutionContext ctx)
delegate - インスタンスctx - 実行コンテキストpublic TSelf setImmediate(boolean immediate)
immediate - trueの場合は、ディスパッチされたハンドラをハンドラキューの先端に追加する。
falseの場合は、ディスパッチされたハンドラをハンドラキューの最後尾に追加する。protected void writeDispatchingClassLog(TData data, nablarch.fw.ExecutionContext context, String fqn)
data - 入力データオブジェクトcontext - 実行コンテキストfqn - ディスパッチ先クラスの完全修飾クラス名public void setDelegateFactory(DelegateFactory delegateFactory)
DefaultDelegateFactoryを使用する。delegateFactory - ハンドラファクトリCopyright © 2020. All rights reserved.