Package nablarch.fw.handler
Class MethodBinding<TData,TResult>
java.lang.Object
nablarch.fw.handler.MethodBinding<TData,TResult>
- Type Parameters:
TData
- 入力データの型TResult
- 結果データの型
- All Implemented Interfaces:
Handler<TData,
,TResult> HandlerWrapper<TData,
TResult>
- Direct Known Subclasses:
HttpMethodBinding
,RecordTypeBinding
public abstract class MethodBinding<TData,TResult>
extends Object
implements HandlerWrapper<TData,TResult>
メソッドレベルのディスパッチ機能を実装する際に継承する抽象基底クラス。
- Author:
- Iwauo Tajima
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptiongetDelegates
(TData data, ExecutionContext context) このラッパーが処理を移譲するオブジェクトのリストを返す。 対象となるオブジェクトが存在しない場合は空の配列を返す。protected Method
getHandleMethod
(String name) 委譲対象オブジェクトのメソッドの中から、与えられたメソッド名をもち、 かつ、Handler.handle() メソッドと互換なシグニチャを持てばtrueを返す。 すなわち、以下の条件を満たすメソッドを返す。protected abstract Method
getMethodBoundTo
(TData data, ExecutionContext ctx) 入力データおよび実行コンテキストの内容に応じて、委譲対象のメソッドを決定する。handle
(TData req, ExecutionContext ctx) getMethodBoundTo() で取得したメソッドに対して後続処理を委譲し、 その結果を返す。protected boolean
qualifiesAsHandler
(Method method) 与えられたメソッドがhandle()メソッドと互換なシグニチャを持てばtrueを返す。protected void
saveBoundClassAndMethodToRequestScope
(ExecutionContext context, Class<?> clazz, Method method) ディスパッチ先のクラスとメソッドをリクエストスコープに記録する。
-
Field Details
-
Constructor Details
-
MethodBinding
コンストラクタ。- Parameters:
delegate
- 委譲対象となるオブジェクト
-
-
Method Details
-
getMethodBoundTo
入力データおよび実行コンテキストの内容に応じて、委譲対象のメソッドを決定する。- Parameters:
data
- 入力データctx
- 実行コンテキスト- Returns:
- 委譲対象メソッド
-
getHandleMethod
委譲対象オブジェクトのメソッドの中から、与えられたメソッド名をもち、 かつ、Handler.handle() メソッドと互換なシグニチャを持てばtrueを返す。 すなわち、以下の条件を満たすメソッドを返す。1. 引数で渡された文字列と同じメソッド名をもつ。(大文字小文字は同一視) 2. メソッドの修飾子がパブリックかつ非スタティックである。 3. 引数を2つもち、第2引数の型がExecutionContextである。
なお、該当するメソッドが存在しなかった場合はnullを返す。- Parameters:
name
- 委譲対象となるメソッド名- Returns:
- 委譲対象となるメソッド (該当するメソッドが存在しなかった場合はnull)
-
handle
getMethodBoundTo() で取得したメソッドに対して後続処理を委譲し、 その結果を返す。- Specified by:
handle
in interfaceHandler<TData,
TResult> - Parameters:
req
- 入力オブジェクトctx
- 実行コンテキスト- Returns:
- 処理結果オブジェクト
- Throws:
Result.NotFound
- 入力データに対応するメソッドが存在しない場合。
-
saveBoundClassAndMethodToRequestScope
protected void saveBoundClassAndMethodToRequestScope(ExecutionContext context, Class<?> clazz, Method method) ディスパッチ先のクラスとメソッドをリクエストスコープに記録する。- Parameters:
context
- コンテキストclazz
- 委譲先のクラスmethod
- 委譲先のメソッド
-
getDelegates
このラッパーが処理を移譲するオブジェクトのリストを返す。 対象となるオブジェクトが存在しない場合は空の配列を返す。- Specified by:
getDelegates
in interfaceHandlerWrapper<TData,
TResult> - Parameters:
data
- ハンドラに対する入力データcontext
- 実行コンテキスト- Returns:
- 内包するオブジェクト。
-
qualifiesAsHandler
与えられたメソッドがhandle()メソッドと互換なシグニチャを持てばtrueを返す。- Parameters:
method
- 検証対象のメソッド- Returns:
- 与えられたメソッドのシグニチャがhandle()と互換ならtrue。
-