> 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...
Than let is leave as it is - I am convinced ;) Cheers, Andrei. > -----Original Message----- > From: Sergey Beryozkin [mailto:[email protected]] > Sent: Dienstag, 29. Januar 2013 14:50 > To: [email protected] > Subject: Re: [CXF.REST] javax.ws.rs exception throwing from > ExceptionMapper > > Hi Andrei > On 29/01/13 13:44, Andrei Shakirin wrote: > > Hi Sergei, > > > >> -----Original Message----- > >> From: Sergey Beryozkin [mailto:[email protected]] > >> Sent: Dienstag, 29. Januar 2013 14:16 > >> To: [email protected] > >> 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. > >>> > >>> > >>>
