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