diff --git a/src/main/java/htsjdk/samtools/SamStreams.java b/src/main/java/htsjdk/samtools/SamStreams.java index 9866b82071..6a77fd0dff 100644 --- a/src/main/java/htsjdk/samtools/SamStreams.java +++ b/src/main/java/htsjdk/samtools/SamStreams.java @@ -66,7 +66,7 @@ public static boolean isBAMFile(final InputStream stream) /** * Checks whether the file is a gzipped sam file. Returns true if it * is and false otherwise. - * @see @link IOUtil#isGZIPInputStream(InputStream) + * @deprecated use {@link IOUtil#isGZIPInputStream(InputStream)} instead */ @Deprecated public static boolean isGzippedSAMFile(final InputStream stream) { diff --git a/src/main/java/htsjdk/samtools/util/IOUtil.java b/src/main/java/htsjdk/samtools/util/IOUtil.java index eef562961b..83d0a6b461 100755 --- a/src/main/java/htsjdk/samtools/util/IOUtil.java +++ b/src/main/java/htsjdk/samtools/util/IOUtil.java @@ -98,7 +98,6 @@ public class IOUtil { public static final String COMPRESSED_VCF_FILE_EXTENSION = ".vcf.gz"; public static final String COMPRESSED_VCF_INDEX_EXTENSION = ".tbi"; - /** Possible extensions for VCF files and related formats. */ public static final String[] VCF_EXTENSIONS = {VCF_FILE_EXTENSION, COMPRESSED_VCF_FILE_EXTENSION, BCF_FILE_EXTENSION}; @@ -110,6 +109,9 @@ public class IOUtil { public static final Set BLOCK_COMPRESSED_EXTENSIONS = Collections.unmodifiableSet(new HashSet(Arrays.asList(".gz", ".gzip", ".bgz", ".bgzf"))); + /** number of bytes that will be read for the GZIP-header in the function {@link #isGZIPInputStream(InputStream)} */ + public static final int GZIP_HEADER_READ_LENGTH = 8000; + private static int compressionLevel = Defaults.COMPRESSION_LEVEL; /** * Sets the GZip compression level for subsequent GZIPOutputStream object creation. @@ -1155,18 +1157,14 @@ public static List filesToPaths(Collection files){ return files.stream().map(File::toPath).collect(Collectors.toList()); } - /** number of bytes that will be read for the GZIP-header in the function {@link #isGZIPInputStream(InputStream)} */ - public static final int GZIP_HEADER_READ_LENGTH = 8000; - /** * Test whether a input stream looks like a GZIP input. + * This identifies both gzip and bgzip streams as being GZIP. * @param stream the input stream. - * @return true if `stream` starts with a gzip signature + * @return true if `stream` starts with a gzip signature. * @throws IllegalArgumentException if `stream` cannot mark or reset the stream - * @see SamStreams#isGzippedSAMFile(InputStream) */ public static boolean isGZIPInputStream(final InputStream stream) { - /* this function was previously implemented in SamStreams.isGzippedSAMFile */ if (!stream.markSupported()) { throw new IllegalArgumentException("isGZIPInputStream() : Cannot test a stream that doesn't support marking."); } diff --git a/src/main/java/htsjdk/variant/utils/VCFHeaderReader.java b/src/main/java/htsjdk/variant/utils/VCFHeaderReader.java index b274c29e42..9d4be262d2 100644 --- a/src/main/java/htsjdk/variant/utils/VCFHeaderReader.java +++ b/src/main/java/htsjdk/variant/utils/VCFHeaderReader.java @@ -3,6 +3,7 @@ import htsjdk.samtools.SamStreams; import htsjdk.samtools.cram.io.InputStreamUtils; import htsjdk.samtools.seekablestream.SeekableStream; +import htsjdk.samtools.util.IOUtil; import htsjdk.tribble.Feature; import htsjdk.tribble.FeatureCodec; import htsjdk.tribble.FeatureCodecHeader; @@ -49,8 +50,8 @@ public static VCFHeader readHeaderFrom(final SeekableStream in) throws IOExcepti private static InputStream bufferAndDecompressIfNecessary(final InputStream in) throws IOException { BufferedInputStream bis = new BufferedInputStream(in); - // despite the name, SamStreams.isGzippedSAMFile looks for any gzipped stream (including block compressed) - return SamStreams.isGzippedSAMFile(bis) ? new GZIPInputStream(bis) : bis; + // IOUTil.isGZIPInputStream looks for any gzipped stream (including block compressed) + return IOUtil.isGZIPInputStream(bis) ? new GZIPInputStream(bis) : bis; } private static VCFHeader readHeaderFrom(final InputStream in, final FeatureCodec featureCodec) throws IOException { diff --git a/src/main/java/htsjdk/variant/vcf/VCFIteratorBuilder.java b/src/main/java/htsjdk/variant/vcf/VCFIteratorBuilder.java index 95cf8314fc..13a203aa8c 100644 --- a/src/main/java/htsjdk/variant/vcf/VCFIteratorBuilder.java +++ b/src/main/java/htsjdk/variant/vcf/VCFIteratorBuilder.java @@ -78,18 +78,12 @@ public VCFIterator open(final InputStream in) throws IOException { } // wrap the input stream into a BufferedInputStream to reset/read a BCFHeader or a GZIP // buffer must be large enough to contain the BCF header and/or GZIP signature - BufferedInputStream bufferedinput = new BufferedInputStream(in, Math.max( - BCF2Codec.SIZEOF_BCF_HEADER, - IOUtil.GZIP_HEADER_READ_LENGTH - )); + BufferedInputStream bufferedinput = new BufferedInputStream(in, Math.max(BCF2Codec.SIZEOF_BCF_HEADER, IOUtil.GZIP_HEADER_READ_LENGTH)); // test for gzipped inputstream if(IOUtil.isGZIPInputStream(bufferedinput)) { // this is a gzipped input stream, wrap it into GZIPInputStream // and re-wrap it into BufferedInputStream so we can test for the BCF header - bufferedinput = new BufferedInputStream( - new GZIPInputStream(bufferedinput), - BCF2Codec.SIZEOF_BCF_HEADER - ); + bufferedinput = new BufferedInputStream(new GZIPInputStream(bufferedinput), BCF2Codec.SIZEOF_BCF_HEADER); } // try to read a BCF header @@ -190,9 +184,7 @@ public VCFHeader getHeader() { @Override protected VariantContext advance() { - return this.lineIterator.hasNext() ? - this.codec.decode(this.lineIterator.next()) : - null; + return this.lineIterator.hasNext() ? this.codec.decode(this.lineIterator.next()) : null; } @Override @@ -225,9 +217,7 @@ public VCFHeader getHeader() { @Override protected VariantContext advance() { - return this.codec.isDone(this.inputStream) ? - null : - this.codec.decode(this.inputStream); + return this.codec.isDone(this.inputStream) ? null : this.codec.decode(this.inputStream); } @Override diff --git a/src/test/java/htsjdk/samtools/SamStreamsTest.java b/src/test/java/htsjdk/samtools/SamStreamsTest.java index 48a074a8ea..5240b48bae 100644 --- a/src/test/java/htsjdk/samtools/SamStreamsTest.java +++ b/src/test/java/htsjdk/samtools/SamStreamsTest.java @@ -40,6 +40,7 @@ public class SamStreamsTest extends HtsjdkTest { private static final File TEST_DATA_DIR = new File("src/test/resources/htsjdk/samtools"); @Test(dataProvider = "makeData") + @SuppressWarnings("deprecated") // we're testing a deprecated method here deliberately public void testDataFormat(final String inputFile, final boolean isGzippedSAMFile, final boolean isBAMFile, final boolean isCRAMFile) throws Exception { final File input = new File(TEST_DATA_DIR, inputFile); try(final InputStream fis = new BufferedInputStream(new FileInputStream(input))) { //must be buffered or the isGzippedSAMFile will blow up diff --git a/src/test/java/htsjdk/samtools/util/IOUtilTest.java b/src/test/java/htsjdk/samtools/util/IOUtilTest.java index 93d95287ce..05633abf11 100644 --- a/src/test/java/htsjdk/samtools/util/IOUtilTest.java +++ b/src/test/java/htsjdk/samtools/util/IOUtilTest.java @@ -733,8 +733,8 @@ private static byte[] gzipMessage(final byte[] message) throws IOException { @DataProvider public static Object[][] gzipTests() throws IOException { - final byte emptyMessage[]="".getBytes(); - final byte message[]="Hello World".getBytes(); + final byte[] emptyMessage = "".getBytes(); + final byte[] message = "Hello World".getBytes(); // Compressed version of the messages final byte[] gzippedMessage = gzipMessage(message);