[AVRO-2624] Bunch of casts to just Buffer so that avro built with Java11 will work at runtime with Java 8.
diff --git a/lang/java/avro/src/main/java/org/apache/avro/SchemaBuilder.java b/lang/java/avro/src/main/java/org/apache/avro/SchemaBuilder.java
index e5b93d8..ffb198f 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/SchemaBuilder.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/SchemaBuilder.java
@@ -18,6 +18,7 @@
package org.apache.avro;
import java.io.IOException;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
@@ -2701,10 +2702,10 @@
// special case since GenericData.toString() is incorrect for bytes
// note that this does not handle the case of a default value with nested bytes
ByteBuffer bytes = ((ByteBuffer) o);
- bytes.mark();
+ ((Buffer) bytes).mark();
byte[] data = new byte[bytes.remaining()];
bytes.get(data);
- bytes.reset(); // put the buffer back the way we got it
+ ((Buffer) bytes).reset(); // put the buffer back the way we got it
s = new String(data, StandardCharsets.ISO_8859_1);
char[] quoted = JsonStringEncoder.getInstance().quoteAsString(s);
s = "\"" + new String(quoted) + "\"";
diff --git a/lang/java/avro/src/main/java/org/apache/avro/data/TimeConversions.java b/lang/java/avro/src/main/java/org/apache/avro/data/TimeConversions.java
index 52ec426..785d31a 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/data/TimeConversions.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/data/TimeConversions.java
@@ -175,8 +175,8 @@
@Override
public Instant fromLong(Long microsFromEpoch, Schema schema, LogicalType type) {
- long epochSeconds = microsFromEpoch / (1_000_000);
- long nanoAdjustment = (microsFromEpoch % (1_000_000)) * 1_000;
+ long epochSeconds = microsFromEpoch / (1_000_000L);
+ long nanoAdjustment = (microsFromEpoch % (1_000_000L)) * 1_000L;
return Instant.ofEpochSecond(epochSeconds, nanoAdjustment);
}
@@ -187,14 +187,14 @@
int nanos = instant.getNano();
if (seconds < 0 && nanos > 0) {
- long micros = Math.multiplyExact(seconds + 1, 1_000_000);
+ long micros = Math.multiplyExact(seconds + 1, 1_000_000L);
long adjustment = (nanos / 1_000L) - 1_000_000;
return Math.addExact(micros, adjustment);
} else {
- long micros = Math.multiplyExact(seconds, 1_000_000);
+ long micros = Math.multiplyExact(seconds, 1_000_000L);
- return Math.addExact(micros, nanos / 1_000);
+ return Math.addExact(micros, nanos / 1_000L);
}
}
diff --git a/lang/java/avro/src/main/java/org/apache/avro/file/SnappyCodec.java b/lang/java/avro/src/main/java/org/apache/avro/file/SnappyCodec.java
index fddba65..72bf0b7 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/file/SnappyCodec.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/file/SnappyCodec.java
@@ -18,6 +18,7 @@
package org.apache.avro.file;
import java.io.IOException;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.util.zip.CRC32;
@@ -57,7 +58,7 @@
crc32.update(in.array(), offset, in.remaining());
out.putInt(size, (int) crc32.getValue());
- out.limit(size + 4);
+ ((Buffer) out).limit(size + 4);
return out;
}
@@ -67,11 +68,11 @@
int offset = computeOffset(in);
ByteBuffer out = ByteBuffer.allocate(Snappy.uncompressedLength(in.array(), offset, in.remaining() - 4));
int size = Snappy.uncompress(in.array(), offset, in.remaining() - 4, out.array(), 0);
- out.limit(size);
+ ((Buffer) out).limit(size);
crc32.reset();
crc32.update(out.array(), 0, size);
- if (in.getInt(in.limit() - 4) != (int) crc32.getValue())
+ if (in.getInt(((Buffer) in).limit() - 4) != (int) crc32.getValue())
throw new IOException("Checksum failure");
return out;
diff --git a/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java b/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
index 77cd4af..60fca8e 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
@@ -19,6 +19,7 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.AbstractList;
@@ -1252,7 +1253,7 @@
int length = byteBufferValue.limit() - start;
byte[] bytesCopy = new byte[length];
byteBufferValue.get(bytesCopy, 0, length);
- byteBufferValue.position(start);
+ ((Buffer) byteBufferValue).position(start);
return ByteBuffer.wrap(bytesCopy, 0, length);
case DOUBLE:
return value; // immutable
diff --git a/lang/java/avro/src/main/java/org/apache/avro/io/BinaryDecoder.java b/lang/java/avro/src/main/java/org/apache/avro/io/BinaryDecoder.java
index c36c743..7091a5c 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/io/BinaryDecoder.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/io/BinaryDecoder.java
@@ -20,6 +20,7 @@
import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.util.Arrays;
@@ -309,12 +310,12 @@
final ByteBuffer result;
if (old != null && length <= old.capacity()) {
result = old;
- result.clear();
+ ((Buffer) result).clear();
} else {
result = ByteBuffer.allocate(length);
}
doReadBytes(result.array(), result.position(), length);
- result.limit(length);
+ ((Buffer) result).limit(length);
return result;
}
diff --git a/lang/java/avro/src/main/java/org/apache/avro/io/DirectBinaryDecoder.java b/lang/java/avro/src/main/java/org/apache/avro/io/DirectBinaryDecoder.java
index fd92232..7b05655 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/io/DirectBinaryDecoder.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/io/DirectBinaryDecoder.java
@@ -20,6 +20,7 @@
import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import org.apache.avro.InvalidNumberEncodingException;
@@ -42,12 +43,12 @@
ByteBuffer result;
if (old != null && length <= old.capacity()) {
result = old;
- result.clear();
+ ((Buffer) result).clear();
} else {
result = ByteBuffer.allocate(length);
}
doReadBytes(result.array(), result.position(), length);
- result.limit(length);
+ ((Buffer) result).limit(length);
return result;
}
}
diff --git a/lang/java/avro/src/main/java/org/apache/avro/util/ByteBufferOutputStream.java b/lang/java/avro/src/main/java/org/apache/avro/util/ByteBufferOutputStream.java
index ddb44a6..00fe1b1 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/util/ByteBufferOutputStream.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/util/ByteBufferOutputStream.java
@@ -20,6 +20,7 @@
import java.io.IOException;
import java.io.OutputStream;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.util.ArrayList;
@@ -42,14 +43,15 @@
public List<ByteBuffer> getBufferList() {
List<ByteBuffer> result = buffers;
reset();
- for (ByteBuffer buffer : result)
+ for (Buffer buffer : result) {
buffer.flip();
+ }
return result;
}
/** Prepend a list of ByteBuffers to this stream. */
public void prepend(List<ByteBuffer> lists) {
- for (ByteBuffer buffer : lists) {
+ for (Buffer buffer : lists) {
buffer.position(buffer.limit());
}
buffers.addAll(0, lists);
@@ -57,7 +59,7 @@
/** Append a list of ByteBuffers to this stream. */
public void append(List<ByteBuffer> lists) {
- for (ByteBuffer buffer : lists) {
+ for (Buffer buffer : lists) {
buffer.position(buffer.limit());
}
buffers.addAll(lists);
diff --git a/lang/java/avro/src/main/java/org/apache/avro/util/RandomData.java b/lang/java/avro/src/main/java/org/apache/avro/util/RandomData.java
index 84224dc..e4623fc 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/util/RandomData.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/util/RandomData.java
@@ -18,6 +18,7 @@
package org.apache.avro.util;
import java.io.File;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.HashMap;
@@ -155,7 +156,7 @@
private static ByteBuffer randomBytes(Random rand, int maxLength) {
ByteBuffer bytes = ByteBuffer.allocate(rand.nextInt(maxLength));
- bytes.limit(bytes.capacity());
+ ((Buffer) bytes).limit(bytes.capacity());
rand.nextBytes(bytes.array());
return bytes;
}
diff --git a/lang/java/avro/src/main/java/org/apache/avro/util/ReusableByteBufferInputStream.java b/lang/java/avro/src/main/java/org/apache/avro/util/ReusableByteBufferInputStream.java
index 9cf9026..942cddc 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/util/ReusableByteBufferInputStream.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/util/ReusableByteBufferInputStream.java
@@ -21,25 +21,30 @@
import java.io.IOException;
import java.io.InputStream;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
public class ReusableByteBufferInputStream extends InputStream {
private static final ByteBuffer EMPTY_BUFFER = ByteBuffer.allocate(0);
- private ByteBuffer buffer = EMPTY_BUFFER;
+ // work around issues compiling with Java11 but running with 8
+ // due to ByteBuffer overriding several methods
+ private ByteBuffer byteBuffer = EMPTY_BUFFER;
+ private Buffer buffer = byteBuffer;
private int mark = 0;
public void setByteBuffer(ByteBuffer buf) {
// do not modify the buffer that is passed in
- this.buffer = buf.duplicate();
+ this.byteBuffer = buf.duplicate();
+ this.buffer = byteBuffer;
this.mark = buf.position();
}
@Override
public int read() throws IOException {
if (buffer.hasRemaining()) {
- return buffer.get() & 0xff;
+ return byteBuffer.get() & 0xff;
} else {
return -1;
}
@@ -52,7 +57,7 @@
}
// allow IndexOutOfBoundsException to be thrown by ByteBuffer#get
int bytesToRead = Math.min(len, buffer.remaining());
- buffer.get(b, off, bytesToRead);
+ byteBuffer.get(b, off, bytesToRead);
return bytesToRead;
}
diff --git a/lang/java/ipc-netty/src/main/java/org/apache/avro/ipc/netty/NettyTransportCodec.java b/lang/java/ipc-netty/src/main/java/org/apache/avro/ipc/netty/NettyTransportCodec.java
index cd006a7..6e3ef1f 100644
--- a/lang/java/ipc-netty/src/main/java/org/apache/avro/ipc/netty/NettyTransportCodec.java
+++ b/lang/java/ipc-netty/src/main/java/org/apache/avro/ipc/netty/NettyTransportCodec.java
@@ -18,6 +18,7 @@
package org.apache.avro.ipc.netty;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
@@ -98,14 +99,14 @@
ByteBuffer header = ByteBuffer.allocate(8);
header.putInt(dataPack.getSerial());
header.putInt(dataPack.getDatas().size());
- header.flip();
+ ((Buffer) header).flip();
return header;
}
private ByteBuffer getLengthHeader(ByteBuffer buf) {
ByteBuffer header = ByteBuffer.allocate(4);
header.putInt(buf.limit());
- header.flip();
+ ((Buffer) header).flip();
return header;
}
}
@@ -186,7 +187,7 @@
ByteBuffer bb = ByteBuffer.allocate(length);
buffer.readBytes(bb);
- bb.flip();
+ ((Buffer) bb).flip();
dataPack.getDatas().add(bb);
return dataPack.getDatas().size() == listSize;
diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/DatagramTransceiver.java b/lang/java/ipc/src/main/java/org/apache/avro/ipc/DatagramTransceiver.java
index edef5a9..8c21779 100644
--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/DatagramTransceiver.java
+++ b/lang/java/ipc/src/main/java/org/apache/avro/ipc/DatagramTransceiver.java
@@ -22,6 +22,7 @@
import java.util.ArrayList;
import java.io.IOException;
import java.net.SocketAddress;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.channels.DatagramChannel;
@@ -57,10 +58,10 @@
@Override
public synchronized List<ByteBuffer> readBuffers() throws IOException {
- buffer.clear();
+ ((Buffer) buffer).clear();
remote = channel.receive(buffer);
LOG.info("received from " + remote);
- buffer.flip();
+ ((Buffer) buffer).flip();
List<ByteBuffer> buffers = new ArrayList<>();
while (true) {
int length = buffer.getInt();
@@ -68,21 +69,21 @@
return buffers;
}
ByteBuffer chunk = buffer.slice(); // use data without copying
- chunk.limit(length);
- buffer.position(buffer.position() + length);
+ ((Buffer) chunk).limit(length);
+ ((Buffer) buffer).position(buffer.position() + length);
buffers.add(chunk);
}
}
@Override
public synchronized void writeBuffers(List<ByteBuffer> buffers) throws IOException {
- buffer.clear();
+ ((Buffer) buffer).clear();
for (ByteBuffer b : buffers) {
buffer.putInt(b.remaining());
buffer.put(b); // copy data. sigh.
}
buffer.putInt(0);
- buffer.flip();
+ ((Buffer) buffer).flip();
channel.send(buffer, remote);
LOG.info("sent to " + remote);
}
diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/HttpTransceiver.java b/lang/java/ipc/src/main/java/org/apache/avro/ipc/HttpTransceiver.java
index f4b47e1..86737d6 100644
--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/HttpTransceiver.java
+++ b/lang/java/ipc/src/main/java/org/apache/avro/ipc/HttpTransceiver.java
@@ -23,6 +23,7 @@
import java.io.OutputStream;
import java.io.EOFException;
import java.net.Proxy;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
@@ -106,9 +107,9 @@
int i = in.read(buffer.array(), p, buffer.remaining());
if (i < 0)
throw new EOFException("Unexpected EOF");
- buffer.position(p + i);
+ ((Buffer) buffer).position(p + i);
}
- buffer.flip();
+ ((Buffer) buffer).flip();
buffers.add(buffer);
}
}
@@ -117,7 +118,7 @@
for (ByteBuffer buffer : buffers) {
writeLength(buffer.limit(), out); // length-prefix
out.write(buffer.array(), buffer.position(), buffer.remaining());
- buffer.position(buffer.limit());
+ ((Buffer) buffer).position(buffer.limit());
}
writeLength(0, out); // null-terminate
}
diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/SaslSocketTransceiver.java b/lang/java/ipc/src/main/java/org/apache/avro/ipc/SaslSocketTransceiver.java
index 3866598..d0e9dd0 100644
--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/SaslSocketTransceiver.java
+++ b/lang/java/ipc/src/main/java/org/apache/avro/ipc/SaslSocketTransceiver.java
@@ -24,6 +24,7 @@
import java.net.SocketAddress;
import java.nio.channels.SocketChannel;
import java.nio.charset.StandardCharsets;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
@@ -187,7 +188,7 @@
List<ByteBuffer> buffers = new ArrayList<>();
while (true) {
ByteBuffer buffer = readFrameAndUnwrap();
- if (buffer.remaining() == 0)
+ if (((Buffer) buffer).remaining() == 0)
return buffers;
buffers.add(buffer);
}
@@ -220,11 +221,11 @@
}
private void read(ByteBuffer buffer) throws IOException {
- buffer.clear();
+ ((Buffer) buffer).clear();
while (buffer.hasRemaining())
if (channel.read(buffer) == -1)
throw new EOFException();
- buffer.flip();
+ ((Buffer) buffer).flip();
}
@Override
@@ -247,7 +248,7 @@
if (currentLength == 0)
writes.add(currentHeader);
currentLength += length;
- currentHeader.clear();
+ ((Buffer) currentHeader).clear();
currentHeader.putInt(currentLength);
LOG.debug("adding {} to write, total now {}", length, currentLength);
} else {
@@ -256,10 +257,10 @@
writes.add(currentHeader);
LOG.debug("planning write of {}", length);
}
- currentHeader.flip();
+ ((Buffer) currentHeader).flip();
writes.add(buffer);
}
- zeroHeader.flip(); // zero-terminate
+ ((Buffer) zeroHeader).flip(); // zero-terminate
writes.add(zeroHeader);
writeFully(writes.toArray(new ByteBuffer[0]));
@@ -278,16 +279,16 @@
private void write(Status status, ByteBuffer response) throws IOException {
LOG.debug("write status: {}", status);
ByteBuffer statusBuffer = ByteBuffer.allocate(1);
- statusBuffer.clear();
- statusBuffer.put((byte) (status.ordinal())).flip();
+ ((Buffer) statusBuffer).clear();
+ ((Buffer) statusBuffer.put((byte) (status.ordinal()))).flip();
writeFully(statusBuffer);
write(response);
}
private void write(ByteBuffer response) throws IOException {
LOG.debug("writing: {}", response.remaining());
- writeHeader.clear();
- writeHeader.putInt(response.remaining()).flip();
+ ((Buffer) writeHeader).clear();
+ ((Buffer) writeHeader.putInt(response.remaining())).flip();
writeFully(writeHeader, response);
}
diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/SocketTransceiver.java b/lang/java/ipc/src/main/java/org/apache/avro/ipc/SocketTransceiver.java
index 14af79e..909dbe1 100644
--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/SocketTransceiver.java
+++ b/lang/java/ipc/src/main/java/org/apache/avro/ipc/SocketTransceiver.java
@@ -22,6 +22,7 @@
import java.net.SocketAddress;
import java.nio.channels.SocketChannel;
import java.nio.channels.ClosedChannelException;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
@@ -64,12 +65,12 @@
public synchronized List<ByteBuffer> readBuffers() throws IOException {
List<ByteBuffer> buffers = new ArrayList<>();
while (true) {
- header.clear();
+ ((Buffer) header).clear();
while (header.hasRemaining()) {
if (channel.read(header) < 0)
throw new ClosedChannelException();
}
- header.flip();
+ ((Buffer) header).flip();
int length = header.getInt();
if (length == 0) { // end of buffers
return buffers;
@@ -79,7 +80,7 @@
if (channel.read(buffer) < 0)
throw new ClosedChannelException();
}
- buffer.flip();
+ ((Buffer) buffer).flip();
buffers.add(buffer);
}
}
@@ -98,9 +99,9 @@
}
private void writeLength(int length) throws IOException {
- header.clear();
+ ((Buffer) header).clear();
header.putInt(length);
- header.flip();
+ ((Buffer) header).flip();
channel.write(header);
}
diff --git a/lang/java/mapred/src/main/java/org/apache/avro/mapred/AvroTextOutputFormat.java b/lang/java/mapred/src/main/java/org/apache/avro/mapred/AvroTextOutputFormat.java
index f3fb631..6a0e37c 100644
--- a/lang/java/mapred/src/main/java/org/apache/avro/mapred/AvroTextOutputFormat.java
+++ b/lang/java/mapred/src/main/java/org/apache/avro/mapred/AvroTextOutputFormat.java
@@ -21,6 +21,7 @@
import static org.apache.avro.mapred.AvroOutputFormat.EXT;
import java.io.IOException;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
@@ -123,7 +124,7 @@
buf.put(keyBytes, 0, keyLength);
buf.put(sep);
buf.put(valBytes, 0, valLength);
- buf.rewind();
+ ((Buffer) buf).rewind();
return buf;
}
diff --git a/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtoConversions.java b/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtoConversions.java
index 1c8c109..424e94c 100644
--- a/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtoConversions.java
+++ b/lang/java/protobuf/src/main/java/org/apache/avro/protobuf/ProtoConversions.java
@@ -117,12 +117,12 @@
switch (precise) {
case Millis:
- seconds = Math.floorDiv(elapsedSinceEpoch, THOUSAND);
- nanos = (int) Math.floorMod(elapsedSinceEpoch, THOUSAND) * MILLION;
+ seconds = Math.floorDiv(elapsedSinceEpoch, (long) THOUSAND);
+ nanos = (int) Math.floorMod(elapsedSinceEpoch, (long) THOUSAND) * MILLION;
break;
case Micros:
- seconds = Math.floorDiv(elapsedSinceEpoch, MILLION);
- nanos = (int) Math.floorMod(elapsedSinceEpoch, MILLION) * THOUSAND;
+ seconds = Math.floorDiv(elapsedSinceEpoch, (long) MILLION);
+ nanos = (int) Math.floorMod(elapsedSinceEpoch, (long) MILLION) * THOUSAND;
break;
}
diff --git a/lang/java/tools/src/main/java/org/apache/avro/tool/FromTextTool.java b/lang/java/tools/src/main/java/org/apache/avro/tool/FromTextTool.java
index e632c1e..2c7da31 100644
--- a/lang/java/tools/src/main/java/org/apache/avro/tool/FromTextTool.java
+++ b/lang/java/tools/src/main/java/org/apache/avro/tool/FromTextTool.java
@@ -21,6 +21,7 @@
import java.io.BufferedOutputStream;
import java.io.InputStream;
import java.io.PrintStream;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.util.List;
@@ -86,21 +87,21 @@
if (b == '\n') { // newline
if (!returnSeen) {
System.out.println("Writing line = " + line.position());
- line.flip();
+ ((Buffer) line).flip();
writer.append(line);
- line.clear();
+ ((Buffer) line).clear();
} else {
returnSeen = false;
}
} else if (b == '\r') { // return
- line.flip();
+ ((Buffer) line).flip();
writer.append(line);
- line.clear();
+ ((Buffer) line).clear();
returnSeen = true;
} else {
if (line.position() == line.limit()) { // reallocate longer line
ByteBuffer tempLine = ByteBuffer.allocate(line.limit() * 2);
- line.flip();
+ ((Buffer) line).flip();
tempLine.put(line);
line = tempLine;
}
diff --git a/lang/java/trevni/core/src/main/java/org/apache/trevni/Crc32Checksum.java b/lang/java/trevni/core/src/main/java/org/apache/trevni/Crc32Checksum.java
index 453ca06..3bb765a 100644
--- a/lang/java/trevni/core/src/main/java/org/apache/trevni/Crc32Checksum.java
+++ b/lang/java/trevni/core/src/main/java/org/apache/trevni/Crc32Checksum.java
@@ -17,6 +17,7 @@
*/
package org.apache.trevni;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.util.zip.CRC32;
@@ -36,7 +37,7 @@
ByteBuffer result = ByteBuffer.allocate(size());
result.putInt((int) crc32.getValue());
- result.flip();
+ ((Buffer) result).flip();
return result;
}
diff --git a/lang/java/trevni/core/src/main/java/org/apache/trevni/InputBuffer.java b/lang/java/trevni/core/src/main/java/org/apache/trevni/InputBuffer.java
index c66e292..2234a1f 100644
--- a/lang/java/trevni/core/src/main/java/org/apache/trevni/InputBuffer.java
+++ b/lang/java/trevni/core/src/main/java/org/apache/trevni/InputBuffer.java
@@ -19,6 +19,7 @@
import java.io.EOFException;
import java.io.IOException;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
@@ -327,12 +328,12 @@
ByteBuffer result;
if (old != null && length <= old.capacity()) {
result = old;
- result.clear();
+ ((Buffer) result).clear();
} else {
result = ByteBuffer.allocate(length);
}
readFully(result.array(), result.position(), length);
- result.limit(length);
+ ((Buffer) result).limit(length);
return result;
}
diff --git a/lang/java/trevni/core/src/main/java/org/apache/trevni/SnappyCodec.java b/lang/java/trevni/core/src/main/java/org/apache/trevni/SnappyCodec.java
index 0b7aa4a..94bc7cd 100644
--- a/lang/java/trevni/core/src/main/java/org/apache/trevni/SnappyCodec.java
+++ b/lang/java/trevni/core/src/main/java/org/apache/trevni/SnappyCodec.java
@@ -18,6 +18,7 @@
package org.apache.trevni;
import java.io.IOException;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import org.xerial.snappy.Snappy;
@@ -29,7 +30,7 @@
int offset = computeOffset(in);
ByteBuffer out = ByteBuffer.allocate(Snappy.maxCompressedLength(in.remaining()));
int size = Snappy.compress(in.array(), offset, in.remaining(), out.array(), 0);
- out.limit(size);
+ ((Buffer) out).limit(size);
return out;
}
@@ -38,7 +39,7 @@
int offset = computeOffset(in);
ByteBuffer out = ByteBuffer.allocate(Snappy.uncompressedLength(in.array(), offset, in.remaining()));
int size = Snappy.uncompress(in.array(), offset, in.remaining(), out.array(), 0);
- out.limit(size);
+ ((Buffer) out).limit(size);
return out;
}
diff --git a/lang/java/trevni/core/src/test/java/org/apache/trevni/TestAllCodecs.java b/lang/java/trevni/core/src/test/java/org/apache/trevni/TestAllCodecs.java
index ae535b9..c588046 100644
--- a/lang/java/trevni/core/src/test/java/org/apache/trevni/TestAllCodecs.java
+++ b/lang/java/trevni/core/src/test/java/org/apache/trevni/TestAllCodecs.java
@@ -23,6 +23,7 @@
import org.junit.runners.Parameterized;
import java.io.IOException;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.Collection;
@@ -71,7 +72,7 @@
ByteBuffer decompressedBuffer = codecInstance.decompress(compressedBuffer);
// Validate the the input and output are equal.
- inputByteBuffer.rewind();
+ ((Buffer) inputByteBuffer).rewind();
assertEquals(decompressedBuffer, inputByteBuffer);
}
@@ -82,7 +83,7 @@
Codec codecInstance = getCodec(codec);
ByteBuffer partialBuffer = ByteBuffer.wrap(input);
- partialBuffer.position(17);
+ ((Buffer) partialBuffer).position(17);
ByteBuffer inputByteBuffer = partialBuffer.slice();
ByteBuffer compressedBuffer = codecInstance.compress(inputByteBuffer);
@@ -94,16 +95,16 @@
// Create a slice from the compressed buffer
ByteBuffer sliceBuffer = ByteBuffer.allocate(compressedSize + 100);
- sliceBuffer.position(50);
+ ((Buffer) sliceBuffer).position(50);
sliceBuffer.put(compressedBuffer);
- sliceBuffer.limit(compressedSize + 50);
- sliceBuffer.position(50);
+ ((Buffer) sliceBuffer).limit(compressedSize + 50);
+ ((Buffer) sliceBuffer).position(50);
// Decompress the data
ByteBuffer decompressedBuffer = codecInstance.decompress(sliceBuffer.slice());
// Validate the the input and output are equal.
- inputByteBuffer.rewind();
+ ((Buffer) inputByteBuffer).rewind();
assertEquals(decompressedBuffer, inputByteBuffer);
}