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