From 6c9f1cbb4e6211c3b13d7eff8cc43a1e043083f7 Mon Sep 17 00:00:00 2001 From: Chris Vest Date: Thu, 23 Sep 2021 10:57:22 +0200 Subject: [PATCH] Update compatibility and fix build The compatibility baseline is now Java 17, which means we can use new language features and new bytecode version. The MemSegBuffer implementation has been updated with the latest API changes from netty/main. --- .../netty/buffer/api/memseg/MemSegBuffer.java | 81 ++----------------- .../api/tests/BufferBulkAccessTest.java | 18 ----- .../api/tests/BufferCompositionTest.java | 46 +++++------ .../ByteToMessageDecoder.java | 5 ++ pom.xml | 4 +- 5 files changed, 36 insertions(+), 118 deletions(-) diff --git a/buffer-memseg/src/main/java/io/netty/buffer/api/memseg/MemSegBuffer.java b/buffer-memseg/src/main/java/io/netty/buffer/api/memseg/MemSegBuffer.java index 2d57f7b..efaf177 100644 --- a/buffer-memseg/src/main/java/io/netty/buffer/api/memseg/MemSegBuffer.java +++ b/buffer-memseg/src/main/java/io/netty/buffer/api/memseg/MemSegBuffer.java @@ -26,7 +26,6 @@ import io.netty.buffer.api.ReadableComponent; import io.netty.buffer.api.ReadableComponentProcessor; import io.netty.buffer.api.WritableComponent; import io.netty.buffer.api.WritableComponentProcessor; -import io.netty.buffer.api.adaptor.BufferIntegratable; import io.netty.buffer.api.internal.AdaptableBuffer; import io.netty.buffer.api.internal.ArcDrop; import io.netty.buffer.api.internal.Statics; @@ -53,8 +52,7 @@ import static jdk.incubator.foreign.MemoryAccess.setIntAtOffset; import static jdk.incubator.foreign.MemoryAccess.setLongAtOffset; import static jdk.incubator.foreign.MemoryAccess.setShortAtOffset; -class MemSegBuffer extends AdaptableBuffer implements Buffer, ReadableComponent, - WritableComponent, BufferIntegratable { +class MemSegBuffer extends AdaptableBuffer implements ReadableComponent, WritableComponent { private static final MemorySegment CLOSED_SEGMENT; private static final MemorySegment ZERO_OFFHEAP_SEGMENT; private static final MemorySegment ZERO_ONHEAP_SEGMENT; @@ -96,7 +94,7 @@ class MemSegBuffer extends AdaptableBuffer implements Buffer, Read private boolean constBuffer; MemSegBuffer(MemorySegment base, MemorySegment view, Drop drop, AllocatorControl control) { - super(new MakeInaccisbleOnDrop(ArcDrop.wrap(drop))); + super(ArcDrop.wrap(drop)); this.control = control; this.base = base; seg = view; @@ -108,7 +106,7 @@ class MemSegBuffer extends AdaptableBuffer implements Buffer, Read * Constructor for {@linkplain BufferAllocator#constBufferSupplier(byte[]) const buffers}. */ MemSegBuffer(MemSegBuffer parent) { - super(new MakeInaccisbleOnDrop(new ArcDrop<>(ArcDrop.acquire(parent.unsafeGetDrop())))); + super(new ArcDrop<>(ArcDrop.acquire(parent.unsafeGetDrop()))); control = parent.control; base = parent.base; seg = parent.seg; @@ -119,44 +117,6 @@ class MemSegBuffer extends AdaptableBuffer implements Buffer, Read constBuffer = true; } - private static final class MakeInaccisbleOnDrop implements Drop { - final Drop delegate; - - private MakeInaccisbleOnDrop(Drop delegate) { - this.delegate = delegate; - } - - @Override - public void drop(MemSegBuffer buf) { - try { - delegate.drop(buf); - } finally { - buf.makeInaccessible(); - } - } - - @Override - public void attach(MemSegBuffer buf) { - delegate.attach(buf); - } - - @Override - public String toString() { - return "MemSegDrop(" + delegate + ')'; - } - } - - @Override - protected Drop unsafeGetDrop() { - MakeInaccisbleOnDrop drop = (MakeInaccisbleOnDrop) super.unsafeGetDrop(); - return drop.delegate; - } - - @Override - protected void unsafeSetDrop(Drop replacement) { - super.unsafeSetDrop(new MakeInaccisbleOnDrop(replacement)); - } - @Override public String toString() { return "Buffer[roff:" + roff + ", woff:" + woff + ", cap:" + seg.byteSize() + ']'; @@ -273,8 +233,7 @@ class MemSegBuffer extends AdaptableBuffer implements Buffer, Read } // - @Override - public long nativeAddress() { + private long nativeAddress() { if (!isAccessible()) { throw bufferIsClosed(this); } @@ -386,22 +345,8 @@ class MemSegBuffer extends AdaptableBuffer implements Buffer, Read final MemorySegment segment = seg; int index = fromOffset; final int end = index + length; - long longValue = -1; byte byteValue = -1; - public boolean readLong() { - if (index + Long.BYTES <= end) { - longValue = getLongAtOffset(segment, index, ByteOrder.BIG_ENDIAN); - index += Long.BYTES; - return true; - } - return false; - } - - public long getLong() { - return longValue; - } - @Override public boolean readByte() { if (index < end) { @@ -457,23 +402,8 @@ class MemSegBuffer extends AdaptableBuffer implements Buffer, Read final MemorySegment segment = seg; int index = fromOffset; final int end = index - length; - long longValue = -1; byte byteValue = -1; - public boolean readLong() { - if (index - Long.BYTES >= end) { - index -= 7; - longValue = getLongAtOffset(segment, index, ByteOrder.LITTLE_ENDIAN); - index--; - return true; - } - return false; - } - - public long getLong() { - return longValue; - } - @Override public boolean readByte() { if (index > end) { @@ -1139,7 +1069,8 @@ class MemSegBuffer extends AdaptableBuffer implements Buffer, Read }; } - void makeInaccessible() { + @Override + protected void makeInaccessible() { base = CLOSED_SEGMENT; seg = CLOSED_SEGMENT; wseg = CLOSED_SEGMENT; diff --git a/buffer-tests/src/test/java/io/netty/buffer/api/tests/BufferBulkAccessTest.java b/buffer-tests/src/test/java/io/netty/buffer/api/tests/BufferBulkAccessTest.java index ba9a495..13565d5 100644 --- a/buffer-tests/src/test/java/io/netty/buffer/api/tests/BufferBulkAccessTest.java +++ b/buffer-tests/src/test/java/io/netty/buffer/api/tests/BufferBulkAccessTest.java @@ -228,24 +228,6 @@ public class BufferBulkAccessTest extends BufferTestSupport { } } - @ParameterizedTest - @MethodSource("heapAllocators") - public void heapBufferMustHaveZeroAddress(Fixture fixture) { - try (BufferAllocator allocator = fixture.createAllocator(); - Buffer buf = allocator.allocate(8)) { - assertThat(buf.nativeAddress()).isZero(); - } - } - - @ParameterizedTest - @MethodSource("directAllocators") - public void directBufferMustHaveNonZeroAddress(Fixture fixture) { - try (BufferAllocator allocator = fixture.createAllocator(); - Buffer buf = allocator.allocate(8)) { - assertThat(buf.nativeAddress()).isNotZero(); - } - } - @ParameterizedTest @MethodSource("allocators") public void writeBytesMustWriteAllBytesFromByteArray(Fixture fixture) { diff --git a/buffer-tests/src/test/java/io/netty/buffer/api/tests/BufferCompositionTest.java b/buffer-tests/src/test/java/io/netty/buffer/api/tests/BufferCompositionTest.java index 1736ebb..170fcfb 100644 --- a/buffer-tests/src/test/java/io/netty/buffer/api/tests/BufferCompositionTest.java +++ b/buffer-tests/src/test/java/io/netty/buffer/api/tests/BufferCompositionTest.java @@ -113,7 +113,7 @@ public class BufferCompositionTest extends BufferTestSupport { Buffer a = allocator.allocate(8); Buffer b = allocator.allocate(8); CompositeBuffer composed = CompositeBuffer.compose(allocator, a.send())) { - try (Buffer ignore = acquire(composed)) { + try (Buffer ignore = acquire((ResourceSupport) composed)) { var exc = assertThrows(IllegalStateException.class, () -> composed.extendWith(b.send())); assertThat(exc).hasMessageContaining("owned"); } @@ -144,13 +144,13 @@ public class BufferCompositionTest extends BufferTestSupport { try (BufferAllocator allocator = BufferAllocator.onHeapUnpooled()) { Buffer a = allocator.allocate(1); CompositeBuffer composite = CompositeBuffer.compose(allocator, a.send()); - assertTrue(isOwned(composite)); + assertTrue(isOwned((ResourceSupport) composite)); assertThat(composite.capacity()).isOne(); assertThat(composite.countComponents()).isOne(); try (Buffer b = CompositeBuffer.compose(allocator)) { composite.extendWith(b.send()); } - assertTrue(isOwned(composite)); + assertTrue(isOwned((ResourceSupport) composite)); assertThat(composite.capacity()).isOne(); assertThat(composite.countComponents()).isOne(); } @@ -393,11 +393,11 @@ public class BufferCompositionTest extends BufferTestSupport { allocator.allocate(8).send(), allocator.allocate(8).send())) { try (CompositeBuffer split = composite.splitComponentsFloor(4)) { - assertTrue(isOwned(split)); + assertTrue(isOwned((ResourceSupport) split)); assertTrue(split.isAccessible()); assertThat(split.capacity()).isZero(); - assertTrue(isOwned(composite)); + assertTrue(isOwned((ResourceSupport) composite)); assertTrue(composite.isAccessible()); assertThat(composite.capacity()).isEqualTo(16); } @@ -411,11 +411,11 @@ public class BufferCompositionTest extends BufferTestSupport { allocator.allocate(8).send(), allocator.allocate(8).send())) { try (CompositeBuffer split = composite.splitComponentsFloor(7)) { - assertTrue(isOwned(split)); + assertTrue(isOwned((ResourceSupport) split)); assertTrue(split.isAccessible()); assertThat(split.capacity()).isZero(); - assertTrue(isOwned(composite)); + assertTrue(isOwned((ResourceSupport) composite)); assertTrue(composite.isAccessible()); assertThat(composite.capacity()).isEqualTo(16); } @@ -429,11 +429,11 @@ public class BufferCompositionTest extends BufferTestSupport { allocator.allocate(8).send(), allocator.allocate(8).send())) { try (CompositeBuffer split = composite.splitComponentsFloor(12)) { - assertTrue(isOwned(split)); + assertTrue(isOwned((ResourceSupport) split)); assertTrue(split.isAccessible()); assertThat(split.capacity()).isEqualTo(8); - assertTrue(isOwned(composite)); + assertTrue(isOwned((ResourceSupport) composite)); assertTrue(composite.isAccessible()); assertThat(composite.capacity()).isEqualTo(8); } @@ -447,11 +447,11 @@ public class BufferCompositionTest extends BufferTestSupport { allocator.allocate(8).send(), allocator.allocate(8).send())) { try (CompositeBuffer split = composite.splitComponentsFloor(8)) { - assertTrue(isOwned(split)); + assertTrue(isOwned((ResourceSupport) split)); assertTrue(split.isAccessible()); assertThat(split.capacity()).isEqualTo(8); - assertTrue(isOwned(composite)); + assertTrue(isOwned((ResourceSupport) composite)); assertTrue(composite.isAccessible()); assertThat(composite.capacity()).isEqualTo(8); } @@ -465,11 +465,11 @@ public class BufferCompositionTest extends BufferTestSupport { allocator.allocate(8).send(), allocator.allocate(8).send())) { try (CompositeBuffer split = composite.splitComponentsCeil(4)) { - assertTrue(isOwned(split)); + assertTrue(isOwned((ResourceSupport) split)); assertTrue(split.isAccessible()); assertThat(split.capacity()).isEqualTo(8); - assertTrue(isOwned(composite)); + assertTrue(isOwned((ResourceSupport) composite)); assertTrue(composite.isAccessible()); assertThat(composite.capacity()).isEqualTo(8); } @@ -483,11 +483,11 @@ public class BufferCompositionTest extends BufferTestSupport { allocator.allocate(8).send(), allocator.allocate(8).send())) { try (CompositeBuffer split = composite.splitComponentsCeil(7)) { - assertTrue(isOwned(split)); + assertTrue(isOwned((ResourceSupport) split)); assertTrue(split.isAccessible()); assertThat(split.capacity()).isEqualTo(8); - assertTrue(isOwned(composite)); + assertTrue(isOwned((ResourceSupport) composite)); assertTrue(composite.isAccessible()); assertThat(composite.capacity()).isEqualTo(8); } @@ -501,11 +501,11 @@ public class BufferCompositionTest extends BufferTestSupport { allocator.allocate(8).send(), allocator.allocate(8).send())) { try (CompositeBuffer split = composite.splitComponentsCeil(12)) { - assertTrue(isOwned(split)); + assertTrue(isOwned((ResourceSupport) split)); assertTrue(split.isAccessible()); assertThat(split.capacity()).isEqualTo(16); - assertTrue(isOwned(composite)); + assertTrue(isOwned((ResourceSupport) composite)); assertTrue(composite.isAccessible()); assertThat(composite.capacity()).isEqualTo(0); } @@ -517,11 +517,11 @@ public class BufferCompositionTest extends BufferTestSupport { allocator.allocate(8).send(), allocator.allocate(8).send())) { try (CompositeBuffer split = composite.splitComponentsCeil(12)) { - assertTrue(isOwned(split)); + assertTrue(isOwned((ResourceSupport) split)); assertTrue(split.isAccessible()); assertThat(split.capacity()).isEqualTo(16); - assertTrue(isOwned(composite)); + assertTrue(isOwned((ResourceSupport) composite)); assertTrue(composite.isAccessible()); assertThat(composite.capacity()).isEqualTo(8); } @@ -535,11 +535,11 @@ public class BufferCompositionTest extends BufferTestSupport { allocator.allocate(8).send(), allocator.allocate(8).send())) { try (CompositeBuffer split = composite.splitComponentsCeil(7)) { - assertTrue(isOwned(split)); + assertTrue(isOwned((ResourceSupport) split)); assertTrue(split.isAccessible()); assertThat(split.capacity()).isEqualTo(8); - assertTrue(isOwned(composite)); + assertTrue(isOwned((ResourceSupport) composite)); assertTrue(composite.isAccessible()); assertThat(composite.capacity()).isEqualTo(8); } @@ -553,11 +553,11 @@ public class BufferCompositionTest extends BufferTestSupport { allocator.allocate(8).send(), allocator.allocate(8).send())) { try (CompositeBuffer split = composite.splitComponentsCeil(0)) { - assertTrue(isOwned(split)); + assertTrue(isOwned((ResourceSupport) split)); assertTrue(split.isAccessible()); assertThat(split.capacity()).isZero(); - assertTrue(isOwned(composite)); + assertTrue(isOwned((ResourceSupport) composite)); assertTrue(composite.isAccessible()); assertThat(composite.capacity()).isEqualTo(16); } diff --git a/buffer-tests/src/test/java/io/netty/buffer/api/tests/examples/bytetomessagedecoder/ByteToMessageDecoder.java b/buffer-tests/src/test/java/io/netty/buffer/api/tests/examples/bytetomessagedecoder/ByteToMessageDecoder.java index 527df35..b1e3c8f 100644 --- a/buffer-tests/src/test/java/io/netty/buffer/api/tests/examples/bytetomessagedecoder/ByteToMessageDecoder.java +++ b/buffer-tests/src/test/java/io/netty/buffer/api/tests/examples/bytetomessagedecoder/ByteToMessageDecoder.java @@ -617,6 +617,11 @@ public abstract class ByteToMessageDecoder extends ChannelHandlerAdapter { return ctx.alloc(); } + @Override + public BufferAllocator bufferAllocator() { + return ctx.bufferAllocator(); + } + @Override @Deprecated public Attribute attr(AttributeKey key) { diff --git a/pom.xml b/pom.xml index 23770e4..7747f6a 100644 --- a/pom.xml +++ b/pom.xml @@ -70,8 +70,8 @@ io.netty.incubator.buffer 5.0.0.Final-SNAPSHOT 29 - - 11 + + 17 17 5.7.0