[jax-rs-spec users] [jsr339-experts] Response.getEntity vs Response.readEntity

From: Sergey Beryozkin <>
Date: Thu, 16 Aug 2012 17:21:11 +0100

Response.readEntity docs say:

"A non-null message instance returned from this method will be cached
for subsequent retrievals via getEntity(). Unless the supplied entity
type is an input stream, this method automatically closes the consumed
response entity stream if it is not buffered. In case he entity input
stream has been buffered, it will be reset when the method returns to
enable subsequent invocations of the readEntity(...) methods on this
response. "

Suppose we have Response containing unconsumed InputStream.

I expect that initial Response.getEntity() returns a non-null Object
which is the same as the internal unconsumed InputStream:

assertTrue(Response.getEntity() instanceof InputStream);

Next, we do

// assuming a buffered entity is kept in ByteArrayInputStream
assertTrue(Response.getEntity() instanceof InputStream);

Book book = Response.readEntity(Book.class);

At this stage, what Response.getEntity() is supposed to return ?
Is it Book ? I think this is what the docs say but I'm not sure it is

Thanks, Sergey