Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
security:logging
gradle4
0005-Fix-to-avoid-incompatibility-if-compile-wi...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0005-Fix-to-avoid-incompatibility-if-compile-with-jdk9.patch of Package gradle4
From 716b81701259d0ea2bb47fb07daea436f5991cc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= <kkaempf@suse.de> Date: Thu, 18 Apr 2019 18:33:39 +0200 Subject: [PATCH 5/5] Fix to avoid incompatibility if compile with jdk9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From https://github.com/apache/felix/pull/114 Java 9 introduces overridden methods with covariant return types for the following methods in java.nio.ByteBuffer: position(int newPosition) limit(int newLimit) flip() clear() mark() reset() rewind() In Java 9 they all now return ByteBuffer, whereas the methods they override return Buffer, resulting in exceptions like this when executing on Java 8 and lower: java.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)Ljava/nio/ByteBuffer This is because the generated byte code includes the static return type of the method, which is not found on Java 8 and lower because the overloaded methods with covariant return types don't exist (the issue appears even with source and target 8 or lower in compilation parameters). The solution is to cast ByteBuffer instances to Buffer before calling the method. --- .../remote/internal/inet/SocketConnection.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/subprojects/messaging/src/main/java/org/gradle/internal/remote/internal/inet/SocketConnection.java b/subprojects/messaging/src/main/java/org/gradle/internal/remote/internal/inet/SocketConnection.java index 5f2ce63ccd41..693f7d6d83b7 100755 --- a/subprojects/messaging/src/main/java/org/gradle/internal/remote/internal/inet/SocketConnection.java +++ b/subprojects/messaging/src/main/java/org/gradle/internal/remote/internal/inet/SocketConnection.java @@ -156,7 +156,7 @@ public class SocketConnection<T> implements RemoteConnection<T> { selector = Selector.open(); socket.register(selector, SelectionKey.OP_READ); buffer = ByteBuffer.allocateDirect(4096); - buffer.limit(0); + ((Buffer)buffer).limit(0); } @Override @@ -174,7 +174,7 @@ public class SocketConnection<T> implements RemoteConnection<T> { return 0; } - if (buffer.remaining() == 0) { + if (((Buffer)buffer).remaining() == 0) { try { selector.select(); } catch (ClosedSelectorException e) { @@ -190,8 +190,8 @@ public class SocketConnection<T> implements RemoteConnection<T> { nread = socket.read(buffer); } catch (IOException e) { if (isEndOfStream(e)) { - buffer.position(0); - buffer.limit(0); + ((Buffer)buffer).position(0); + ((Buffer)buffer).limit(0); return -1; } throw e; @@ -203,7 +203,7 @@ public class SocketConnection<T> implements RemoteConnection<T> { } } - int count = Math.min(buffer.remaining(), max); + int count = Math.min(((Buffer)buffer).remaining(), max); buffer.get(dest, offset, count); return count; } @@ -237,13 +237,13 @@ public class SocketConnection<T> implements RemoteConnection<T> { int remaining = max; int currentPos = offset; while (remaining > 0) { - int count = Math.min(remaining, buffer.remaining()); + int count = Math.min(remaining, ((Buffer)buffer).remaining()); if (count > 0) { buffer.put(src, currentPos, count); remaining -= count; currentPos += count; } - while (buffer.remaining() == 0) { + while (((Buffer)buffer).remaining() == 0) { writeBufferToChannel(); } } @@ -251,7 +251,7 @@ public class SocketConnection<T> implements RemoteConnection<T> { @Override public void flush() throws IOException { - while (buffer.position() > 0) { + while (((Buffer)buffer).position() > 0) { writeBufferToChannel(); } } -- 2.21.0
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor