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 - 検証対象のメソッド