diff --git a/buffer/src/main/java/io/netty/buffer/Unpooled.java b/buffer/src/main/java/io/netty/buffer/Unpooled.java index 756360cd90f..6d9a90be793 100644 --- a/buffer/src/main/java/io/netty/buffer/Unpooled.java +++ b/buffer/src/main/java/io/netty/buffer/Unpooled.java @@ -87,6 +87,7 @@ public final class Unpooled { /** * A buffer whose capacity is {@code 0}. */ + @SuppressWarnings("checkstyle:StaticFinalBuffer") // EmptyByteBuf is not writeable or readable. public static final ByteBuf EMPTY_BUFFER = ALLOC.buffer(0, 0); static { diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/HttpObjectEncoder.java b/codec-http/src/main/java/io/netty/handler/codec/http/HttpObjectEncoder.java index bf51aad6861..e0df154f0df 100755 --- a/codec-http/src/main/java/io/netty/handler/codec/http/HttpObjectEncoder.java +++ b/codec-http/src/main/java/io/netty/handler/codec/http/HttpObjectEncoder.java @@ -50,9 +50,10 @@ public abstract class HttpObjectEncoder extends MessageTo static final int CRLF_SHORT = (CR << 8) | LF; private static final int ZERO_CRLF_MEDIUM = ('0' << 16) | CRLF_SHORT; private static final byte[] ZERO_CRLF_CRLF = { '0', CR, LF, CR, LF }; - private static final ByteBuf CRLF_BUF = unreleasableBuffer(directBuffer(2).writeByte(CR).writeByte(LF)); - private static final ByteBuf ZERO_CRLF_CRLF_BUF = unreleasableBuffer(directBuffer(ZERO_CRLF_CRLF.length) - .writeBytes(ZERO_CRLF_CRLF)); + private static final ByteBuf CRLF_BUF = unreleasableBuffer( + directBuffer(2).writeByte(CR).writeByte(LF)).asReadOnly(); + private static final ByteBuf ZERO_CRLF_CRLF_BUF = unreleasableBuffer( + directBuffer(ZERO_CRLF_CRLF.length).writeBytes(ZERO_CRLF_CRLF)).asReadOnly(); private static final float HEADERS_WEIGHT_NEW = 1 / 5f; private static final float HEADERS_WEIGHT_HISTORICAL = 1 - HEADERS_WEIGHT_NEW; private static final float TRAILERS_WEIGHT_NEW = HEADERS_WEIGHT_NEW; diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocket00FrameEncoder.java b/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocket00FrameEncoder.java index fbea9988049..b658e0b250f 100644 --- a/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocket00FrameEncoder.java +++ b/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocket00FrameEncoder.java @@ -32,11 +32,11 @@ @Sharable public class WebSocket00FrameEncoder extends MessageToMessageEncoder implements WebSocketFrameEncoder { private static final ByteBuf _0X00 = Unpooled.unreleasableBuffer( - Unpooled.directBuffer(1, 1).writeByte((byte) 0x00)); + Unpooled.directBuffer(1, 1).writeByte((byte) 0x00)).asReadOnly(); private static final ByteBuf _0XFF = Unpooled.unreleasableBuffer( - Unpooled.directBuffer(1, 1).writeByte((byte) 0xFF)); + Unpooled.directBuffer(1, 1).writeByte((byte) 0xFF)).asReadOnly(); private static final ByteBuf _0XFF_0X00 = Unpooled.unreleasableBuffer( - Unpooled.directBuffer(2, 2).writeByte((byte) 0xFF).writeByte((byte) 0x00)); + Unpooled.directBuffer(2, 2).writeByte((byte) 0xFF).writeByte((byte) 0x00)).asReadOnly(); @Override protected void encode(ChannelHandlerContext ctx, WebSocketFrame msg, List out) throws Exception { diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/CleartextHttp2ServerUpgradeHandler.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/CleartextHttp2ServerUpgradeHandler.java index 2ae27da4595..95ed2411c2e 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/CleartextHttp2ServerUpgradeHandler.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/CleartextHttp2ServerUpgradeHandler.java @@ -39,7 +39,7 @@ */ @UnstableApi public final class CleartextHttp2ServerUpgradeHandler extends ByteToMessageDecoder { - private static final ByteBuf CONNECTION_PREFACE = unreleasableBuffer(connectionPrefaceBuf()); + private static final ByteBuf CONNECTION_PREFACE = unreleasableBuffer(connectionPrefaceBuf()).asReadOnly(); private final HttpServerCodec httpServerCodec; private final HttpServerUpgradeHandler httpServerUpgradeHandler; diff --git a/codec-smtp/src/main/java/io/netty/handler/codec/smtp/SmtpRequestEncoder.java b/codec-smtp/src/main/java/io/netty/handler/codec/smtp/SmtpRequestEncoder.java index 3845fbbaa12..2979d008d93 100644 --- a/codec-smtp/src/main/java/io/netty/handler/codec/smtp/SmtpRequestEncoder.java +++ b/codec-smtp/src/main/java/io/netty/handler/codec/smtp/SmtpRequestEncoder.java @@ -34,7 +34,7 @@ public final class SmtpRequestEncoder extends MessageToMessageEncoder { private static final int CRLF_SHORT = ('\r' << 8) | '\n'; private static final byte SP = ' '; private static final ByteBuf DOT_CRLF_BUFFER = Unpooled.unreleasableBuffer( - Unpooled.directBuffer(3).writeByte('.').writeByte('\r').writeByte('\n')); + Unpooled.directBuffer(3).writeByte('.').writeByte('\r').writeByte('\n')).asReadOnly(); private boolean contentExpected; diff --git a/codec/src/main/java/io/netty/handler/codec/ReplayingDecoderByteBuf.java b/codec/src/main/java/io/netty/handler/codec/ReplayingDecoderByteBuf.java index 287a7e7767b..b96a6e44a88 100644 --- a/codec/src/main/java/io/netty/handler/codec/ReplayingDecoderByteBuf.java +++ b/codec/src/main/java/io/netty/handler/codec/ReplayingDecoderByteBuf.java @@ -44,6 +44,7 @@ final class ReplayingDecoderByteBuf extends ByteBuf { private boolean terminated; private SwappedByteBuf swapped; + @SuppressWarnings("checkstyle:StaticFinalBuffer") // Unpooled.EMPTY_BUFFER is not writeable or readable. static final ReplayingDecoderByteBuf EMPTY_BUFFER = new ReplayingDecoderByteBuf(Unpooled.EMPTY_BUFFER); static { diff --git a/codec/src/test/java/io/netty/handler/codec/compression/AbstractDecoderTest.java b/codec/src/test/java/io/netty/handler/codec/compression/AbstractDecoderTest.java index 099db803aca..2d708d80a23 100644 --- a/codec/src/test/java/io/netty/handler/codec/compression/AbstractDecoderTest.java +++ b/codec/src/test/java/io/netty/handler/codec/compression/AbstractDecoderTest.java @@ -31,13 +31,10 @@ @TestInstance(TestInstance.Lifecycle.PER_CLASS) public abstract class AbstractDecoderTest extends AbstractCompressionTest { - protected static final ByteBuf WRAPPED_BYTES_SMALL; - protected static final ByteBuf WRAPPED_BYTES_LARGE; - - static { - WRAPPED_BYTES_SMALL = Unpooled.wrappedBuffer(BYTES_SMALL); - WRAPPED_BYTES_LARGE = Unpooled.wrappedBuffer(BYTES_LARGE); - } + protected static final ByteBuf WRAPPED_BYTES_SMALL = Unpooled.unreleasableBuffer( + Unpooled.wrappedBuffer(BYTES_SMALL)).asReadOnly(); + protected static final ByteBuf WRAPPED_BYTES_LARGE = Unpooled.unreleasableBuffer( + Unpooled.wrappedBuffer(BYTES_LARGE)).asReadOnly(); protected EmbeddedChannel channel; @@ -86,19 +83,19 @@ public ByteBuf[] largeData() { @ParameterizedTest @MethodSource("smallData") public void testDecompressionOfSmallChunkOfData(ByteBuf data) throws Exception { - testDecompression(WRAPPED_BYTES_SMALL, data); + testDecompression(WRAPPED_BYTES_SMALL.duplicate(), data); } @ParameterizedTest @MethodSource("largeData") public void testDecompressionOfLargeChunkOfData(ByteBuf data) throws Exception { - testDecompression(WRAPPED_BYTES_LARGE, data); + testDecompression(WRAPPED_BYTES_LARGE.duplicate(), data); } @ParameterizedTest @MethodSource("largeData") public void testDecompressionOfBatchedFlowOfData(ByteBuf data) throws Exception { - testDecompressionOfBatchedFlow(WRAPPED_BYTES_LARGE, data); + testDecompressionOfBatchedFlow(WRAPPED_BYTES_LARGE.duplicate(), data); } protected void testDecompression(final ByteBuf expected, final ByteBuf data) throws Exception { diff --git a/codec/src/test/java/io/netty/handler/codec/compression/BrotliDecoderTest.java b/codec/src/test/java/io/netty/handler/codec/compression/BrotliDecoderTest.java index dfd8653821b..a513d6e95df 100644 --- a/codec/src/test/java/io/netty/handler/codec/compression/BrotliDecoderTest.java +++ b/codec/src/test/java/io/netty/handler/codec/compression/BrotliDecoderTest.java @@ -41,8 +41,6 @@ public class BrotliDecoderTest { private static final Random RANDOM; private static final byte[] BYTES_SMALL = new byte[256]; private static final byte[] BYTES_LARGE = new byte[256 * 1024]; - private static final ByteBuf WRAPPED_BYTES_SMALL; - private static final ByteBuf WRAPPED_BYTES_LARGE; private static final byte[] COMPRESSED_BYTES_SMALL; private static final byte[] COMPRESSED_BYTES_LARGE; @@ -52,8 +50,6 @@ public class BrotliDecoderTest { RANDOM = new Random(); fillArrayWithCompressibleData(BYTES_SMALL); fillArrayWithCompressibleData(BYTES_LARGE); - WRAPPED_BYTES_SMALL = Unpooled.wrappedBuffer(BYTES_SMALL); - WRAPPED_BYTES_LARGE = Unpooled.wrappedBuffer(BYTES_LARGE); COMPRESSED_BYTES_SMALL = compress(BYTES_SMALL); COMPRESSED_BYTES_LARGE = compress(BYTES_LARGE); } catch (Throwable throwable) { @@ -61,6 +57,11 @@ public class BrotliDecoderTest { } } + private static final ByteBuf WRAPPED_BYTES_SMALL = Unpooled.unreleasableBuffer( + Unpooled.wrappedBuffer(BYTES_SMALL)).asReadOnly(); + private static final ByteBuf WRAPPED_BYTES_LARGE = Unpooled.unreleasableBuffer( + Unpooled.wrappedBuffer(BYTES_LARGE)).asReadOnly(); + static boolean isNotSupported() { return PlatformDependent.isOsx() && "aarch_64".equals(PlatformDependent.normalizedArch()); } @@ -111,13 +112,13 @@ public static ByteBuf[] largeData() { @ParameterizedTest @MethodSource("smallData") public void testDecompressionOfSmallChunkOfData(ByteBuf data) { - testDecompression(WRAPPED_BYTES_SMALL, data); + testDecompression(WRAPPED_BYTES_SMALL.duplicate(), data); } @ParameterizedTest @MethodSource("largeData") public void testDecompressionOfLargeChunkOfData(ByteBuf data) { - testDecompression(WRAPPED_BYTES_LARGE, data); + testDecompression(WRAPPED_BYTES_LARGE.duplicate(), data); } @ParameterizedTest diff --git a/example/src/main/java/io/netty/example/http2/helloworld/frame/server/HelloWorldHttp2Handler.java b/example/src/main/java/io/netty/example/http2/helloworld/frame/server/HelloWorldHttp2Handler.java index de0ff797e2b..110f5942a36 100644 --- a/example/src/main/java/io/netty/example/http2/helloworld/frame/server/HelloWorldHttp2Handler.java +++ b/example/src/main/java/io/netty/example/http2/helloworld/frame/server/HelloWorldHttp2Handler.java @@ -42,7 +42,8 @@ @Sharable public class HelloWorldHttp2Handler extends ChannelDuplexHandler { - static final ByteBuf RESPONSE_BYTES = unreleasableBuffer(copiedBuffer("Hello World", CharsetUtil.UTF_8)); + static final ByteBuf RESPONSE_BYTES = unreleasableBuffer( + copiedBuffer("Hello World", CharsetUtil.UTF_8)).asReadOnly(); @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { diff --git a/example/src/main/java/io/netty/example/http2/helloworld/multiplex/server/HelloWorldHttp2Handler.java b/example/src/main/java/io/netty/example/http2/helloworld/multiplex/server/HelloWorldHttp2Handler.java index 76a627d4eea..3fd73a6b560 100644 --- a/example/src/main/java/io/netty/example/http2/helloworld/multiplex/server/HelloWorldHttp2Handler.java +++ b/example/src/main/java/io/netty/example/http2/helloworld/multiplex/server/HelloWorldHttp2Handler.java @@ -40,7 +40,8 @@ @Sharable public class HelloWorldHttp2Handler extends ChannelDuplexHandler { - static final ByteBuf RESPONSE_BYTES = unreleasableBuffer(copiedBuffer("Hello World", CharsetUtil.UTF_8)); + static final ByteBuf RESPONSE_BYTES = unreleasableBuffer( + copiedBuffer("Hello World", CharsetUtil.UTF_8)).asReadOnly(); @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { diff --git a/example/src/main/java/io/netty/example/http2/helloworld/server/HelloWorldHttp2Handler.java b/example/src/main/java/io/netty/example/http2/helloworld/server/HelloWorldHttp2Handler.java index df20d34f571..1517f768215 100644 --- a/example/src/main/java/io/netty/example/http2/helloworld/server/HelloWorldHttp2Handler.java +++ b/example/src/main/java/io/netty/example/http2/helloworld/server/HelloWorldHttp2Handler.java @@ -42,7 +42,8 @@ */ public final class HelloWorldHttp2Handler extends Http2ConnectionHandler implements Http2FrameListener { - static final ByteBuf RESPONSE_BYTES = unreleasableBuffer(copiedBuffer("Hello World", CharsetUtil.UTF_8)); + static final ByteBuf RESPONSE_BYTES = unreleasableBuffer( + copiedBuffer("Hello World", CharsetUtil.UTF_8)).asReadOnly(); HelloWorldHttp2Handler(Http2ConnectionDecoder decoder, Http2ConnectionEncoder encoder, Http2Settings initialSettings) { diff --git a/pom.xml b/pom.xml index f779c157b28..70185984b63 100644 --- a/pom.xml +++ b/pom.xml @@ -484,7 +484,7 @@ ${project.build.directory}/dev-tools UTF-8 UTF-8 - 29 + 30 1.4.11.Final 2.0.10 "${settings.localRepository}"/org/mortbay/jetty/alpn/jetty-alpn-agent/${jetty.alpnAgent.version}/jetty-alpn-agent-${jetty.alpnAgent.version}.jar diff --git a/testsuite-http2/src/main/java/io/netty/testsuite/http2/HelloWorldHttp2Handler.java b/testsuite-http2/src/main/java/io/netty/testsuite/http2/HelloWorldHttp2Handler.java index 7af4caac0ac..001eaefe162 100644 --- a/testsuite-http2/src/main/java/io/netty/testsuite/http2/HelloWorldHttp2Handler.java +++ b/testsuite-http2/src/main/java/io/netty/testsuite/http2/HelloWorldHttp2Handler.java @@ -42,7 +42,8 @@ */ public final class HelloWorldHttp2Handler extends Http2ConnectionHandler implements Http2FrameListener { - static final ByteBuf RESPONSE_BYTES = unreleasableBuffer(copiedBuffer("Hello World", CharsetUtil.UTF_8)); + static final ByteBuf RESPONSE_BYTES = unreleasableBuffer( + copiedBuffer("Hello World", CharsetUtil.UTF_8)).asReadOnly(); HelloWorldHttp2Handler(Http2ConnectionDecoder decoder, Http2ConnectionEncoder encoder, Http2Settings initialSettings) {