jsr339-experts@jax-rs-spec.java.net

[jsr339-experts] Re: Response.getEntity vs Response.readEntity

From: Sergey Beryozkin <sberyozkin_at_talend.com>
Date: Thu, 16 Aug 2012 17:37:36 +0100

On 16/08/12 17:21, Sergey Beryozkin wrote:
> 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
>
> Response.bufferEntity();
> // 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
> right...
>
If it is indeed Book that is cached then we are ending up with two
buffered representations (in the above example and according to the
docs), the buffered entity stream (so that
Response.readEntity(Book.class) works) and Book instance itself

> Thanks, Sergey
>
>
>
>