Add io.netty.noJdkZlibEncoder system property
Related issue: #2821 Motivation: There's no way for a user to change the default ZlibEncoder implementation. It is already possible to change the default ZlibDecoder implementation. Modification: Add a new system property 'io.netty.noJdkZlibEncoder'. Result: A user can disable JDK ZlibEncoder, just like he or she can disable JDK ZlibDecoder.
This commit is contained in:
parent
b201877734
commit
8cb6b779c9
@ -26,15 +26,22 @@ import io.netty.util.internal.logging.InternalLoggerFactory;
|
||||
public final class ZlibCodecFactory {
|
||||
private static final InternalLogger logger = InternalLoggerFactory.getInstance(ZlibCodecFactory.class);
|
||||
|
||||
private static final int DEFAULT_JDK_WINDOW_SIZE = 15;
|
||||
private static final int DEFAULT_JDK_MEM_LEVEL = 8;
|
||||
|
||||
private static final boolean noJdkZlibDecoder;
|
||||
private static final boolean noJdkZlibEncoder;
|
||||
|
||||
static {
|
||||
noJdkZlibDecoder = SystemPropertyUtil.getBoolean("io.netty.noJdkZlibDecoder", true);
|
||||
logger.debug("-Dio.netty.noJdkZlibDecoder: {}", noJdkZlibDecoder);
|
||||
|
||||
noJdkZlibEncoder = SystemPropertyUtil.getBoolean("io.netty.noJdkZlibEncoder", false);
|
||||
logger.debug("-Dio.netty.noJdkZlibEncoder: {}", noJdkZlibEncoder);
|
||||
}
|
||||
|
||||
public static ZlibEncoder newZlibEncoder(int compressionLevel) {
|
||||
if (PlatformDependent.javaVersion() < 7) {
|
||||
if (PlatformDependent.javaVersion() < 7 || noJdkZlibEncoder) {
|
||||
return new JZlibEncoder(compressionLevel);
|
||||
} else {
|
||||
return new JdkZlibEncoder(compressionLevel);
|
||||
@ -42,7 +49,7 @@ public final class ZlibCodecFactory {
|
||||
}
|
||||
|
||||
public static ZlibEncoder newZlibEncoder(ZlibWrapper wrapper) {
|
||||
if (PlatformDependent.javaVersion() < 7) {
|
||||
if (PlatformDependent.javaVersion() < 7 || noJdkZlibEncoder) {
|
||||
return new JZlibEncoder(wrapper);
|
||||
} else {
|
||||
return new JdkZlibEncoder(wrapper);
|
||||
@ -50,7 +57,7 @@ public final class ZlibCodecFactory {
|
||||
}
|
||||
|
||||
public static ZlibEncoder newZlibEncoder(ZlibWrapper wrapper, int compressionLevel) {
|
||||
if (PlatformDependent.javaVersion() < 7) {
|
||||
if (PlatformDependent.javaVersion() < 7 || noJdkZlibEncoder) {
|
||||
return new JZlibEncoder(wrapper, compressionLevel);
|
||||
} else {
|
||||
return new JdkZlibEncoder(wrapper, compressionLevel);
|
||||
@ -58,7 +65,8 @@ public final class ZlibCodecFactory {
|
||||
}
|
||||
|
||||
public static ZlibEncoder newZlibEncoder(ZlibWrapper wrapper, int compressionLevel, int windowBits, int memLevel) {
|
||||
if (PlatformDependent.javaVersion() < 7) {
|
||||
if (PlatformDependent.javaVersion() < 7 || noJdkZlibEncoder ||
|
||||
windowBits != DEFAULT_JDK_WINDOW_SIZE || memLevel != DEFAULT_JDK_MEM_LEVEL) {
|
||||
return new JZlibEncoder(wrapper, compressionLevel, windowBits, memLevel);
|
||||
} else {
|
||||
return new JdkZlibEncoder(wrapper, compressionLevel);
|
||||
@ -66,7 +74,7 @@ public final class ZlibCodecFactory {
|
||||
}
|
||||
|
||||
public static ZlibEncoder newZlibEncoder(byte[] dictionary) {
|
||||
if (PlatformDependent.javaVersion() < 7) {
|
||||
if (PlatformDependent.javaVersion() < 7 || noJdkZlibEncoder) {
|
||||
return new JZlibEncoder(dictionary);
|
||||
} else {
|
||||
return new JdkZlibEncoder(dictionary);
|
||||
@ -74,7 +82,7 @@ public final class ZlibCodecFactory {
|
||||
}
|
||||
|
||||
public static ZlibEncoder newZlibEncoder(int compressionLevel, byte[] dictionary) {
|
||||
if (PlatformDependent.javaVersion() < 7) {
|
||||
if (PlatformDependent.javaVersion() < 7 || noJdkZlibEncoder) {
|
||||
return new JZlibEncoder(compressionLevel, dictionary);
|
||||
} else {
|
||||
return new JdkZlibEncoder(compressionLevel, dictionary);
|
||||
@ -82,7 +90,9 @@ public final class ZlibCodecFactory {
|
||||
}
|
||||
|
||||
public static ZlibEncoder newZlibEncoder(int compressionLevel, int windowBits, int memLevel, byte[] dictionary) {
|
||||
if (PlatformDependent.javaVersion() < 7) {
|
||||
if (PlatformDependent.javaVersion() < 7 ||
|
||||
windowBits != DEFAULT_JDK_WINDOW_SIZE || memLevel != DEFAULT_JDK_MEM_LEVEL ||
|
||||
noJdkZlibEncoder) {
|
||||
return new JZlibEncoder(compressionLevel, windowBits, memLevel, dictionary);
|
||||
} else {
|
||||
return new JdkZlibEncoder(compressionLevel, dictionary);
|
||||
|
Loading…
Reference in New Issue
Block a user