I think we'd have to override all the InputStream methods if we extended FilterInputStream, as opposed to just the three read() methods.  These classes are based on the BenchToolEntity/BenchToolInputStream classes that are used to provide random upload data for benchtool, and the implementation looked reasonably simple and compact to me.