Package nablarch.fw.web
Class ResponseBody
java.lang.Object
nablarch.fw.web.ResponseBody
HTTPレスポンスのボディ内容を格納するオブジェクト。
レスポンスボディの内容を以下の3つの方式のいずれかによって指定する。
(排他利用)
1. コンテンツパスによる静的リソースの指定。
HttpResponse.setContentPath(ResourceLocator)
2. 入力ストリームによる指定。
HttpResponse.setBodyStream(InputStream)
3. 内部バッファへの書き込み。
HttpResponse.write(byte[])
HttpResponse.write(CharSequence)
内部バッファは一定サイズまではヒープ領域上に置かれるが、それを超えた
場合は一時ファイルに出力される。
入力ストリーム一時ファイルは、レスポンス処理終了後に
HttpResponseHandler が cleanup() を呼ぶことで
自動的に削除される。- Author:
- Iwauo Tajima <iwauo@tis.co.jp>
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidaddTempFileToDelete(File file) 削除しなければならない一時ファイルに追加する。static voidcleanup()カレントスレッドがIO用に確保しているリソースを全て開放する。コンテンツパスを取得する。ボディの内容を格納した入力ストリームを返す。 なお、コンテントパスを使用している場合、以下のケースではnullを返却する。booleanisEmpty()ボディの内容が設定されていなければtrueを返す。length()ボディの内容をヒープバッファに保持している場合、そのサイズを返す。ボディのコンテンツパスを設定する。setInputStream(InputStream input) ボディの内容を格納した入力ストリームを設定する。toString()この実装ではボディの内容を表す文字列を返す。write(byte[] bytes) 内部バッファにバイナリデータを書き込む。write(CharSequence text) 内部バッファにキャラクタデータを書き込む。write(ByteBuffer bytes) 内部バッファにバイナリデータを書き込む。
-
Constructor Details
-
ResponseBody
コンストラクタ- Parameters:
response- HTTPレスポンス本体
-
-
Method Details
-
isEmpty
public boolean isEmpty()ボディの内容が設定されていなければtrueを返す。- Returns:
- ボディの内容が設定されていなければtrue
-
length
ボディの内容をヒープバッファに保持している場合、そのサイズを返す。内部バッファを使用していない場合、もしくは、 内部バッファとして一時ファイルを使用している場合は null を返す。
- Returns:
- ヒープバッファのサイズ
-
setContentPath
ボディのコンテンツパスを設定する。- Parameters:
path- コンテンツパス- Returns:
- このオブジェクト自体
-
getContentPath
コンテンツパスを取得する。- Returns:
- コンテンツパス
-
write
内部バッファにバイナリデータを書き込む。- Parameters:
bytes- バイナリデータ- Returns:
- このオブジェクト自体
-
write
内部バッファにキャラクタデータを書き込む。- Parameters:
text- キャラクタデータ- Returns:
- このオブジェクト自体
-
write
内部バッファにバイナリデータを書き込む。要求サイズがヒープバッファの上限値を超過した場合、 一時ファイルへの書き出しが許可されていれば、 ヒープバッファを破棄し、以降は一時ファイルをバッファとして使用する。 (ヒープバッファは直近のGCにより開放される。) 一時ファイルへの書き出しが許可されていないばあい、 レスポンスコード400に相当するHTTPエラーを送出する。
- Parameters:
bytes- バイナリデータ- Returns:
- このオブジェクト自体
-
toString
この実装ではボディの内容を表す文字列を返す。1. コンテンツパスが指定されている場合。 パス文字列を返す。 2. 入力ストリームもしくは一時ファイル上にバッファリングしている場合。 先頭16KBの内容をデコードした文字列を返す。 3. ヒープ上にバッファリングしている場合。 バッファの内容をデコードした文字列を返す。 -
getInputStream
ボディの内容を格納した入力ストリームを返す。 なお、コンテントパスを使用している場合、以下のケースではnullを返却する。1. コンテントパスのスキームが file:// もしくは classpath:// のいずれでもない場合 2. コンテントパスのスキームが file:// もしくは classpath:// だが、その参照先のファイルが存在しない場合。
- Returns:
- 入力ストリーム
-
setInputStream
ボディの内容を格納した入力ストリームを設定する。- Parameters:
input- 入力ストリーム- Returns:
- このオブジェクト自体
-
addTempFileToDelete
削除しなければならない一時ファイルに追加する。cleanup()メソッドが呼ばれた際に指定された一時ファイルが削除される。- Parameters:
file- 一時ファイル
-
cleanup
public static void cleanup()カレントスレッドがIO用に確保しているリソースを全て開放する。
-