cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergey Beryozkin <sberyoz...@gmail.com>
Subject Re: [CXF.REST] javax.ws.rs exception throwing from ExceptionMapper
Date Tue, 29 Jan 2013 13:49:56 GMT
Hi Andrei
On 29/01/13 13:44, Andrei Shakirin wrote:
> Hi Sergei,
>
>> -----Original Message-----
>> From: Sergey Beryozkin [mailto:sberyozkin@gmail.com]
>> Sent: Dienstag, 29. Januar 2013 14:16
>> To: users@cxf.apache.org
>> Subject: Re: [CXF.REST] javax.ws.rs exception throwing from
>> ExceptionMapper
>>
>> Hi Andrei
>> On 29/01/13 12:51, Andrei Shakirin wrote:
>>> Hi,
>>>
>>> Would like to discuss the following:
>>> CXF Rest service implementation processes javax.ws.rs
>> (NotFoaundException, BadRequestException) exceptions correctly.
>>> But if these exception are thrown form exception mapper, client always
>> receive InternalServerError exception.
>>>
>>> Is this behaviour specified by JAX-RS?
>>
>> I'm actually not seeing anything specific in the text, but I think at the moment
>> that CXF is correct, because otherwise the question is how to map these
>> rethrown exceptions and we can have an infinity loop - something the spec
>> talks about, for example, an exception mapper sets a Response entity - next
>> MessageBodyWriter throws the exception again - this 500, so I think it is 500
>> in this case too
>>
>
> Hmm ... is it possible not to map exceptions thrown by ExceptionMapper again to avoid
loops?
> Is there any possibility to distinguish them?
>
The only thing the runtime can do is to catch the exception, check if it 
is an instance of WebApplicationException and if yes - getResponse on 
it, which is exactly what the mapper can do; and I think if we did it it 
would probably be not-portable...

>>> I find convenient in some cases just to re-throw javax.ws.rs exceptions
>> from mapper and not build Response manually.
>>>
>> Sure, in this case it is easy :-), all WebApplicationException instances have
>> getResponse() method - so simply use exception.getResponse() - it will have
>> a proper status set, etc..
>
> Sure, if response is set. But if it is null? Mapper must build response manually, set
correct response code - not a big deal, but anyway ...
>
For WebApplicationExceptions it is always set,

as for the custom non WAE-exceptions - only the mappers know how to map 
them to anything but 500 :-)

Cheers, Sergey

> Regards,
> Andrei.
>
>>
>> HTH, Sergey
>>
>>> WDYT?
>>>
>>> Regards,
>>> Andrei.
>>>
>>>
>>>


Mime
View raw message