Properly initialize redirected output streams in case of out and err.

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@1629 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
hanna 2009-09-15 19:47:43 +00:00
parent 00dfe014b7
commit 17758b381c
1 changed files with 13 additions and 4 deletions

View File

@ -10,6 +10,7 @@ import org.broadinstitute.sting.gatk.io.stubs.OutputStreamStub;
import org.broadinstitute.sting.gatk.io.stubs.Stub; import org.broadinstitute.sting.gatk.io.stubs.Stub;
import org.broadinstitute.sting.gatk.io.storage.StorageFactory; import org.broadinstitute.sting.gatk.io.storage.StorageFactory;
import org.broadinstitute.sting.gatk.io.storage.Storage; import org.broadinstitute.sting.gatk.io.storage.Storage;
import org.broadinstitute.sting.gatk.io.storage.OutputStreamStorage;
import java.io.*; import java.io.*;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@ -65,16 +66,16 @@ public abstract class OutputTracker {
// Otherwise, initialize them separately. // Otherwise, initialize them separately.
if( outFileName != null && outFileName.equals(errFileName) ) { if( outFileName != null && outFileName.equals(errFileName) ) {
outStub = errStub = new OutputStreamStub(new File(outFileName)); outStub = errStub = new OutputStreamStub(new File(outFileName));
addOutput(outStub); addOutput(outStub,new OutputStreamStorage(outStub));
} }
else { else {
outStub = (outFileName != null) ? new OutputStreamStub(new File(outFileName)) outStub = (outFileName != null) ? new OutputStreamStub(new File(outFileName))
: new OutputStreamStub(System.out); : new OutputStreamStub(System.out);
addOutput(outStub); addOutput(outStub,new OutputStreamStorage(outStub));
errStub = (errFileName != null) ? new OutputStreamStub(new File(errFileName)) errStub = (errFileName != null) ? new OutputStreamStub(new File(errFileName))
: new OutputStreamStub(System.err); : new OutputStreamStub(System.err);
addOutput(errStub); addOutput(errStub,new OutputStreamStorage(outStub));
} }
} }
@ -120,8 +121,16 @@ public abstract class OutputTracker {
* @param stub Stream to manage. * @param stub Stream to manage.
*/ */
public <T> void addOutput(Stub<T> stub) { public <T> void addOutput(Stub<T> stub) {
addOutput(stub,null);
}
/**
* Provide a mechanism for injecting supplemental streams for external management.
* @param stub Stream to manage.
*/
public <T> void addOutput(Stub<T> stub, Storage<T> storage) {
stub.register(this); stub.register(this);
outputs.put(stub,null); outputs.put(stub,storage);
} }
/** /**