in src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java [588:668]
public CompressorInputStream createCompressorInputStream(final String name, final InputStream in, final boolean actualDecompressConcatenated)
throws CompressorException {
if (name == null || in == null) {
throw new IllegalArgumentException("Compressor name and stream must not be null.");
}
try {
if (GZIP.equalsIgnoreCase(name)) {
// @formatter:off
return GzipCompressorInputStream.builder()
.setInputStream(in)
.setDecompressConcatenated(actualDecompressConcatenated)
.get();
// @formatter:on
}
if (BZIP2.equalsIgnoreCase(name)) {
return new BZip2CompressorInputStream(in, actualDecompressConcatenated);
}
if (BROTLI.equalsIgnoreCase(name)) {
if (!BrotliUtils.isBrotliCompressionAvailable()) {
throw new CompressorException("Brotli compression is not available." + YOU_NEED_BROTLI_DEC);
}
return new BrotliCompressorInputStream(in);
}
if (XZ.equalsIgnoreCase(name)) {
if (!XZUtils.isXZCompressionAvailable()) {
throw new CompressorException("XZ compression is not available." + YOU_NEED_XZ_JAVA);
}
// @formatter:off
return XZCompressorInputStream.builder()
.setInputStream(in)
.setDecompressConcatenated(actualDecompressConcatenated)
.setMemoryLimitKiB(memoryLimitInKb)
.get();
// @formatter:on
}
if (ZSTANDARD.equalsIgnoreCase(name)) {
if (!ZstdUtils.isZstdCompressionAvailable()) {
throw new CompressorException("Zstandard compression is not available." + YOU_NEED_ZSTD_JNI);
}
return new ZstdCompressorInputStream(in);
}
if (LZMA.equalsIgnoreCase(name)) {
if (!LZMAUtils.isLZMACompressionAvailable()) {
throw new CompressorException("LZMA compression is not available" + YOU_NEED_XZ_JAVA);
}
return LZMACompressorInputStream.builder().setInputStream(in).setMemoryLimitKiB(memoryLimitInKb).get();
}
if (PACK200.equalsIgnoreCase(name)) {
return new Pack200CompressorInputStream(in);
}
if (SNAPPY_RAW.equalsIgnoreCase(name)) {
return new SnappyCompressorInputStream(in);
}
if (SNAPPY_FRAMED.equalsIgnoreCase(name)) {
return new FramedSnappyCompressorInputStream(in);
}
if (Z.equalsIgnoreCase(name)) {
return new ZCompressorInputStream(in, memoryLimitInKb);
}
if (DEFLATE.equalsIgnoreCase(name)) {
return new DeflateCompressorInputStream(in);
}
if (DEFLATE64.equalsIgnoreCase(name)) {
return new Deflate64CompressorInputStream(in);
}
if (LZ4_BLOCK.equalsIgnoreCase(name)) {
return new BlockLZ4CompressorInputStream(in);
}
if (LZ4_FRAMED.equalsIgnoreCase(name)) {
return new FramedLZ4CompressorInputStream(in, actualDecompressConcatenated);
}
} catch (final IOException e) {
throw new CompressorException("Could not create CompressorInputStream.", e);
}
final CompressorStreamProvider compressorStreamProvider = getCompressorInputStreamProviders().get(toKey(name));
if (compressorStreamProvider != null) {
return compressorStreamProvider.createCompressorInputStream(name, in, actualDecompressConcatenated);
}
throw new CompressorException("Compressor: " + name + " not found.");
}