diff options
Diffstat (limited to '0004-Disable-Brotli-and-ZStd-compression.patch')
-rw-r--r-- | 0004-Disable-Brotli-and-ZStd-compression.patch | 513 |
1 files changed, 513 insertions, 0 deletions
diff --git a/0004-Disable-Brotli-and-ZStd-compression.patch b/0004-Disable-Brotli-and-ZStd-compression.patch new file mode 100644 index 0000000..54148d8 --- /dev/null +++ b/0004-Disable-Brotli-and-ZStd-compression.patch @@ -0,0 +1,513 @@ +From 8445a1513bc95a49a5ab9e89084cd3bf3ca0dd40 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fridrich=20=C5=A0trba?= <fridrich.strba@bluewin.ch> +Date: Thu, 30 Mar 2023 13:19:04 +0200 +Subject: [PATCH 4/4] Disable Brotli and ZStd compression + +--- + .../codec/http/HttpContentCompressor.java | 107 +----------------- + .../codec/http/HttpContentDecompressor.java | 22 ---- + .../CompressorHttp2ConnectionEncoder.java | 42 +------ + .../DelegatingDecompressorFrameListener.java | 20 ---- + .../StandardCompressionOptions.java | 70 +----------- + 5 files changed, 5 insertions(+), 256 deletions(-) + +diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentCompressor.java b/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentCompressor.java +index 17f55d3ed5..27da52dd9a 100644 +--- a/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentCompressor.java ++++ b/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentCompressor.java +@@ -24,9 +24,6 @@ import io.netty.buffer.ByteBuf; + import io.netty.channel.ChannelHandlerContext; + import io.netty.channel.embedded.EmbeddedChannel; + import io.netty.handler.codec.MessageToByteEncoder; +-import io.netty.handler.codec.compression.Brotli; +-import io.netty.handler.codec.compression.BrotliEncoder; +-import io.netty.handler.codec.compression.BrotliOptions; + import io.netty.handler.codec.compression.CompressionOptions; + import io.netty.handler.codec.compression.DeflateOptions; + import io.netty.handler.codec.compression.GzipOptions; +@@ -34,11 +31,6 @@ import io.netty.handler.codec.compression.StandardCompressionOptions; + import io.netty.handler.codec.compression.ZlibCodecFactory; + import io.netty.handler.codec.compression.ZlibEncoder; + import io.netty.handler.codec.compression.ZlibWrapper; +-import io.netty.handler.codec.compression.Zstd; +-import io.netty.handler.codec.compression.ZstdEncoder; +-import io.netty.handler.codec.compression.ZstdOptions; +-import io.netty.handler.codec.compression.SnappyFrameEncoder; +-import io.netty.handler.codec.compression.SnappyOptions; + import io.netty.util.internal.ObjectUtil; + + import static io.netty.util.internal.ObjectUtil.checkInRange; +@@ -52,11 +44,8 @@ import static io.netty.util.internal.ObjectUtil.checkInRange; + */ + public class HttpContentCompressor extends HttpContentEncoder { + +- private final BrotliOptions brotliOptions; + private final GzipOptions gzipOptions; + private final DeflateOptions deflateOptions; +- private final ZstdOptions zstdOptions; +- private final SnappyOptions snappyOptions; + + private final int contentSizeThreshold; + private ChannelHandlerContext ctx; +@@ -174,11 +163,8 @@ public class HttpContentCompressor extends HttpContentEncoder { + */ + public HttpContentCompressor(int contentSizeThreshold, CompressionOptions... compressionOptions) { + this.contentSizeThreshold = ObjectUtil.checkPositiveOrZero(contentSizeThreshold, "contentSizeThreshold"); +- BrotliOptions brotliOptions = null; + GzipOptions gzipOptions = null; + DeflateOptions deflateOptions = null; +- ZstdOptions zstdOptions = null; +- SnappyOptions snappyOptions = null; + if (compressionOptions == null || compressionOptions.length == 0) { + compressionOptions = defaultCompressionOptions( + StandardCompressionOptions.gzip(), StandardCompressionOptions.deflate()); +@@ -192,16 +178,10 @@ public class HttpContentCompressor extends HttpContentEncoder { + // This results in the static analysis of native-image identifying the instanceof BrotliOptions check + // and thus BrotliOptions itself as unreachable, enabling native-image to link all classes + // at build time and not complain about the missing Brotli classes. +- if (Brotli.isAvailable() && compressionOption instanceof BrotliOptions) { +- brotliOptions = (BrotliOptions) compressionOption; +- } else if (compressionOption instanceof GzipOptions) { ++ if (compressionOption instanceof GzipOptions) { + gzipOptions = (GzipOptions) compressionOption; + } else if (compressionOption instanceof DeflateOptions) { + deflateOptions = (DeflateOptions) compressionOption; +- } else if (Zstd.isAvailable() && compressionOption instanceof ZstdOptions) { +- zstdOptions = (ZstdOptions) compressionOption; +- } else if (compressionOption instanceof SnappyOptions) { +- snappyOptions = (SnappyOptions) compressionOption; + } else { + throw new IllegalArgumentException("Unsupported " + CompressionOptions.class.getSimpleName() + + ": " + compressionOption); +@@ -210,9 +190,6 @@ public class HttpContentCompressor extends HttpContentEncoder { + + this.gzipOptions = gzipOptions; + this.deflateOptions = deflateOptions; +- this.brotliOptions = brotliOptions; +- this.zstdOptions = zstdOptions; +- this.snappyOptions = snappyOptions; + + this.factories = new HashMap<String, CompressionEncoderFactory>(); + +@@ -222,15 +199,6 @@ public class HttpContentCompressor extends HttpContentEncoder { + if (this.deflateOptions != null) { + this.factories.put("deflate", new DeflateEncoderFactory()); + } +- if (Brotli.isAvailable() && this.brotliOptions != null) { +- this.factories.put("br", new BrEncoderFactory()); +- } +- if (this.zstdOptions != null) { +- this.factories.put("zstd", new ZstdEncoderFactory()); +- } +- if (this.snappyOptions != null) { +- this.factories.put("snappy", new SnappyEncoderFactory()); +- } + } + + private static CompressionOptions[] defaultCompressionOptions( +@@ -238,14 +206,6 @@ public class HttpContentCompressor extends HttpContentEncoder { + List<CompressionOptions> options = new ArrayList<CompressionOptions>(5); + options.add(gzipOptions); + options.add(deflateOptions); +- options.add(StandardCompressionOptions.snappy()); +- +- if (Brotli.isAvailable()) { +- options.add(StandardCompressionOptions.brotli()); +- } +- if (Zstd.isAvailable()) { +- options.add(StandardCompressionOptions.zstd()); +- } + return options.toArray(new CompressionOptions[0]); + } + +@@ -289,9 +249,6 @@ public class HttpContentCompressor extends HttpContentEncoder { + @SuppressWarnings("FloatingPointEquality") + protected String determineEncoding(String acceptEncoding) { + float starQ = -1.0f; +- float brQ = -1.0f; +- float zstdQ = -1.0f; +- float snappyQ = -1.0f; + float gzipQ = -1.0f; + float deflateQ = -1.0f; + for (String encoding : acceptEncoding.split(",")) { +@@ -307,41 +264,20 @@ public class HttpContentCompressor extends HttpContentEncoder { + } + if (encoding.contains("*")) { + starQ = q; +- } else if (encoding.contains("br") && q > brQ) { +- brQ = q; +- } else if (encoding.contains("zstd") && q > zstdQ) { +- zstdQ = q; +- } else if (encoding.contains("snappy") && q > snappyQ) { +- snappyQ = q; + } else if (encoding.contains("gzip") && q > gzipQ) { + gzipQ = q; + } else if (encoding.contains("deflate") && q > deflateQ) { + deflateQ = q; + } + } +- if (brQ > 0.0f || zstdQ > 0.0f || snappyQ > 0.0f || gzipQ > 0.0f || deflateQ > 0.0f) { +- if (brQ != -1.0f && brQ >= zstdQ && this.brotliOptions != null) { +- return "br"; +- } else if (zstdQ != -1.0f && zstdQ >= snappyQ && this.zstdOptions != null) { +- return "zstd"; +- } else if (snappyQ != -1.0f && snappyQ >= gzipQ && this.snappyOptions != null) { +- return "snappy"; +- } else if (gzipQ != -1.0f && gzipQ >= deflateQ && this.gzipOptions != null) { ++ if (gzipQ > 0.0f || deflateQ > 0.0f) { ++ if (gzipQ != -1.0f && gzipQ >= deflateQ && this.gzipOptions != null) { + return "gzip"; + } else if (deflateQ != -1.0f && this.deflateOptions != null) { + return "deflate"; + } + } + if (starQ > 0.0f) { +- if (brQ == -1.0f && this.brotliOptions != null) { +- return "br"; +- } +- if (zstdQ == -1.0f && this.zstdOptions != null) { +- return "zstd"; +- } +- if (snappyQ == -1.0f && this.snappyOptions != null) { +- return "snappy"; +- } + if (gzipQ == -1.0f && this.gzipOptions != null) { + return "gzip"; + } +@@ -422,41 +358,4 @@ public class HttpContentCompressor extends HttpContentEncoder { + deflateOptions.windowBits(), deflateOptions.memLevel()); + } + } +- +- /** +- * Compression Encoder Factory that creates {@link BrotliEncoder}s +- * used to compress http content for br content encoding +- */ +- private final class BrEncoderFactory implements CompressionEncoderFactory { +- +- @Override +- public MessageToByteEncoder<ByteBuf> createEncoder() { +- return new BrotliEncoder(brotliOptions.parameters()); +- } +- } +- +- /** +- * Compression Encoder Factory for create {@link ZstdEncoder} +- * used to compress http content for zstd content encoding +- */ +- private final class ZstdEncoderFactory implements CompressionEncoderFactory { +- +- @Override +- public MessageToByteEncoder<ByteBuf> createEncoder() { +- return new ZstdEncoder(zstdOptions.compressionLevel(), +- zstdOptions.blockSize(), zstdOptions.maxEncodeSize()); +- } +- } +- +- /** +- * Compression Encoder Factory for create {@link SnappyFrameEncoder} +- * used to compress http content for snappy content encoding +- */ +- private static final class SnappyEncoderFactory implements CompressionEncoderFactory { +- +- @Override +- public MessageToByteEncoder<ByteBuf> createEncoder() { +- return new SnappyFrameEncoder(); +- } +- } + } +diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentDecompressor.java b/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentDecompressor.java +index 44e6195332..ea461844af 100644 +--- a/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentDecompressor.java ++++ b/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentDecompressor.java +@@ -15,23 +15,15 @@ + */ + package io.netty.handler.codec.http; + +-import static io.netty.handler.codec.http.HttpHeaderValues.BR; + import static io.netty.handler.codec.http.HttpHeaderValues.DEFLATE; + import static io.netty.handler.codec.http.HttpHeaderValues.GZIP; + import static io.netty.handler.codec.http.HttpHeaderValues.X_DEFLATE; + import static io.netty.handler.codec.http.HttpHeaderValues.X_GZIP; +-import static io.netty.handler.codec.http.HttpHeaderValues.SNAPPY; +-import static io.netty.handler.codec.http.HttpHeaderValues.ZSTD; + import static io.netty.util.internal.ObjectUtil.checkPositiveOrZero; + + import io.netty.channel.embedded.EmbeddedChannel; +-import io.netty.handler.codec.compression.Brotli; +-import io.netty.handler.codec.compression.BrotliDecoder; +-import io.netty.handler.codec.compression.SnappyFrameDecoder; + import io.netty.handler.codec.compression.ZlibCodecFactory; + import io.netty.handler.codec.compression.ZlibWrapper; +-import io.netty.handler.codec.compression.Zstd; +-import io.netty.handler.codec.compression.ZstdDecoder; + + /** + * Decompresses an {@link HttpMessage} and an {@link HttpContent} compressed in +@@ -102,20 +94,6 @@ public class HttpContentDecompressor extends HttpContentDecoder { + return new EmbeddedChannel(ctx.channel().id(), ctx.channel().metadata().hasDisconnect(), + ctx.channel().config(), ZlibCodecFactory.newZlibDecoder(wrapper, maxAllocation)); + } +- if (Brotli.isAvailable() && BR.contentEqualsIgnoreCase(contentEncoding)) { +- return new EmbeddedChannel(ctx.channel().id(), ctx.channel().metadata().hasDisconnect(), +- ctx.channel().config(), new BrotliDecoder()); +- } +- +- if (SNAPPY.contentEqualsIgnoreCase(contentEncoding)) { +- return new EmbeddedChannel(ctx.channel().id(), ctx.channel().metadata().hasDisconnect(), +- ctx.channel().config(), new SnappyFrameDecoder()); +- } +- +- if (Zstd.isAvailable() && ZSTD.contentEqualsIgnoreCase(contentEncoding)) { +- return new EmbeddedChannel(ctx.channel().id(), ctx.channel().metadata().hasDisconnect(), +- ctx.channel().config(), new ZstdDecoder()); +- } + + // 'identity' or unsupported + return null; +diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/CompressorHttp2ConnectionEncoder.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/CompressorHttp2ConnectionEncoder.java +index b12213dff6..fdeadaebbe 100644 +--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/CompressorHttp2ConnectionEncoder.java ++++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/CompressorHttp2ConnectionEncoder.java +@@ -21,20 +21,12 @@ import io.netty.channel.ChannelHandlerContext; + import io.netty.channel.ChannelPromise; + import io.netty.channel.embedded.EmbeddedChannel; + import io.netty.handler.codec.ByteToMessageDecoder; +-import io.netty.handler.codec.compression.BrotliEncoder; + import io.netty.handler.codec.compression.ZlibCodecFactory; + import io.netty.handler.codec.compression.ZlibWrapper; +-import io.netty.handler.codec.compression.Brotli; +-import io.netty.handler.codec.compression.BrotliOptions; + import io.netty.handler.codec.compression.CompressionOptions; + import io.netty.handler.codec.compression.DeflateOptions; + import io.netty.handler.codec.compression.GzipOptions; + import io.netty.handler.codec.compression.StandardCompressionOptions; +-import io.netty.handler.codec.compression.Zstd; +-import io.netty.handler.codec.compression.ZstdEncoder; +-import io.netty.handler.codec.compression.ZstdOptions; +-import io.netty.handler.codec.compression.SnappyFrameEncoder; +-import io.netty.handler.codec.compression.SnappyOptions; + import io.netty.util.concurrent.PromiseCombiner; + import io.netty.util.internal.ObjectUtil; + +@@ -43,14 +35,11 @@ import java.util.List; + + import static io.netty.handler.codec.http.HttpHeaderNames.CONTENT_ENCODING; + import static io.netty.handler.codec.http.HttpHeaderNames.CONTENT_LENGTH; +-import static io.netty.handler.codec.http.HttpHeaderValues.BR; + import static io.netty.handler.codec.http.HttpHeaderValues.DEFLATE; + import static io.netty.handler.codec.http.HttpHeaderValues.GZIP; + import static io.netty.handler.codec.http.HttpHeaderValues.IDENTITY; + import static io.netty.handler.codec.http.HttpHeaderValues.X_DEFLATE; + import static io.netty.handler.codec.http.HttpHeaderValues.X_GZIP; +-import static io.netty.handler.codec.http.HttpHeaderValues.ZSTD; +-import static io.netty.handler.codec.http.HttpHeaderValues.SNAPPY; + + /** + * A decorating HTTP2 encoder that will compress data frames according to the {@code content-encoding} header for each +@@ -69,11 +58,8 @@ public class CompressorHttp2ConnectionEncoder extends DecoratingHttp2ConnectionE + + private final boolean supportsCompressionOptions; + +- private BrotliOptions brotliOptions; + private GzipOptions gzipCompressionOptions; + private DeflateOptions deflateOptions; +- private ZstdOptions zstdOptions; +- private SnappyOptions snappyOptions; + + /** + * Create a new {@link CompressorHttp2ConnectionEncoder} instance +@@ -87,13 +73,6 @@ public class CompressorHttp2ConnectionEncoder extends DecoratingHttp2ConnectionE + List<CompressionOptions> compressionOptions = new ArrayList<CompressionOptions>(); + compressionOptions.add(StandardCompressionOptions.gzip()); + compressionOptions.add(StandardCompressionOptions.deflate()); +- compressionOptions.add(StandardCompressionOptions.snappy()); +- if (Brotli.isAvailable()) { +- compressionOptions.add(StandardCompressionOptions.brotli()); +- } +- if (Zstd.isAvailable()) { +- compressionOptions.add(StandardCompressionOptions.zstd()); +- } + return compressionOptions.toArray(new CompressionOptions[0]); + } + +@@ -139,16 +118,10 @@ public class CompressorHttp2ConnectionEncoder extends DecoratingHttp2ConnectionE + // This results in the static analysis of native-image identifying the instanceof BrotliOptions check + // and thus BrotliOptions itself as unreachable, enabling native-image to link all classes at build time + // and not complain about the missing Brotli classes. +- if (Brotli.isAvailable() && compressionOptions instanceof BrotliOptions) { +- brotliOptions = (BrotliOptions) compressionOptions; +- } else if (compressionOptions instanceof GzipOptions) { ++ if (compressionOptions instanceof GzipOptions) { + gzipCompressionOptions = (GzipOptions) compressionOptions; + } else if (compressionOptions instanceof DeflateOptions) { + deflateOptions = (DeflateOptions) compressionOptions; +- } else if (compressionOptions instanceof ZstdOptions) { +- zstdOptions = (ZstdOptions) compressionOptions; +- } else if (compressionOptions instanceof SnappyOptions) { +- snappyOptions = (SnappyOptions) compressionOptions; + } else { + throw new IllegalArgumentException("Unsupported " + CompressionOptions.class.getSimpleName() + + ": " + compressionOptions); +@@ -286,19 +259,6 @@ public class CompressorHttp2ConnectionEncoder extends DecoratingHttp2ConnectionE + if (DEFLATE.contentEqualsIgnoreCase(contentEncoding) || X_DEFLATE.contentEqualsIgnoreCase(contentEncoding)) { + return newCompressionChannel(ctx, ZlibWrapper.ZLIB); + } +- if (Brotli.isAvailable() && brotliOptions != null && BR.contentEqualsIgnoreCase(contentEncoding)) { +- return new EmbeddedChannel(ctx.channel().id(), ctx.channel().metadata().hasDisconnect(), +- ctx.channel().config(), new BrotliEncoder(brotliOptions.parameters())); +- } +- if (zstdOptions != null && ZSTD.contentEqualsIgnoreCase(contentEncoding)) { +- return new EmbeddedChannel(ctx.channel().id(), ctx.channel().metadata().hasDisconnect(), +- ctx.channel().config(), new ZstdEncoder(zstdOptions.compressionLevel(), +- zstdOptions.blockSize(), zstdOptions.maxEncodeSize())); +- } +- if (snappyOptions != null && SNAPPY.contentEqualsIgnoreCase(contentEncoding)) { +- return new EmbeddedChannel(ctx.channel().id(), ctx.channel().metadata().hasDisconnect(), +- ctx.channel().config(), new SnappyFrameEncoder()); +- } + // 'identity' or unsupported + return null; + } +diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DelegatingDecompressorFrameListener.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DelegatingDecompressorFrameListener.java +index 73e497ccb8..56a2a93677 100644 +--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DelegatingDecompressorFrameListener.java ++++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DelegatingDecompressorFrameListener.java +@@ -20,24 +20,16 @@ import io.netty.channel.ChannelHandlerContext; + import io.netty.channel.ChannelInboundHandlerAdapter; + import io.netty.channel.embedded.EmbeddedChannel; + import io.netty.handler.codec.ByteToMessageDecoder; +-import io.netty.handler.codec.compression.Brotli; +-import io.netty.handler.codec.compression.BrotliDecoder; +-import io.netty.handler.codec.compression.Zstd; +-import io.netty.handler.codec.compression.ZstdDecoder; + import io.netty.handler.codec.compression.ZlibCodecFactory; + import io.netty.handler.codec.compression.ZlibWrapper; +-import io.netty.handler.codec.compression.SnappyFrameDecoder; + + import static io.netty.handler.codec.http.HttpHeaderNames.CONTENT_ENCODING; + import static io.netty.handler.codec.http.HttpHeaderNames.CONTENT_LENGTH; +-import static io.netty.handler.codec.http.HttpHeaderValues.BR; + import static io.netty.handler.codec.http.HttpHeaderValues.DEFLATE; + import static io.netty.handler.codec.http.HttpHeaderValues.GZIP; + import static io.netty.handler.codec.http.HttpHeaderValues.IDENTITY; + import static io.netty.handler.codec.http.HttpHeaderValues.X_DEFLATE; + import static io.netty.handler.codec.http.HttpHeaderValues.X_GZIP; +-import static io.netty.handler.codec.http.HttpHeaderValues.SNAPPY; +-import static io.netty.handler.codec.http.HttpHeaderValues.ZSTD; + import static io.netty.handler.codec.http2.Http2Error.INTERNAL_ERROR; + import static io.netty.handler.codec.http2.Http2Exception.streamError; + import static io.netty.util.internal.ObjectUtil.checkNotNull; +@@ -175,18 +167,6 @@ public class DelegatingDecompressorFrameListener extends Http2FrameListenerDecor + return new EmbeddedChannel(ctx.channel().id(), ctx.channel().metadata().hasDisconnect(), + ctx.channel().config(), ZlibCodecFactory.newZlibDecoder(wrapper, maxAllocation)); + } +- if (Brotli.isAvailable() && BR.contentEqualsIgnoreCase(contentEncoding)) { +- return new EmbeddedChannel(ctx.channel().id(), ctx.channel().metadata().hasDisconnect(), +- ctx.channel().config(), new BrotliDecoder()); +- } +- if (SNAPPY.contentEqualsIgnoreCase(contentEncoding)) { +- return new EmbeddedChannel(ctx.channel().id(), ctx.channel().metadata().hasDisconnect(), +- ctx.channel().config(), new SnappyFrameDecoder()); +- } +- if (Zstd.isAvailable() && ZSTD.contentEqualsIgnoreCase(contentEncoding)) { +- return new EmbeddedChannel(ctx.channel().id(), ctx.channel().metadata().hasDisconnect(), +- ctx.channel().config(), new ZstdDecoder()); +- } + // 'identity' or unsupported + return null; + } +diff --git a/codec/src/main/java/io/netty/handler/codec/compression/StandardCompressionOptions.java b/codec/src/main/java/io/netty/handler/codec/compression/StandardCompressionOptions.java +index 38793a97e6..c1f1c8c17c 100644 +--- a/codec/src/main/java/io/netty/handler/codec/compression/StandardCompressionOptions.java ++++ b/codec/src/main/java/io/netty/handler/codec/compression/StandardCompressionOptions.java +@@ -15,11 +15,10 @@ + */ + package io.netty.handler.codec.compression; + +-import com.aayushatharva.brotli4j.encoder.Encoder; + import io.netty.util.internal.ObjectUtil; + + /** +- * Standard Compression Options for {@link BrotliOptions}, ++ * Standard Compression Options for + * {@link GzipOptions} and {@link DeflateOptions} + */ + public final class StandardCompressionOptions { +@@ -28,73 +27,6 @@ public final class StandardCompressionOptions { + // Prevent outside initialization + } + +- /** +- * Default implementation of {@link BrotliOptions} with {@link Encoder.Parameters#setQuality(int)} set to 4 +- * and {@link Encoder.Parameters#setMode(Encoder.Mode)} set to {@link Encoder.Mode#TEXT} +- */ +- public static BrotliOptions brotli() { +- return BrotliOptions.DEFAULT; +- } +- +- /** +- * Create a new {@link BrotliOptions} +- * +- * @param parameters {@link Encoder.Parameters} Instance +- * @throws NullPointerException If {@link Encoder.Parameters} is {@code null} +- * @deprecated Use {@link #brotli(int, int, BrotliMode)} +- */ +- @Deprecated +- public static BrotliOptions brotli(Encoder.Parameters parameters) { +- return new BrotliOptions(parameters); +- } +- +- /** +- * Create a new {@link BrotliOptions} +- * +- * @param quality Specifies the compression level. +- * @param window Specifies the size of the sliding window when compressing. +- * @param mode optimizes the compression algorithm based on the type of input data. +- * @throws NullPointerException If {@link BrotliMode} is {@code null} +- */ +- public static BrotliOptions brotli(int quality, int window, BrotliMode mode) { +- ObjectUtil.checkInRange(quality, 0, 11, "quality"); +- ObjectUtil.checkInRange(window, 10, 24, "window"); +- ObjectUtil.checkNotNull(mode, "mode"); +- +- Encoder.Parameters parameters = new Encoder.Parameters() +- .setQuality(quality) +- .setWindow(window) +- .setMode(mode.adapt()); +- return new BrotliOptions(parameters); +- } +- +- /** +- * Default implementation of {@link ZstdOptions} with{compressionLevel(int)} set to +- * {@link ZstdConstants#DEFAULT_COMPRESSION_LEVEL},{@link ZstdConstants#DEFAULT_BLOCK_SIZE}, +- * {@link ZstdConstants#MAX_BLOCK_SIZE} +- */ +- public static ZstdOptions zstd() { +- return ZstdOptions.DEFAULT; +- } +- +- /** +- * Create a new {@link ZstdOptions} +- * +- * @param blockSize is used to calculate the compressionLevel +- * @param maxEncodeSize specifies the size of the largest compressed object +- * @param compressionLevel specifies the level of the compression +- */ +- public static ZstdOptions zstd(int compressionLevel, int blockSize, int maxEncodeSize) { +- return new ZstdOptions(compressionLevel, blockSize, maxEncodeSize); +- } +- +- /** +- * Create a new {@link SnappyOptions} +- */ +- public static SnappyOptions snappy() { +- return new SnappyOptions(); +- } +- + /** + * Default implementation of {@link GzipOptions} with + * {@code compressionLevel()} set to 6, {@code windowBits()} set to 15 and {@code memLevel()} set to 8. +-- +2.51.0 + |