diff --git a/client/src/main/java/org/glassfish/tyrus/client/TyrusClientEngine.java b/client/src/main/java/org/glassfish/tyrus/client/TyrusClientEngine.java index 4ecb813d..b69b2947 100644 --- a/client/src/main/java/org/glassfish/tyrus/client/TyrusClientEngine.java +++ b/client/src/main/java/org/glassfish/tyrus/client/TyrusClientEngine.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; +import java.nio.Buffer; import java.nio.ByteBuffer; import java.text.ParseException; import java.util.ArrayList; @@ -694,7 +695,7 @@ public void handle(ByteBuffer data) { + 1) * BUFFER_STEP_SIZE : newSize; final ByteBuffer result = ByteBuffer.allocate(roundedSize > incomingBufferSize ? newSize : roundedSize); - result.flip(); + ((Buffer) result).flip(); data = Utils.appendBuffers(result, data, incomingBufferSize, BUFFER_STEP_SIZE); } } diff --git a/containers/jdk-client/src/main/java/org/glassfish/tyrus/container/jdk/client/HttpResponseParser.java b/containers/jdk-client/src/main/java/org/glassfish/tyrus/container/jdk/client/HttpResponseParser.java index 8316185a..fcada06b 100644 --- a/containers/jdk-client/src/main/java/org/glassfish/tyrus/container/jdk/client/HttpResponseParser.java +++ b/containers/jdk-client/src/main/java/org/glassfish/tyrus/container/jdk/client/HttpResponseParser.java @@ -17,6 +17,7 @@ package org.glassfish.tyrus.container.jdk.client; import java.io.UnsupportedEncodingException; +import java.nio.Buffer; import java.nio.ByteBuffer; import java.util.Arrays; import java.util.HashMap; @@ -44,7 +45,7 @@ class HttpResponseParser { HttpResponseParser() { buffer = ByteBuffer.allocate(1024); - buffer.flip(); //buffer created for read + ((Buffer) buffer).flip(); //buffer created for read } TyrusUpgradeResponse parseUpgradeResponse() throws ParseException { @@ -84,11 +85,11 @@ void appendData(ByteBuffer data) throws ParseException { } int limit = data.limit(); - data.limit(responseEndPosition + 1); + ((Buffer) data).limit(responseEndPosition + 1); checkResponseSize(data); buffer = Utils.appendBuffers(buffer, data, BUFFER_MAX_SIZE, BUFFER_STEP_SIZE); - data.limit(limit); - data.position(responseEndPosition + 1); + ((Buffer) data).limit(limit); + ((Buffer) data).position(responseEndPosition + 1); complete = true; } @@ -160,8 +161,8 @@ void destroy() { } void clear() { - buffer.clear(); - buffer.flip(); + ((Buffer) buffer).clear(); + ((Buffer) buffer).flip(); complete = false; findEndState = State.INIT; } diff --git a/containers/jdk-client/src/main/java/org/glassfish/tyrus/container/jdk/client/SslFilter.java b/containers/jdk-client/src/main/java/org/glassfish/tyrus/container/jdk/client/SslFilter.java index 52f29fd3..d5c07b9f 100644 --- a/containers/jdk-client/src/main/java/org/glassfish/tyrus/container/jdk/client/SslFilter.java +++ b/containers/jdk-client/src/main/java/org/glassfish/tyrus/container/jdk/client/SslFilter.java @@ -16,6 +16,7 @@ package org.glassfish.tyrus.container.jdk.client; +import java.nio.Buffer; import java.nio.ByteBuffer; import java.util.LinkedList; import java.util.Queue; @@ -172,7 +173,7 @@ synchronized void write(final ByteBuffer applicationData, final CompletionHandle private void handleWrite(final ByteBuffer applicationData, final CompletionHandler completionHandler) { try { // transport buffer always writes all data, so there are not leftovers in the networkOutputBuffer - networkOutputBuffer.clear(); + ((Buffer) networkOutputBuffer).clear(); SSLEngineResult result = sslEngine.wrap(applicationData, networkOutputBuffer); switch (result.getStatus()) { @@ -202,7 +203,7 @@ BUFFER_UNDERFLOW can occur only after unwrap(), but to be 100% sure we handle al state = State.REHANDSHAKING; } - networkOutputBuffer.flip(); + ((Buffer) networkOutputBuffer).flip(); // write only if something was written to the output buffer if (networkOutputBuffer.hasRemaining()) { writeQueue.write(networkOutputBuffer, new CompletionHandler() { @@ -300,7 +301,7 @@ BUFFER_UNDERFLOW can occur only after unwrap(), but to be 100% sure we handle al if (lazyBuffer.isAllocated()) { ByteBuffer buffer = lazyBuffer.get(); - buffer.flip(); + ((Buffer) buffer).flip(); writeQueue.write(buffer, new CompletionHandler() { @Override @@ -348,7 +349,7 @@ boolean processRead(ByteBuffer networkData) { case CLOSED: { // drop any data that arrive after the SSL has been closed - networkData.clear(); + ((Buffer) networkData).clear(); readMore = false; } } @@ -359,7 +360,7 @@ boolean processRead(ByteBuffer networkData) { private boolean handleRead(ByteBuffer networkData) { try { - applicationInputBuffer.clear(); + ((Buffer) applicationInputBuffer).clear(); SSLEngineResult result = sslEngine.unwrap(networkData, applicationInputBuffer); switch (result.getStatus()) { @@ -379,7 +380,7 @@ private boolean handleRead(ByteBuffer networkData) { case CLOSED: case OK: { if (result.bytesProduced() > 0) { - applicationInputBuffer.flip(); + ((Buffer) applicationInputBuffer).flip(); upstreamFilter.onRead(applicationInputBuffer); applicationInputBuffer.compact(); } @@ -487,7 +488,7 @@ that BUFFER_UNDERFLOW can occur only after unwrap(), but to be 100% sure we hand SSLEngineResult result = sslEngine.unwrap(networkData, applicationInputBuffer); - applicationInputBuffer.flip(); + ((Buffer) applicationInputBuffer).flip(); if (applicationInputBuffer.hasRemaining()) { // data can flow during re-handshake inputBuffer.append(applicationInputBuffer); @@ -537,7 +538,7 @@ that BUFFER_UNDERFLOW can occur only after unwrap(), but to be 100% sure we hand // now write the stored wrap() results if (outputBuffer.isAllocated()) { ByteBuffer buffer = outputBuffer.get(); - buffer.flip(); + ((Buffer) buffer).flip(); writeQueue.write(buffer, null); } @@ -660,8 +661,8 @@ void resize() { int increment = sslEngine.getSession().getPacketBufferSize(); int newSize = buffer.position() + increment; ByteBuffer newBuffer = ByteBuffer.allocate(newSize); - buffer.flip(); - newBuffer.flip(); + ((Buffer) buffer).flip(); + ((Buffer) newBuffer).flip(); buffer = Utils.appendBuffers(newBuffer, buffer, newBuffer.limit(), 50); buffer.compact(); } @@ -669,7 +670,7 @@ void resize() { void append(ByteBuffer b) { if (buffer == null) { buffer = ByteBuffer.allocate(b.remaining()); - buffer.flip(); + ((Buffer) buffer).flip(); } int newSize = buffer.limit() + b.remaining(); buffer = Utils.appendBuffers(buffer, b, newSize, 50); diff --git a/containers/jdk-client/src/main/java/org/glassfish/tyrus/container/jdk/client/TransportFilter.java b/containers/jdk-client/src/main/java/org/glassfish/tyrus/container/jdk/client/TransportFilter.java index 6b561383..d05782da 100644 --- a/containers/jdk-client/src/main/java/org/glassfish/tyrus/container/jdk/client/TransportFilter.java +++ b/containers/jdk-client/src/main/java/org/glassfish/tyrus/container/jdk/client/TransportFilter.java @@ -20,6 +20,7 @@ import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.SocketAddress; +import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.channels.AsynchronousChannelGroup; import java.nio.channels.AsynchronousCloseException; @@ -290,7 +291,7 @@ public void completed(Integer bytesRead, Void result) { return; } - inputBuffer.flip(); + ((Buffer) inputBuffer).flip(); onRead(inputBuffer); inputBuffer.compact(); _read(inputBuffer); diff --git a/containers/servlet/src/main/java/org/glassfish/tyrus/servlet/TyrusHttpUpgradeHandler.java b/containers/servlet/src/main/java/org/glassfish/tyrus/servlet/TyrusHttpUpgradeHandler.java index 5db160d6..f709d608 100644 --- a/containers/servlet/src/main/java/org/glassfish/tyrus/servlet/TyrusHttpUpgradeHandler.java +++ b/containers/servlet/src/main/java/org/glassfish/tyrus/servlet/TyrusHttpUpgradeHandler.java @@ -17,6 +17,7 @@ package org.glassfish.tyrus.servlet; import java.io.IOException; +import java.nio.Buffer; import java.nio.ByteBuffer; import java.util.concurrent.CountDownLatch; import java.util.logging.Level; @@ -171,7 +172,7 @@ private int fillBuf(int length) throws IOException { if (buf == null) { LOGGER.finest("No Buffer. Allocating new one"); buf = ByteBuffer.wrap(data); - buf.limit(len); + ((Buffer) buf).limit(len); } else { int limit = buf.limit(); int capacity = buf.capacity(); @@ -180,18 +181,18 @@ private int fillBuf(int length) throws IOException { if (capacity - limit >= len) { // Remaining data need not be changed. New data is just appended LOGGER.finest("Remaining data need not be moved. New data is just appended"); - buf.mark(); - buf.position(limit); - buf.limit(capacity); + ((Buffer) buf).mark(); + ((Buffer) buf).position(limit); + ((Buffer) buf).limit(capacity); buf.put(data, 0, len); - buf.limit(limit + len); - buf.reset(); + ((Buffer) buf).limit(limit + len); + ((Buffer) buf).reset(); } else if (remaining + len < capacity) { // Remaining data is moved to left. Then new data is appended LOGGER.finest("Remaining data is moved to left. Then new data is appended"); buf.compact(); buf.put(data, 0, len); - buf.flip(); + ((Buffer) buf).flip(); } else { // Remaining data + new > capacity. So allocate new one LOGGER.finest("Remaining data + new > capacity. So allocate new one"); @@ -199,7 +200,7 @@ private int fillBuf(int length) throws IOException { buf.get(array, 0, remaining); System.arraycopy(data, 0, array, remaining, len); buf = ByteBuffer.wrap(array); - buf.limit(remaining + len); + ((Buffer) buf).limit(remaining + len); } } diff --git a/core/src/main/java/org/glassfish/tyrus/core/BinaryBuffer.java b/core/src/main/java/org/glassfish/tyrus/core/BinaryBuffer.java index a2b460ae..62c1fc7d 100644 --- a/core/src/main/java/org/glassfish/tyrus/core/BinaryBuffer.java +++ b/core/src/main/java/org/glassfish/tyrus/core/BinaryBuffer.java @@ -16,6 +16,7 @@ package org.glassfish.tyrus.core; +import java.nio.Buffer; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; @@ -68,7 +69,7 @@ ByteBuffer getBufferedContent() { b.put(buffered); } - b.flip(); + ((Buffer) b).flip(); resetBuffer(0); return b; } diff --git a/core/src/main/java/org/glassfish/tyrus/core/StrictUtf8.java b/core/src/main/java/org/glassfish/tyrus/core/StrictUtf8.java index ceeddce3..05dcf470 100644 --- a/core/src/main/java/org/glassfish/tyrus/core/StrictUtf8.java +++ b/core/src/main/java/org/glassfish/tyrus/core/StrictUtf8.java @@ -79,13 +79,13 @@ private static char lowSurrogate(int codePoint) { } private static void updatePositions(ByteBuffer src, int sp, CharBuffer dst, int dp) { - src.position(sp - src.arrayOffset()); - dst.position(dp - dst.arrayOffset()); + ((Buffer) src).position(sp - src.arrayOffset()); + ((Buffer) dst).position(dp - dst.arrayOffset()); } private static void updatePositions(CharBuffer src, int sp, ByteBuffer dst, int dp) { - src.position(sp - src.arrayOffset()); - dst.position(dp - dst.arrayOffset()); + ((Buffer) src).position(sp - src.arrayOffset()); + ((Buffer) dst).position(dp - dst.arrayOffset()); } private static class Decoder extends CharsetDecoder { @@ -166,7 +166,7 @@ private static CoderResult malformedN(ByteBuffer src, int nb) { } private static CoderResult malformed(ByteBuffer src, int sp, CharBuffer dst, int dp, int nb) { - src.position(sp - src.arrayOffset()); + ((Buffer) src).position(sp - src.arrayOffset()); CoderResult cr = malformedN(src, nb); updatePositions(src, sp, dst, dp); return cr; @@ -174,9 +174,9 @@ private static CoderResult malformed(ByteBuffer src, int sp, CharBuffer dst, int private static CoderResult malformed(ByteBuffer src, int mark, int nb) { - src.position(mark); + ((Buffer) src).position(mark); CoderResult cr = malformedN(src, nb); - src.position(mark); + ((Buffer) src).position(mark); return cr; } @@ -186,7 +186,7 @@ private static CoderResult malformedForLength(ByteBuffer src, int sp, CharBuffer } private static CoderResult malformedForLength(ByteBuffer src, int mark, int malformedNB) { - src.position(mark); + ((Buffer) src).position(mark); return CoderResult.malformedForLength(malformedNB); } @@ -197,7 +197,7 @@ private static CoderResult xflow(ByteBuffer src, int sp, int sl, CharBuffer dst, } private static CoderResult xflow(Buffer src, int mark, int nb) { - src.position(mark); + ((Buffer) src).position(mark); return (nb == 0 || src.remaining() < nb) ? CoderResult.UNDERFLOW : CoderResult.OVERFLOW; } @@ -378,7 +378,7 @@ private static ByteBuffer getByteBuffer(ByteBuffer bb, byte[] ba, int sp) { if (bb == null) { bb = ByteBuffer.wrap(ba); } - bb.position(sp); + ((Buffer) bb).position(sp); return bb; } @@ -529,7 +529,7 @@ private static CoderResult overflow(CharBuffer src, int sp, ByteBuffer dst, int } private static CoderResult overflow(CharBuffer src, int mark) { - src.position(mark); + ((Buffer) src).position(mark); return CoderResult.OVERFLOW; } @@ -621,7 +621,7 @@ private CoderResult encodeBufferLoop(CharBuffer src, ByteBuffer dst) { } int uc = sgp.parse(c, src); if (uc < 0) { - src.position(mark); + ((Buffer) src).position(mark); return sgp.error(); } if (dst.remaining() < 4) { @@ -643,7 +643,7 @@ private CoderResult encodeBufferLoop(CharBuffer src, ByteBuffer dst) { } mark++; } - src.position(mark); + ((Buffer) src).position(mark); return CoderResult.UNDERFLOW; } diff --git a/core/src/main/java/org/glassfish/tyrus/core/TyrusWebSocketEngine.java b/core/src/main/java/org/glassfish/tyrus/core/TyrusWebSocketEngine.java index bfec0b13..5861c1f7 100644 --- a/core/src/main/java/org/glassfish/tyrus/core/TyrusWebSocketEngine.java +++ b/core/src/main/java/org/glassfish/tyrus/core/TyrusWebSocketEngine.java @@ -16,8 +16,8 @@ package org.glassfish.tyrus.core; +import java.nio.Buffer; import java.nio.ByteBuffer; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; @@ -507,7 +507,7 @@ public void handle(ByteBuffer data) { ? ((newSize / BUFFER_STEP_SIZE) + 1) * BUFFER_STEP_SIZE : newSize; final ByteBuffer result = ByteBuffer.allocate(roundedSize > incomingBufferSize ? newSize : roundedSize); - result.flip(); + ((Buffer) result).flip(); data = Utils.appendBuffers(result, data, incomingBufferSize, BUFFER_STEP_SIZE); } } diff --git a/core/src/main/java/org/glassfish/tyrus/core/Utils.java b/core/src/main/java/org/glassfish/tyrus/core/Utils.java index b066c10e..2c7e448e 100644 --- a/core/src/main/java/org/glassfish/tyrus/core/Utils.java +++ b/core/src/main/java/org/glassfish/tyrus/core/Utils.java @@ -17,6 +17,7 @@ package org.glassfish.tyrus.core; import java.net.URI; +import java.nio.Buffer; import java.nio.ByteBuffer; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -303,18 +304,18 @@ public static ByteBuffer appendBuffers(ByteBuffer buffer, ByteBuffer buffer1, in // buffer1 will be appended to buffer if (len < (capacity - limit)) { - buffer.mark(); - buffer.position(limit); - buffer.limit(capacity); + ((Buffer) buffer).mark(); + ((Buffer) buffer).position(limit); + ((Buffer) buffer).limit(capacity); buffer.put(buffer1); - buffer.limit(limit + len); - buffer.reset(); + ((Buffer) buffer).limit(limit + len); + ((Buffer) buffer).reset(); return buffer; // Remaining data is moved to left. Then new data is appended } else if (remaining + len < capacity) { buffer.compact(); buffer.put(buffer1); - buffer.flip(); + ((Buffer) buffer).flip(); return buffer; // create new buffer } else { @@ -328,7 +329,7 @@ public static ByteBuffer appendBuffers(ByteBuffer buffer, ByteBuffer buffer1, in final ByteBuffer result = ByteBuffer.allocate(roundedSize > incomingBufferSize ? newSize : roundedSize); result.put(buffer); result.put(buffer1); - result.flip(); + ((Buffer) result).flip(); return result; } } diff --git a/core/src/main/java/org/glassfish/tyrus/core/frame/CloseFrame.java b/core/src/main/java/org/glassfish/tyrus/core/frame/CloseFrame.java index 8a53b472..17bfb8b4 100644 --- a/core/src/main/java/org/glassfish/tyrus/core/frame/CloseFrame.java +++ b/core/src/main/java/org/glassfish/tyrus/core/frame/CloseFrame.java @@ -16,6 +16,7 @@ package org.glassfish.tyrus.core.frame; +import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; @@ -123,13 +124,13 @@ private String utf8Decode(byte[] data) { CoderResult result = decoder.decode(b, cb, true); if (result.isUnderflow()) { decoder.flush(cb); - cb.flip(); + ((Buffer) cb).flip(); reason = cb.toString(); break; } if (result.isOverflow()) { CharBuffer tmp = CharBuffer.allocate(2 * n + 1); - cb.flip(); + ((Buffer) cb).flip(); tmp.put(cb); cb = tmp; continue; diff --git a/core/src/main/java/org/glassfish/tyrus/core/frame/TextFrame.java b/core/src/main/java/org/glassfish/tyrus/core/frame/TextFrame.java index c603508e..a4df967c 100644 --- a/core/src/main/java/org/glassfish/tyrus/core/frame/TextFrame.java +++ b/core/src/main/java/org/glassfish/tyrus/core/frame/TextFrame.java @@ -16,6 +16,7 @@ package org.glassfish.tyrus.core.frame; +import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.CharacterCodingException; @@ -140,13 +141,13 @@ private String utf8Decode(boolean finalFragment, byte[] data, ByteBuffer remaind this.remainder = b; } } - cb.flip(); + ((Buffer) cb).flip(); res = cb.toString(); break; } if (result.isOverflow()) { CharBuffer tmp = CharBuffer.allocate(2 * n + 1); - cb.flip(); + ((Buffer) cb).flip(); tmp.put(cb); cb = tmp; continue; diff --git a/core/src/main/java/org/glassfish/tyrus/core/uri/internal/UriComponent.java b/core/src/main/java/org/glassfish/tyrus/core/uri/internal/UriComponent.java index 85c80b87..ed52dad8 100644 --- a/core/src/main/java/org/glassfish/tyrus/core/uri/internal/UriComponent.java +++ b/core/src/main/java/org/glassfish/tyrus/core/uri/internal/UriComponent.java @@ -19,6 +19,7 @@ import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URLDecoder; +import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; @@ -775,7 +776,7 @@ private static ByteBuffer decodePercentEncodedOctets(final String s, int i, Byte if (bb == null) { bb = ByteBuffer.allocate(1); } else { - bb.clear(); + ((Buffer) bb).clear(); } while (true) { @@ -794,7 +795,7 @@ private static ByteBuffer decodePercentEncodedOctets(final String s, int i, Byte // Check if the byte buffer needs to be increased in size if (bb.position() == bb.capacity()) { - bb.flip(); + ((Buffer) bb).flip(); // Create a new byte buffer with the maximum number of possible // octets, hence resize should only occur once final ByteBuffer bb_new = ByteBuffer.allocate(s.length() / 3); @@ -803,7 +804,7 @@ private static ByteBuffer decodePercentEncodedOctets(final String s, int i, Byte } } - bb.flip(); + ((Buffer) bb).flip(); return bb; }