Class ValidationPipelineExample

java.lang.Object
com.streamconverter.examples.ValidationPipelineExample

public class ValidationPipelineExample extends Object
例5: ConsumerCommand(検証) × FileBufferCommand による安全なパイプライン

並列パイプラインにおける検証コマンドの落とし穴と、その解決策を示す。

この例で学べること:

  • CsvValidateCommandConsumerCommand のサブクラスで、 入力を読みながら出力にも同時に流す(TeeInputStream)
  • 各コマンドは並列実行されるため、検証が失敗する前に後段へデータが流れ始める
  • FileBufferCommand を挿入すると前段の完全完了を待ってから後段が開始する(逐次化)
  • FileBufferCommand.createEncrypted() で一時ファイルを AES-256-GCM 暗号化できる

3つのパターンを比較する:

 パターンA(問題あり):
   CsvValidateCommand → CsvNavigateCommand
   検証失敗でも後段に部分データが届く可能性がある

 パターンB(安全):
   CsvValidateCommand → FileBufferCommand → CsvNavigateCommand
   FileBufferCommand が前段の完了を待ち、後段は確実に検証済みデータのみを受け取る

 パターンC(機密データ):
   CsvValidateCommand → FileBufferCommand.createEncrypted() → CsvNavigateCommand
   一時ファイルを AES-256-GCM で暗号化するため、機密データでも安全