Class ResponseBody

java.lang.Object
nablarch.fw.web.ResponseBody

public class ResponseBody extends Object
HTTPレスポンスのボディ内容を格納するオブジェクト。
 レスポンスボディの内容を以下の3つの方式のいずれかによって指定する。
 (排他利用)
 1. コンテンツパスによる静的リソースの指定。
     HttpResponse.setContentPath(ResourceLocator)
 2. 入力ストリームによる指定。
     HttpResponse.setBodyStream(InputStream)
 3. 内部バッファへの書き込み。
     HttpResponse.write(byte[])
     HttpResponse.write(CharSequence)
 
内部バッファは一定サイズまではヒープ領域上に置かれるが、それを超えた 場合は一時ファイルに出力される。 入力ストリーム一時ファイルは、レスポンス処理終了後に HttpResponseHandlercleanup() を呼ぶことで 自動的に削除される。
Author:
Iwauo Tajima <iwauo@tis.co.jp>
See Also:
  • Constructor Details

    • ResponseBody

      public ResponseBody(HttpResponse response)
      コンストラクタ
      Parameters:
      response - HTTPレスポンス本体
  • Method Details

    • isEmpty

      public boolean isEmpty()
      ボディの内容が設定されていなければtrueを返す。
      Returns:
      ボディの内容が設定されていなければtrue
    • length

      public Long length()
      ボディの内容をヒープバッファに保持している場合、そのサイズを返す。
       内部バッファを使用していない場合、もしくは、
       内部バッファとして一時ファイルを使用している場合は null を返す。
       
      Returns:
      ヒープバッファのサイズ
    • setContentPath

      public ResponseBody setContentPath(ResourceLocator path)
      ボディのコンテンツパスを設定する。
      Parameters:
      path - コンテンツパス
      Returns:
      このオブジェクト自体
    • getContentPath

      public ResourceLocator getContentPath()
      コンテンツパスを取得する。
      Returns:
      コンテンツパス
    • write

      public ResponseBody write(byte[] bytes)
      内部バッファにバイナリデータを書き込む。
      Parameters:
      bytes - バイナリデータ
      Returns:
      このオブジェクト自体
    • write

      public ResponseBody write(CharSequence text)
      内部バッファにキャラクタデータを書き込む。
      Parameters:
      text - キャラクタデータ
      Returns:
      このオブジェクト自体
    • write

      public ResponseBody write(ByteBuffer bytes)
      内部バッファにバイナリデータを書き込む。
       要求サイズがヒープバッファの上限値を超過した場合、
       一時ファイルへの書き出しが許可されていれば、
       ヒープバッファを破棄し、以降は一時ファイルをバッファとして使用する。
       (ヒープバッファは直近のGCにより開放される。)
       一時ファイルへの書き出しが許可されていないばあい、
       レスポンスコード400に相当するHTTPエラーを送出する。
       
      Parameters:
      bytes - バイナリデータ
      Returns:
      このオブジェクト自体
    • toString

      public String toString()
      この実装ではボディの内容を表す文字列を返す。
       1. コンテンツパスが指定されている場合。
           パス文字列を返す。
      
       2. 入力ストリームもしくは一時ファイル上にバッファリングしている場合。
           先頭16KBの内容をデコードした文字列を返す。
      
       3. ヒープ上にバッファリングしている場合。
           バッファの内容をデコードした文字列を返す。
       
      Overrides:
      toString in class Object
      See Also:
    • getInputStream

      public InputStream getInputStream()
      ボディの内容を格納した入力ストリームを返す。 なお、コンテントパスを使用している場合、以下のケースではnullを返却する。
       1. コンテントパスのスキームが file:// もしくは classpath:// のいずれでもない場合
       2. コンテントパスのスキームが file:// もしくは classpath:// だが、その参照先のファイルが存在しない場合。
       
      Returns:
      入力ストリーム
    • setInputStream

      public ResponseBody setInputStream(InputStream input)
      ボディの内容を格納した入力ストリームを設定する。
      Parameters:
      input - 入力ストリーム
      Returns:
      このオブジェクト自体
    • addTempFileToDelete

      public static void addTempFileToDelete(File file)
      削除しなければならない一時ファイルに追加する。

      cleanup()メソッドが呼ばれた際に指定された一時ファイルが削除される。

      Parameters:
      file - 一時ファイル
    • cleanup

      public static void cleanup()
      カレントスレッドがIO用に確保しているリソースを全て開放する。