TData
- 入力データの型TResult
- 結果データの型public abstract class MethodBinding<TData,TResult> extends java.lang.Object implements HandlerWrapper<TData,TResult>
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
SCOPE_VAR_NAME_BOUND_CLASS
ディスパッチ先の
Class オブジェクトをリクエストスコープに保存するときのキー名。 |
static java.lang.String |
SCOPE_VAR_NAME_BOUND_METHOD
ディスパッチ先の
Method オブジェクトをリクエストスコープに保存するときのキー名。 |
Constructor and Description |
---|
MethodBinding(java.lang.Object delegate)
コンストラクタ。
|
Modifier and Type | Method and Description |
---|---|
java.util.List<java.lang.Object> |
getDelegates(TData data,
ExecutionContext context)
このラッパーが処理を移譲するオブジェクトのリストを返す。
対象となるオブジェクトが存在しない場合は空の配列を返す。
|
protected java.lang.reflect.Method |
getHandleMethod(java.lang.String name)
委譲対象オブジェクトのメソッドの中から、与えられたメソッド名をもち、
かつ、Handler.handle() メソッドと互換なシグニチャを持てばtrueを返す。
すなわち、以下の条件を満たすメソッドを返す。
|
protected abstract java.lang.reflect.Method |
getMethodBoundTo(TData data,
ExecutionContext ctx)
入力データおよび実行コンテキストの内容に応じて、委譲対象のメソッドを決定する。
|
TResult |
handle(TData req,
ExecutionContext ctx)
getMethodBoundTo() で取得したメソッドに対して後続処理を委譲し、
その結果を返す。
|
protected boolean |
qualifiesAsHandler(java.lang.reflect.Method method)
与えられたメソッドがhandle()メソッドと互換なシグニチャを持てばtrueを返す。
|
protected void |
saveBoundClassAndMethodToRequestScope(ExecutionContext context,
java.lang.Class<?> clazz,
java.lang.reflect.Method method)
ディスパッチ先のクラスとメソッドをリクエストスコープに記録する。
|
public static final java.lang.String SCOPE_VAR_NAME_BOUND_CLASS
Class
オブジェクトをリクエストスコープに保存するときのキー名。public static final java.lang.String SCOPE_VAR_NAME_BOUND_METHOD
Method
オブジェクトをリクエストスコープに保存するときのキー名。public MethodBinding(java.lang.Object delegate)
delegate
- 委譲対象となるオブジェクトprotected abstract java.lang.reflect.Method getMethodBoundTo(TData data, ExecutionContext ctx)
data
- 入力データctx
- 実行コンテキストprotected java.lang.reflect.Method getHandleMethod(java.lang.String name)
1. 引数で渡された文字列と同じメソッド名をもつ。(大文字小文字は同一視) 2. メソッドの修飾子がパブリックかつ非スタティックである。 3. 引数を2つもち、第2引数の型がExecutionContextである。なお、該当するメソッドが存在しなかった場合はnullを返す。
name
- 委譲対象となるメソッド名public TResult handle(TData req, ExecutionContext ctx) throws Result.NotFound
handle
in interface Handler<TData,TResult>
req
- 入力オブジェクトctx
- 実行コンテキストResult.NotFound
- 入力データに対応するメソッドが存在しない場合。protected void saveBoundClassAndMethodToRequestScope(ExecutionContext context, java.lang.Class<?> clazz, java.lang.reflect.Method method)
context
- コンテキストclazz
- 委譲先のクラスmethod
- 委譲先のメソッドpublic java.util.List<java.lang.Object> getDelegates(TData data, ExecutionContext context)
getDelegates
in interface HandlerWrapper<TData,TResult>
data
- ハンドラに対する入力データcontext
- 実行コンテキストprotected boolean qualifiesAsHandler(java.lang.reflect.Method method)
method
- 検証対象のメソッド