public class ExecutionContext extends HandlerQueueManager<ExecutionContext>
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
FW_PREFIX
各種スコープ上の変数をフレームワークが使用する際に
名前に付けるプレフィックス(予約名)
|
static java.lang.String |
THROWN_APPLICATION_EXCEPTION_KEY
ApplicationException をリクエストスコープから取得する際に使用するキー |
static java.lang.String |
THROWN_EXCEPTION_KEY
例外をリクエストスコープから取得する際に使用するキー
|
Constructor and Description |
---|
ExecutionContext()
デフォルトコンストラクタ
|
ExecutionContext(ExecutionContext original)
元となる実行コンテキストから、新たな実行コンテキストのオブジェクトを作成する。
作成される実行コンテキストの状態は以下の通り。
ハンドラキューには、元のオブジェクトからシャローコピーを作成して設定する。
リクエストスコープには、新規インスタンスを設定する(コピーされない)。
それ以外のフィールドには、元のオブジェクトの参照を設定する。
|
Modifier and Type | Method and Description |
---|---|
void |
clearLastReadData()
この実行コンテキストが最後に読み込んだデータオブジェクトをクリアする。
|
ExecutionContext |
closeReader()
現在使用しているデータリーダを閉じる。
リーダを閉じる際に例外が発生した場合は、ワーニングログを出力し、
処理を継続する。
|
ExecutionContext |
copy()
自身の複製を返す。
複製処理の本体は
copyInternal() に委譲している。 |
protected ExecutionContext |
copyInternal()
自身の複製を返す。
当メソッドが返すインスタンスはレシーバと同じ型でなければいけない。
つまりobj.getClass() == obj.copy().getClass()がtrueでなければいけない。当メソッドをサブクラスでオーバーライドする場合はこの制約に注意して実装すること。 |
<T> T |
findHandler(java.lang.Object data,
java.lang.Class<T> targetType,
java.lang.Class<?> stopType)
ハンドラキュー上の後続ハンドラのうち、
指定されたクラスもしくはインタフェースを実装している直近のハンドラを返す。
該当するハンドラが登録されていなかった場合は
null を返す。 |
ApplicationException |
getApplicationException()
リクエストスコープから
ApplicationException を取得する。
THROWN_APPLICATION_EXCEPTION_KEY キーを使用する。 |
java.lang.Object |
getCurrentRequestObject()
現在処理中のリクエストオブジェクトを取得する。
本メソッドは、またはの処理中にリクエストオブジェクトを取得する際に使用する。
|
java.lang.Object |
getDataProcessedWhenThrown(java.lang.Throwable e)
指定した例外を送出したスレッドが、例外発生時に処理していた入力データを返す。
|
<TData> DataReader<TData> |
getDataReader()
データリーダを取得する。
データリーダが設定されていない場合は、
データリーダファクトリを使用してリーダを生成し、その結果を返す。
ファクトリも設定されていない場合はnullを返す。
|
java.lang.Throwable |
getException()
リクエストスコープから例外を取得する。
THROWN_EXCEPTION_KEY キーを使用する。 |
java.util.List<Handler> |
getHandlerQueue()
現在のハンドラキューの内容を返す。
|
<TData> TData |
getLastReadData()
この実行コンテキストが最後に読み込んだデータオブジェクトを返す。
|
int |
getLastRecordNumber()
データリーダが、現時点で物理的に読み込んでいるレコードのレコード番号を返却する。
本メソッドは、
FileDataReader を使用してファイルを読み込んでいる場合にのみ値を返却する。
FileDataReader以外を使用している場合は0を返す。 |
<TData,TResult> |
getNextHandler()
ハンドラキュー上の次のハンドラを取得する。
|
<T> T |
getRequestScopedVar(java.lang.String varName)
リクエストスコープ上の変数の値を取得する。
|
java.util.Map<java.lang.String,java.lang.Object> |
getRequestScopeMap()
リクエストスコープ上の変数を格納したMapオブジェクトへの参照を返す。
このMapへの変更はリクエストスコープに直接反映される。
|
<T> T |
getSessionScopedVar(java.lang.String varName)
セッションスコープ上の変数の値を取得する。
|
java.util.Map<java.lang.String,java.lang.Object> |
getSessionScopeMap()
セッションスコープ情報を格納したMapオブジェクトへの参照を返す。
このMapへの変更はセッションスコープに直接反映される。
|
<T> T |
getSessionStoredVar(java.lang.String varName)
セッションストア上の変数の値を取得する。
|
java.util.Map<java.lang.String,java.lang.Object> |
getSessionStoreMap()
セッションストア情報を格納したMapオブジェクトへの参照を返す。
このMapへの変更はセッションストアに直接反映される。
|
<TData,TResult> |
handleNext(TData data)
ハンドラキュー上の次のハンドラに処理を委譲する。
|
boolean |
hasNextData()
この実行コンテキスト上のデータリーダから次に読み出すことができるデータが残っているかどうか。
|
boolean |
hasSession()
セッションがあるかどうか。
|
ExecutionContext |
invalidateSession()
現在のリクエストに紐付けられたセッションスコープを無効化する。
|
boolean |
isNewSession()
新規セッションであるかどうか。
|
boolean |
isProcessSucceeded()
処理が正常終了したかどうかを取得する。
|
void |
putDataOnException(java.lang.Throwable e,
java.lang.Object data)
例外に関連するデータを追加する。
指定された例外およびデータはリクエストスコープに保持する。
|
<TData> TData |
readNextData()
この実行コンテキスト上のデータリーダを使用して、次のデータを読み込む。
|
<T> java.util.List<T> |
selectHandlers(java.lang.Object data,
java.lang.Class<T> targetType,
java.lang.Class<?> stopType)
ハンドラキュー上の後続ハンドラのうち、
指定されたクラスもしくはインタフェースを実装しているものを全て返す。
該当するハンドラが登録されていなかった場合は空のリストを返す。
|
void |
setCurrentRequestObject(java.lang.Object currentRequestObject)
現在処理中のリクエストオブジェクトを設定する。
|
<TData> ExecutionContext |
setDataReader(DataReader<TData> reader)
データリーダを設定する。
|
<TData> ExecutionContext |
setDataReaderFactory(DataReaderFactory<TData> factory)
データリーダのファクトリを設定する。
|
void |
setException(java.lang.Throwable e)
リクエストスコープに例外を設定する。
THROWN_EXCEPTION_KEY キーに例外を設定する。
さらに、例外がApplicationException の場合は、
THROWN_APPLICATION_EXCEPTION_KEY キーにも設定する。 |
void |
setLastRecordNumber(int lastRecordNumber)
データリーダが、現時点で物理的に読み込んでいるレコードのレコード番号を設定する。
|
void |
setProcessSucceeded(boolean processSucceeded)
処理が正常終了したかどうかを設定する。
|
ExecutionContext |
setRequestScopedVar(java.lang.String varName,
java.lang.Object varValue)
リクエストスコープ上の変数の値を設定する。
既に定義済みの変数は上書きされる。
|
ExecutionContext |
setRequestScopeMap(java.util.Map<java.lang.String,java.lang.Object> m)
リクエストスコープを設定する。
|
ExecutionContext |
setSessionScopedVar(java.lang.String varName,
java.lang.Object varValue)
セッションスコープ上の変数の値を設定する。
既に定義済みの変数は上書きされる。
|
ExecutionContext |
setSessionScopeMap(java.util.Map<java.lang.String,java.lang.Object> m)
セッションスコープ上の変数を格納したMapを設定する。
|
ExecutionContext |
setSessionStoredVar(java.lang.String varName,
java.lang.Object varValue)
セッションストア上の変数の値を設定する。
既に定義済みの変数は上書きされる。
|
ExecutionContext |
setSessionStoreMap(java.util.Map<java.lang.String,java.lang.Object> m)
セッションストア上の変数を格納したMapを設定する。
|
addHandler, addHandler, addHandler, addHandler, addHandler, addHandlers, clearHandlers, getHandlerOf, getMethodBinder, setHandlerQueue, setMethodBinder
public static final java.lang.String FW_PREFIX
public static final java.lang.String THROWN_EXCEPTION_KEY
public static final java.lang.String THROWN_APPLICATION_EXCEPTION_KEY
ApplicationException
をリクエストスコープから取得する際に使用するキー@Published(tag="architect") public ExecutionContext()
public ExecutionContext(ExecutionContext original)
original
- 元となる実行コンテキストpublic java.util.List<Handler> getHandlerQueue()
HandlerQueueManager
getHandlerQueue
in class HandlerQueueManager<ExecutionContext>
@Published public <TData,TResult> TResult handleNext(TData data) throws NoMoreHandlerException, java.lang.ClassCastException
TData
- 処理対象データの型TResult
- 処理結果データの型data
- 処理対象データNoMoreHandlerException
- 次のハンドラが存在しない場合。java.lang.ClassCastException
- ハンドラの型変数と実際のハンドラの戻り値の型が異なる場合。public <TData,TResult> Handler<TData,TResult> getNextHandler() throws NoMoreHandlerException, java.lang.ClassCastException
TData
- 処理対象データの型TResult
- 処理結果データの型NoMoreHandlerException
- 次のハンドラが存在しない場合。java.lang.ClassCastException
- ハンドラの型変数と実際のハンドラの戻り値の型が異なる場合。public <T> T findHandler(java.lang.Object data, java.lang.Class<T> targetType, java.lang.Class<?> stopType)
null
を返す。T
- 検索対象のハンドラ型data
- このハンドラに対する入力オブジェクトtargetType
- 検索対象のハンドラ型stopType
- このタイプのハンドラよりも後続にあるハンドラを検索対象から除外する。null
を返す。)public <T> java.util.List<T> selectHandlers(java.lang.Object data, java.lang.Class<T> targetType, java.lang.Class<?> stopType)
T
- 検索対象のハンドラ型data
- このハンドラに対する入力オブジェクトtargetType
- 検索対象のハンドラ型stopType
- このタイプのハンドラよりも後続にあるハンドラを検索対象から除外する。public final ExecutionContext copy()
copyInternal()
に委譲している。protected ExecutionContext copyInternal()
public <TData> TData readNextData()
TData
- データリーダが読み込むデータの型public <TData> TData getLastReadData()
TData
- データオブジェクトの型public void clearLastReadData()
public void putDataOnException(java.lang.Throwable e, java.lang.Object data)
e
- 例外data
- 例外に関連するデータpublic java.lang.Object getDataProcessedWhenThrown(java.lang.Throwable e)
e
- 例外public boolean hasNextData()
true
public <TData> DataReader<TData> getDataReader()
TData
- データリーダが読み込むデータ型public <TData> ExecutionContext setDataReader(DataReader<TData> reader)
TData
- データリーダが読み込むデータ型reader
- データリーダpublic <TData> ExecutionContext setDataReaderFactory(DataReaderFactory<TData> factory)
TData
- ファクトリが生成するデータリーダが読み込むデータ型factory
- 設定するデータリーダファクトリpublic ExecutionContext closeReader()
public java.lang.Throwable getException()
THROWN_EXCEPTION_KEY
キーを使用する。public ApplicationException getApplicationException()
ApplicationException
を取得する。
THROWN_APPLICATION_EXCEPTION_KEY
キーを使用する。ApplicationException
。
リクエストスコープにApplicationException
が設定されていない場合はnullpublic void setException(java.lang.Throwable e)
THROWN_EXCEPTION_KEY
キーに例外を設定する。
さらに、例外がApplicationException
の場合は、
THROWN_APPLICATION_EXCEPTION_KEY
キーにも設定する。e
- 例外public boolean isProcessSucceeded()
true
public void setCurrentRequestObject(java.lang.Object currentRequestObject)
currentRequestObject
- 現在処理中のリクエストオブジェクトpublic java.lang.Object getCurrentRequestObject()
public void setProcessSucceeded(boolean processSucceeded)
processSucceeded
- 正常終了の場合true
public ExecutionContext setRequestScopeMap(java.util.Map<java.lang.String,java.lang.Object> m)
m
- リクエストスコープ上の変数を格納するMap@Published public java.util.Map<java.lang.String,java.lang.Object> getRequestScopeMap()
@Published public <T> T getRequestScopedVar(java.lang.String varName) throws java.lang.ClassCastException
T
- 期待する変数の型varName
- 変数名java.lang.ClassCastException
- 実際の変数の型が期待する変数の型と適合しなかった場合。@Published public ExecutionContext setRequestScopedVar(java.lang.String varName, java.lang.Object varValue)
varName
- 変数名varValue
- 変数の値public ExecutionContext setSessionStoreMap(java.util.Map<java.lang.String,java.lang.Object> m)
m
- セッションストア上の変数を格納したMappublic java.util.Map<java.lang.String,java.lang.Object> getSessionStoreMap()
public <T> T getSessionStoredVar(java.lang.String varName) throws java.lang.ClassCastException
T
- 期待する変数の型varName
- 変数名java.lang.ClassCastException
- 実際の変数の型が期待する変数の型と適合しなかった場合。public ExecutionContext setSessionStoredVar(java.lang.String varName, java.lang.Object varValue)
varName
- 変数名varValue
- 変数の値public ExecutionContext setSessionScopeMap(java.util.Map<java.lang.String,java.lang.Object> m)
m
- リクエストスコープ上の変数を格納したMap@Published public java.util.Map<java.lang.String,java.lang.Object> getSessionScopeMap()
@Published public <T> T getSessionScopedVar(java.lang.String varName) throws java.lang.ClassCastException
T
- 期待する変数の型varName
- 変数名java.lang.ClassCastException
- 実際の変数の型が期待する変数の型と適合しなかった場合。@Published public ExecutionContext setSessionScopedVar(java.lang.String varName, java.lang.Object varValue)
varName
- 変数名varValue
- 変数の値@Published public ExecutionContext invalidateSession()
@Published public boolean isNewSession()
true
public boolean hasSession()
public void setLastRecordNumber(int lastRecordNumber)
lastRecordNumber
- 現時点で物理的に読み込んでいるレコードのレコード番号@Published public int getLastRecordNumber()
FileDataReader
を使用してファイルを読み込んでいる場合にのみ値を返却する。
FileDataReader以外を使用している場合は0を返す。