users@jax-rs-spec.java.net

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

From: Sergey Beryozkin <sberyozkin_at_talend.com>
Date: Fri, 17 Aug 2012 11:36:52 +0100

On 17/08/12 11:25, Marek Potociar wrote:
>
> On Aug 16, 2012, at 6:37 PM, Sergey Beryozkin<sberyozkin_at_talend.com> wrote:
>
>> 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
>
> Is that a problem?

Can you confirm that when we start with Response containing an
unconsumed InputStream we get InputStream:

assertTrue(response.getEntity() instanceof InputStream)

Sergey


>
> Marek