From 813d3632ecefaf6d4068d87abdef04d94663dca3 Mon Sep 17 00:00:00 2001 From: Kamil Rojewski Date: Mon, 24 May 2021 20:09:45 +0200 Subject: [PATCH] avoiding NoSuchMethod exception (#6658) --- .../flatbuffers/ByteBufferReadWriteBuf.java | 7 +++--- .../google/flatbuffers/ByteBufferUtil.java | 3 ++- .../google/flatbuffers/FlatBufferBuilder.java | 22 +++++++++---------- java/com/google/flatbuffers/FlexBuffers.java | 3 ++- java/com/google/flatbuffers/Table.java | 5 +++-- java/com/google/flatbuffers/Utf8Old.java | 3 ++- java/com/google/flatbuffers/Utf8Safe.java | 7 +++--- 7 files changed, 28 insertions(+), 22 deletions(-) diff --git a/java/com/google/flatbuffers/ByteBufferReadWriteBuf.java b/java/com/google/flatbuffers/ByteBufferReadWriteBuf.java index aaf72fe8192..6d4eef2925d 100644 --- a/java/com/google/flatbuffers/ByteBufferReadWriteBuf.java +++ b/java/com/google/flatbuffers/ByteBufferReadWriteBuf.java @@ -2,6 +2,7 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; +import java.nio.Buffer; public class ByteBufferReadWriteBuf implements ReadWriteBuf { @@ -117,9 +118,9 @@ public void set(int index, byte value) { public void set(int index, byte[] value, int start, int length) { requestCapacity(index + (length - start)); int curPos = buffer.position(); - buffer.position(index); + ((Buffer) buffer).position(index); buffer.put(value, start, length); - buffer.position(curPos); + ((Buffer) buffer).position(curPos); } @Override @@ -154,7 +155,7 @@ public void setDouble(int index, double value) { @Override public int writePosition() { - return buffer.position(); + return ((Buffer) buffer).position(); } @Override diff --git a/java/com/google/flatbuffers/ByteBufferUtil.java b/java/com/google/flatbuffers/ByteBufferUtil.java index 624dc4e2f7c..da86a35c4e9 100644 --- a/java/com/google/flatbuffers/ByteBufferUtil.java +++ b/java/com/google/flatbuffers/ByteBufferUtil.java @@ -19,6 +19,7 @@ import static com.google.flatbuffers.Constants.*; import java.nio.ByteBuffer; +import java.nio.Buffer; /// @file /// @addtogroup flatbuffers_java_api @@ -49,7 +50,7 @@ public static int getSizePrefix(ByteBuffer bb) { */ public static ByteBuffer removeSizePrefix(ByteBuffer bb) { ByteBuffer s = bb.duplicate(); - s.position(s.position() + SIZE_PREFIX_LENGTH); + ((Buffer) s).position(s.position() + SIZE_PREFIX_LENGTH); return s; } diff --git a/java/com/google/flatbuffers/FlatBufferBuilder.java b/java/com/google/flatbuffers/FlatBufferBuilder.java index a954d9fbbd4..6653f39fdca 100644 --- a/java/com/google/flatbuffers/FlatBufferBuilder.java +++ b/java/com/google/flatbuffers/FlatBufferBuilder.java @@ -273,10 +273,10 @@ static ByteBuffer growByteBuffer(ByteBuffer bb, ByteBufferFactory bb_factory) { new_buf_size = (old_buf_size & 0xC0000000) != 0 ? MAX_BUFFER_SIZE : old_buf_size << 1; } - bb.position(0); + ((Buffer) bb).position(0); ByteBuffer nbb = bb_factory.newByteBuffer(new_buf_size); new_buf_size = nbb.clear().capacity(); // Ensure the returned buffer is treated as empty - nbb.position(new_buf_size - old_buf_size); + ((Buffer) nbb).position(new_buf_size - old_buf_size); nbb.put(bb); return nbb; } @@ -527,7 +527,7 @@ public ByteBuffer createUnintializedVector(int elem_size, int num_elems, int ali int length = elem_size * num_elems; startVector(elem_size, num_elems, alignment); - bb.position(space -= length); + ((Buffer) bb).position(space -= length); // Slice and limit the copy vector to point to the 'array' ByteBuffer copy = bb.slice().order(ByteOrder.LITTLE_ENDIAN); @@ -602,7 +602,7 @@ public int createString(CharSequence s) { int length = utf8.encodedLength(s); addByte((byte)0); startVector(1, length, 1); - bb.position(space -= length); + ((Buffer) bb).position(space -= length); utf8.encodeUtf8(s, bb); return endVector(); } @@ -617,7 +617,7 @@ public int createString(ByteBuffer s) { int length = s.remaining(); addByte((byte)0); startVector(1, length, 1); - bb.position(space -= length); + ((Buffer) bb).position(space -= length); bb.put(s); return endVector(); } @@ -631,7 +631,7 @@ public int createString(ByteBuffer s) { public int createByteVector(byte[] arr) { int length = arr.length; startVector(1, length, 1); - bb.position(space -= length); + ((Buffer) bb).position(space -= length); bb.put(arr); return endVector(); } @@ -646,7 +646,7 @@ public int createByteVector(byte[] arr) { */ public int createByteVector(byte[] arr, int offset, int length) { startVector(1, length, 1); - bb.position(space -= length); + ((Buffer) bb).position(space -= length); bb.put(arr, offset, length); return endVector(); } @@ -663,7 +663,7 @@ public int createByteVector(byte[] arr, int offset, int length) { public int createByteVector(ByteBuffer byteBuffer) { int length = byteBuffer.remaining(); startVector(1, length, 1); - bb.position(space -= length); + ((Buffer) bb).position(space -= length); bb.put(byteBuffer); return endVector(); } @@ -953,7 +953,7 @@ protected void finish(int root_table, boolean size_prefix) { if (size_prefix) { addInt(bb.capacity() - space); } - bb.position(space); + ((Buffer) bb).position(space); finished = true; } @@ -1067,7 +1067,7 @@ private int dataStart() { public byte[] sizedByteArray(int start, int length){ finished(); byte[] array = new byte[length]; - bb.position(start); + ((Buffer) bb).position(start); bb.get(array); return array; } @@ -1090,7 +1090,7 @@ public byte[] sizedByteArray() { public InputStream sizedInputStream() { finished(); ByteBuffer duplicate = bb.duplicate(); - duplicate.position(space); + ((Buffer) duplicate).position(space); duplicate.limit(bb.capacity()); return new ByteBufferBackedInputStream(duplicate); } diff --git a/java/com/google/flatbuffers/FlexBuffers.java b/java/com/google/flatbuffers/FlexBuffers.java index b8f879b6e49..c88624678d4 100644 --- a/java/com/google/flatbuffers/FlexBuffers.java +++ b/java/com/google/flatbuffers/FlexBuffers.java @@ -23,6 +23,7 @@ import java.math.BigInteger; import java.nio.ByteBuffer; +import java.nio.Buffer; import java.nio.charset.StandardCharsets; /// @file @@ -688,7 +689,7 @@ public static Blob empty() { */ public ByteBuffer data() { ByteBuffer dup = ByteBuffer.wrap(bb.data()); - dup.position(end); + ((Buffer) dup).position(end); dup.limit(end + size()); return dup.asReadOnlyBuffer().slice(); } diff --git a/java/com/google/flatbuffers/Table.java b/java/com/google/flatbuffers/Table.java index 7f416396e30..46fa570448c 100644 --- a/java/com/google/flatbuffers/Table.java +++ b/java/com/google/flatbuffers/Table.java @@ -18,6 +18,7 @@ import static com.google.flatbuffers.Constants.*; import java.nio.ByteBuffer; +import java.nio.Buffer; import java.nio.ByteOrder; /// @cond FLATBUFFERS_INTERNAL @@ -152,7 +153,7 @@ protected ByteBuffer __vector_as_bytebuffer(int vector_offset, int elem_size) { if (o == 0) return null; ByteBuffer bb = this.bb.duplicate().order(ByteOrder.LITTLE_ENDIAN); int vectorstart = __vector(o); - bb.position(vectorstart); + ((Buffer) bb).position(vectorstart); bb.limit(vectorstart + __vector_len(o) * elem_size); return bb; } @@ -174,7 +175,7 @@ protected ByteBuffer __vector_in_bytebuffer(ByteBuffer bb, int vector_offset, in int vectorstart = __vector(o); bb.rewind(); bb.limit(vectorstart + __vector_len(o) * elem_size); - bb.position(vectorstart); + ((Buffer) bb).position(vectorstart); return bb; } diff --git a/java/com/google/flatbuffers/Utf8Old.java b/java/com/google/flatbuffers/Utf8Old.java index 3dac714bb67..ba15031e4b3 100644 --- a/java/com/google/flatbuffers/Utf8Old.java +++ b/java/com/google/flatbuffers/Utf8Old.java @@ -17,6 +17,7 @@ package com.google.flatbuffers; import java.nio.ByteBuffer; +import java.nio.Buffer; import java.nio.CharBuffer; import java.nio.charset.CharacterCodingException; import java.nio.charset.CharsetDecoder; @@ -87,7 +88,7 @@ public String decodeUtf8(ByteBuffer buffer, int offset, int length) { CharsetDecoder decoder = CACHE.get().decoder; decoder.reset(); buffer = buffer.duplicate(); - buffer.position(offset); + ((Buffer) buffer).position(offset); buffer.limit(offset + length); try { CharBuffer result = decoder.decode(buffer); diff --git a/java/com/google/flatbuffers/Utf8Safe.java b/java/com/google/flatbuffers/Utf8Safe.java index 523e3f1b4c4..a5900044ec9 100644 --- a/java/com/google/flatbuffers/Utf8Safe.java +++ b/java/com/google/flatbuffers/Utf8Safe.java @@ -31,6 +31,7 @@ package com.google.flatbuffers; import java.nio.ByteBuffer; +import java.nio.Buffer; import static java.lang.Character.MAX_SURROGATE; import static java.lang.Character.MIN_SUPPLEMENTARY_CODE_POINT; import static java.lang.Character.MIN_SURROGATE; @@ -310,7 +311,7 @@ private static void encodeUtf8Buffer(CharSequence in, ByteBuffer out) { } if (inIx == inLength) { // Successfully encoded the entire string. - out.position(outIx + inIx); + ((Buffer) out).position(outIx + inIx); return; } @@ -353,7 +354,7 @@ private static void encodeUtf8Buffer(CharSequence in, ByteBuffer out) { } // Successfully encoded the entire string. - out.position(outIx); + ((Buffer) out).position(outIx); } catch (IndexOutOfBoundsException e) { // TODO(nathanmittler): Consider making the API throw IndexOutOfBoundsException instead. @@ -434,7 +435,7 @@ public void encodeUtf8(CharSequence in, ByteBuffer out) { int start = out.arrayOffset(); int end = encodeUtf8Array(in, out.array(), start + out.position(), out.remaining()); - out.position(end - start); + ((Buffer) out).position(end - start); } else { encodeUtf8Buffer(in, out); }