My memory requirements eliminate using the byte array or temp file methods mentioned.
I need to create the StreamSource and pass it to another method, so I can't read from the inputstream while the outputstream is being written to. Since I need a buffer all approach, i believe this eliminates the piped streams.
I tried using JBoss' growable pipe streams and the circular buffer, using a join in order to wait until the thread writing to the outputstream completed and then did a flush. I also tried the single threaded circular buffer example.
However when I call the method after passing in the StreamSource constructed with the input stream the application hangs.