Class FwHeaderReader

java.lang.Object
nablarch.fw.messaging.reader.FwHeaderReader
All Implemented Interfaces:
DataReader<RequestMessage>

public class FwHeaderReader extends Object implements DataReader<RequestMessage>
受信電文のフレームワーク制御ヘッダの解析を行うデータリーダ。

MessageReaderが読み込んだ受信電文のメッセージボディから フレームワーク制御ヘッダ部分を読み込み、後続のハンドラからそれらの値を参照可能とする。
このデータリーダの戻り値の型であるRequestMessageは、フレームワーク制御ヘッダに 対するアクセサを保持し、Requestインターフェースを実装する。

受信電文読み込み時にエラーが発生した場合は、必ず例外(MessageReadError)を送出する。 この場合、業務処理へのディスパッチは発生せず、フレームワークが直接エラー応答を行うことになる。

Author:
Iwauo Tajima
  • Constructor Details

    • FwHeaderReader

      public FwHeaderReader()
  • Method Details

    • read

      public RequestMessage read(ExecutionContext ctx)
      受信電文のフレームワーク制御ヘッダ部分を読み込む。

      MessageReaderで取得した受信電文オブジェクトの フレームワーク制御項目を読み込み、下記項目をスレッドコンテキストに設定する。

      • リクエストID
      • 内部リクエストID
      • ユーザID(フレームワーク制御項目に設定されている場合のみ)
      また、受信電文の業務データ部の読み込みと応答電文の業務データ部生成に使用する フォーマッタを決定し、要求電文オブジェクトに設定する。
      Specified by:
      read in interface DataReader<RequestMessage>
      Parameters:
      ctx - 実行コンテキスト
      Returns:
      要求電文オブジェクト(受信電文オブジェクトがnullの場合はnullを返す)
      Throws:
      MessageReadError - フレームワーク制御ヘッダのパースに失敗した場合
    • hasNext

      public boolean hasNext(ExecutionContext ctx)
      次に読み込むデータが存在するかどうかを返却する。
      Specified by:
      hasNext in interface DataReader<RequestMessage>
      Parameters:
      ctx - 実行コンテキスト
      Returns:
      次に読み込むデータが存在する場合はtrue
    • close

      public void close(ExecutionContext ctx)
      このリーダの利用を停止し、内部的に保持している各種リソースを解放する。
      Specified by:
      close in interface DataReader<RequestMessage>
      Parameters:
      ctx -
    • setMessageReader

      public FwHeaderReader setMessageReader(DataReader<ReceivedMessage> messageReader)
      受信電文を読み込むリーダを設定する。
      Parameters:
      messageReader - データリーダ
      Returns:
      このオブジェクト自体
      Throws:
      IllegalArgumentException - データリーダがnullの場合
    • setFwHeaderDefinition

      public FwHeaderReader setFwHeaderDefinition(FwHeaderDefinition def)
      フレームワーク制御ヘッダ定義を設定する。
      Parameters:
      def - フレームワーク制御ヘッダ設定
      Returns:
      このオブジェクト自体
      Throws:
      IllegalArgumentException - フレームワーク制御ヘッダ設定がnullの場合
    • setFormatFileDir

      public FwHeaderReader setFormatFileDir(String dirName)
      業務データ部のフォーマット定義ファイルの配置先ディレクトリ論理名を設定する。

      デフォルト値は"format"。

      Parameters:
      dirName - フォーマット定義ファイルの配置先ディレクトリ論理名
      Returns:
      このオブジェクト自体
      Throws:
      IllegalArgumentException - 配置先ディレクトリ論理名が無効な場合
    • setMessageFormatFileNamePattern

      public FwHeaderReader setMessageFormatFileNamePattern(String pattern)
      受信電文のフォーマット定義ファイル名のパターン文字列を設定する。

      デフォルトの設定では、以下の名称のフォーマット定義ファイルを取得する。

       (リクエストID) + "_RECEIVE.fmt"
       
      Parameters:
      pattern - フォーマット定義ファイル名のパターン文字列
      Returns:
      このオブジェクト自体
      Throws:
      IllegalArgumentException - パターン文字列が無効な場合
    • setReplyMessageFormatFileNamePattern

      public FwHeaderReader setReplyMessageFormatFileNamePattern(String pattern)
      応答電文のフォーマット定義ファイル名のパターン文字列を設定する。

      デフォルトの設定では、以下の名称のフォーマット定義ファイルを取得する。

       (リクエストID) + "_SEND.fmt"
       
      Parameters:
      pattern - フォーマット定義ファイル名のパターン文字列
      Returns:
      このオブジェクト自体
      Throws:
      IllegalArgumentException - パターン文字列が無効な場合