users@jax-rs-spec.java.net

[jax-rs-spec users] [jsr339-experts] Re: Re: Re: Null response entity and writer providers

From: Marek Potociar <marek.potociar_at_oracle.com>
Date: Fri, 15 Mar 2013 13:48:37 +0100

On Mar 15, 2013, at 1:28 PM, Sergey Beryozkin <sberyozkin_at_talend.com> wrote:

> On 15/03/13 11:29, Marek Potociar wrote:
>>
>> On Mar 13, 2013, at 11:14 PM, Sergey Beryozkin<sberyozkin_at_talend.com> wrote:
>>
>>> On 13/03/13 14:27, Sergey Beryozkin wrote:
>>>> On 13/03/13 14:25, Marek Potociar wrote:
>>>>> I'd say that if there is no entity produced, no writers are invoked
>>>>> and thus no writer interceptors are invoked. That's analogous to
>>>>> processing empty inbound messages where the user does not try to
>>>>> inject or read the entity.
>>>>>
>>>> That sounds OK, agreed
>>>>
>>> What should ContainerResponseContext return in case of the null response body and the resource method actually invoked, for example,
>>>
>>> public Book getBook() {
>>> throw new SomeException();
>>> }
>>>
>>> Mapper: maps it to Response with a null entity.
>>>
>>> The filters are processing this response, should they return 'null' for ContainerResponseContext for getEntityClass/Type/Annotations, or the actual Book type info ?
>>
>> Annotations should be always set from method.
>> Type and Class should be only set for non-null results.
>>
> Yes, it helps, thanks. This is actually how I implement it now, though the user can reset the method-level annotations from the response filter

That's fine,

Cheers,
Marek
>
> Cheers, Sergey
>> HTH,
>> Marek
>>
>>> I think it should be 'null' but as usual would appreciate that it is indeed the case
>>> Sergey
>>>
>>>
>>>> Cheers, Sergey
>>>>> Marek
>>>>>
>>>>> On Mar 13, 2013, at 2:38 PM, Sergey Beryozkin<sberyozkin_at_talend.com>
>>>>> wrote:
>>>>>
>>>>>> Hi
>>>>>>
>>>>>> If we have a null response entity (example, with "void" resource
>>>>>> method return types or Response having no entity set), do writer
>>>>>> interceptors still get a chance to change it ? I think yes,
>>>>>> WriterInterceptorContext has a setEntity() method,
>>>>>>
>>>>>> but given WriterInterceptor chain delegates eventually to
>>>>>> MessageBodyWriter, I wonder what is the right answer there.
>>>>>>
>>>>>> I guess the runtime should indeed let the writers process Response
>>>>>> with the empty entity, but stop short of delegating to
>>>>>> MessageBodyWriter if the response entity is null...
>>>>>>
>>>>>> Sergey
>>>>>
>>