2323
2424import java .io .IOException ;
2525import java .io .InputStream ;
26+ import java .nio .Buffer ;
2627import java .nio .ByteBuffer ;
2728import java .nio .CharBuffer ;
2829import java .nio .charset .CharsetDecoder ;
@@ -61,17 +62,18 @@ protected CharsetDecoder initialValue() {
6162 */
6263 @ VisibleForAdvice
6364 public static boolean readUtf8Stream (final InputStream is , final CharBuffer charBuffer ) throws IOException {
65+ // to be compatible with Java 8, we have to cast to buffer because of different return types
6466 final ByteBuffer buffer = threadLocalByteBuffer .get ();
6567 final CharsetDecoder charsetDecoder = threadLocalCharsetDecoder .get ();
6668 try {
6769 final byte [] bufferArray = buffer .array ();
6870 for (int read = is .read (bufferArray ); read != -1 ; read = is .read (bufferArray )) {
69- buffer .limit (read );
71+ (( Buffer ) buffer ) .limit (read );
7072 final CoderResult coderResult = charsetDecoder .decode (buffer , charBuffer , true );
71- buffer .clear ();
73+ (( Buffer ) buffer ) .clear ();
7274 if (coderResult .isError ()) {
7375 // this is not UTF-8
74- charBuffer .clear ();
76+ (( Buffer ) charBuffer ) .clear ();
7577 return false ;
7678 } else if (coderResult .isOverflow ()) {
7779 // stream yields more chars than the charBuffer can hold
@@ -81,8 +83,8 @@ public static boolean readUtf8Stream(final InputStream is, final CharBuffer char
8183 charsetDecoder .flush (charBuffer );
8284 return true ;
8385 } finally {
84- charBuffer .flip ();
85- buffer .clear ();
86+ (( Buffer ) charBuffer ) .flip ();
87+ (( Buffer ) buffer ) .clear ();
8688 charsetDecoder .reset ();
8789 is .close ();
8890 }
0 commit comments