Add Zstd.isAvailable() check in ZstdOptions (#11597)
Motivation: At present, the verification methods of `ZstdOptions` and `BrotliOptions` are not consistent, and the processing methods of `ZstdOptions` and `BrotliOptions` in `HttpContentCompressor` are also inconsistent. The http2 module does not add zstd-jni dependency, so `ClassNotFoundException` may be thrown Modification: Added `Zstd.isAvailable()` check in `ZstdOptions` to be consistent, and added zstd-jni dependency in http2 module Result: The verification methods of `ZstdOptions` and `BrotliOptions` are consistent, and `ClassNotFoundException` will not be thrown Signed-off-by: xingrufei <xingrufei@sogou-inc.com>
This commit is contained in:
parent
93484071d6
commit
9f4e155e36
@ -186,8 +186,7 @@ public class HttpContentCompressor extends HttpContentEncoder {
|
|||||||
} else if (compressionOption instanceof DeflateOptions) {
|
} else if (compressionOption instanceof DeflateOptions) {
|
||||||
deflateOptions = (DeflateOptions) compressionOption;
|
deflateOptions = (DeflateOptions) compressionOption;
|
||||||
} else if (compressionOption instanceof ZstdOptions) {
|
} else if (compressionOption instanceof ZstdOptions) {
|
||||||
// zstd might not be available
|
zstdOptions = (ZstdOptions) compressionOption;
|
||||||
zstdOptions = Zstd.isAvailable() ? (ZstdOptions) compressionOption : null;
|
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalArgumentException("Unsupported " + CompressionOptions.class.getSimpleName() +
|
throw new IllegalArgumentException("Unsupported " + CompressionOptions.class.getSimpleName() +
|
||||||
": " + compressionOption);
|
": " + compressionOption);
|
||||||
|
@ -95,6 +95,11 @@
|
|||||||
<artifactId>brotli4j</artifactId>
|
<artifactId>brotli4j</artifactId>
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.luben</groupId>
|
||||||
|
<artifactId>zstd-jni</artifactId>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|
||||||
|
@ -34,11 +34,11 @@ public final class BrotliOptions implements CompressionOptions {
|
|||||||
);
|
);
|
||||||
|
|
||||||
BrotliOptions(Encoder.Parameters parameters) {
|
BrotliOptions(Encoder.Parameters parameters) {
|
||||||
this.parameters = ObjectUtil.checkNotNull(parameters, "Parameters");
|
|
||||||
|
|
||||||
if (!Brotli.isAvailable()) {
|
if (!Brotli.isAvailable()) {
|
||||||
throw new IllegalStateException("Brotli is not available", Brotli.cause());
|
throw new IllegalStateException("Brotli is not available", Brotli.cause());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.parameters = ObjectUtil.checkNotNull(parameters, "Parameters");
|
||||||
}
|
}
|
||||||
|
|
||||||
public Encoder.Parameters parameters() {
|
public Encoder.Parameters parameters() {
|
||||||
|
@ -50,6 +50,10 @@ public class ZstdOptions implements CompressionOptions {
|
|||||||
* specifies the level of the compression
|
* specifies the level of the compression
|
||||||
*/
|
*/
|
||||||
ZstdOptions(int compressionLevel, int blockSize, int maxEncodeSize) {
|
ZstdOptions(int compressionLevel, int blockSize, int maxEncodeSize) {
|
||||||
|
if (!Zstd.isAvailable()) {
|
||||||
|
throw new IllegalStateException("zstd-jni is not available", Zstd.cause());
|
||||||
|
}
|
||||||
|
|
||||||
this.compressionLevel = ObjectUtil.checkInRange(compressionLevel, 0, MAX_COMPRESSION_LEVEL, "compressionLevel");
|
this.compressionLevel = ObjectUtil.checkInRange(compressionLevel, 0, MAX_COMPRESSION_LEVEL, "compressionLevel");
|
||||||
this.blockSize = ObjectUtil.checkPositive(blockSize, "blockSize");
|
this.blockSize = ObjectUtil.checkPositive(blockSize, "blockSize");
|
||||||
this.maxEncodeSize = ObjectUtil.checkPositive(maxEncodeSize, "maxEncodeSize");
|
this.maxEncodeSize = ObjectUtil.checkPositive(maxEncodeSize, "maxEncodeSize");
|
||||||
|
Loading…
Reference in New Issue
Block a user