Package com.streamconverter.examples
Class ValidationPipelineExample
java.lang.Object
com.streamconverter.examples.ValidationPipelineExample
例5: ConsumerCommand(検証) × FileBufferCommand による安全なパイプライン
並列パイプラインにおける検証コマンドの落とし穴と、その解決策を示す。
この例で学べること:
CsvValidateCommandはConsumerCommandのサブクラスで、 入力を読みながら出力にも同時に流す(TeeInputStream)- 各コマンドは並列実行されるため、検証が失敗する前に後段へデータが流れ始める
FileBufferCommandを挿入すると前段の完全完了を待ってから後段が開始する(逐次化)FileBufferCommand.createEncrypted()で一時ファイルを AES-256-GCM 暗号化できる
3つのパターンを比較する:
パターンA(問題あり): CsvValidateCommand → CsvNavigateCommand 検証失敗でも後段に部分データが届く可能性がある パターンB(安全): CsvValidateCommand → FileBufferCommand → CsvNavigateCommand FileBufferCommand が前段の完了を待ち、後段は確実に検証済みデータのみを受け取る パターンC(機密データ): CsvValidateCommand → FileBufferCommand.createEncrypted() → CsvNavigateCommand 一時ファイルを AES-256-GCM で暗号化するため、機密データでも安全
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
ValidationPipelineExample
public ValidationPipelineExample()
-
-
Method Details
-
main
- Parameters:
args- コマンドライン引数(未使用)- Throws:
IOException- I/O エラー
-