use EntityInputStream to check if stream is empty
Signed-off-by: Maxim Nesen <maxim.nesen@oracle.com>
diff --git a/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java b/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java
index c8a1c7e..3ac8031 100644
--- a/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java
+++ b/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java
@@ -19,7 +19,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.io.PushbackInputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
@@ -41,6 +40,7 @@
import org.glassfish.jersey.jsonb.LocalizationMessages;
import org.glassfish.jersey.message.internal.AbstractMessageReaderWriterProvider;
+import org.glassfish.jersey.message.internal.EntityInputStream;
/**
* Entity provider (reader and writer) for JSONB.
@@ -72,20 +72,10 @@
MediaType mediaType,
MultivaluedMap<String, String> httpHeaders,
InputStream entityStream) throws IOException, WebApplicationException {
- if (entityStream.markSupported()) {
- entityStream.mark(1);
- if (entityStream.read() == -1) {
- throw new NoContentException(LocalizationMessages.ERROR_JSONB_EMPTYSTREAM());
- }
- entityStream.reset();
- } else {
- final PushbackInputStream buffer = new PushbackInputStream(entityStream);
- final int firstByte = buffer.read();
- if (firstByte == -1) {
- throw new NoContentException(LocalizationMessages.ERROR_JSONB_EMPTYSTREAM());
- }
- buffer.unread(firstByte);
- entityStream = buffer;
+ final EntityInputStream entityInputStream = new EntityInputStream(entityStream);
+ entityStream = entityInputStream;
+ if (entityInputStream.isEmpty()) {
+ throw new NoContentException(LocalizationMessages.ERROR_JSONB_EMPTYSTREAM());
}
Jsonb jsonb = getJsonb(type);