Merge pull request #4 from ebarboni/NoSuchBuffer
[MSHARED-786] jdk8 incompatibility at runtime (NoSuchMethodError)
diff --git a/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java b/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java
index 333d0f9..c0e0cac 100644
--- a/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java
+++ b/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java
@@ -19,6 +19,7 @@
* under the License.
*/
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Collections;
@@ -159,8 +160,10 @@
private static String decodeString( ByteBuffer buf )
{
- int size = buf.getChar(), oldLimit = buf.limit();
- buf.limit( buf.position() + size );
+ int size = buf.getChar();
+ // Explicit cast for compatibility with covariant return type on JDK 9's ByteBuffer
+ int oldLimit = ( (Buffer) buf ).limit();
+ ( (Buffer) buf ).limit( buf.position() + size );
StringBuilder sb = new StringBuilder( size + ( size >> 1 ) + 16 );
while ( buf.hasRemaining() )
{
@@ -183,7 +186,7 @@
}
}
}
- buf.limit( oldLimit );
+ ( (Buffer) buf ).limit( oldLimit );
return sb.toString();
}
}