Skip to content

Commit 2f1e354

Browse files
author
Gary Gregory
committed
[IO-510] Add and adapt ReadAheadInputStream and
BufferedFileChannelInputStream from Apache Spark. Compiles on Java 8 and 11.
1 parent dbf443b commit 2f1e354

1 file changed

Lines changed: 7 additions & 6 deletions

File tree

src/main/java/org/apache/commons/io/input/BufferedFileChannelInputStream.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,11 @@ private void bufferCleaner(final DirectBuffer buffer) {
130130
if ("1.8".equals(specVer)) {
131131
// On Java 8, but also compiles on Java 11.
132132
try {
133-
final Class<?> cls = Class.forName("sun.misc.Cleaner");
134-
final Object cleaner = buffer.cleaner();
133+
final Class<?> clsCleaner = Class.forName("sun.misc.Cleaner");
134+
final Method cleanerMethod = DirectBuffer.class.getMethod("cleaner");
135+
final Object cleaner = cleanerMethod.invoke(buffer);
135136
if (cleaner != null) {
136-
final Method cleanMethod = cls.getMethod("clean");
137+
final Method cleanMethod = clsCleaner.getMethod("clean");
137138
cleanMethod.invoke(cleaner);
138139
}
139140
} catch (ReflectiveOperationException e) {
@@ -142,9 +143,9 @@ private void bufferCleaner(final DirectBuffer buffer) {
142143
} else {
143144
// On Java 9 and up, but compiles on Java 8.
144145
try {
145-
final Class<?> cls = Class.forName("sun.misc.Unsafe");
146-
final Method cleanerMethod = cls.getMethod("invokeCleaner", ByteBuffer.class);
147-
final Field unsafeField = cls.getDeclaredField("theUnsafe");
146+
final Class<?> clsUnsafe = Class.forName("sun.misc.Unsafe");
147+
final Method cleanerMethod = clsUnsafe.getMethod("invokeCleaner", ByteBuffer.class);
148+
final Field unsafeField = clsUnsafe.getDeclaredField("theUnsafe");
148149
unsafeField.setAccessible(true);
149150
cleanerMethod.invoke(unsafeField.get(null), buffer);
150151
} catch (ReflectiveOperationException e) {

0 commit comments

Comments
 (0)