The issue was the DefaultExceptionMapper that I created that extends
WebApplicationExceptionMapper was never called. Also
WebApplicationExceptionMapper was never called if I didn't create the
default one.

In summary WebApplicationExceptionMapper is never called, because of the
property I mentioned earlier. Changing it to false, it works.

On Thu, Dec 26, 2019 at 1:33 PM Andriy Redko <drr...@gmail.com> wrote:

> Hi Ivan,
>
> Please correct me if I misunderstood the case
>
>  > Hello guys, I am trying to log the exception thrown by
>  > WebApplicationExceptionMapper but the exception mapper is never called.
>
> You have an exception mapper (WebApplicationExceptionMapper) which throws
> (possibly, another) exception while trying to map the exception? And you
> would like to intercept and log the exceptions thrown from mapper? Or your
> JAX-RS resources thrown exceptions and WebApplicationExceptionMapper is
> never
> called?
>
> Thank you.
>
> Best Regards,
>     Andriy Redko
>
>
>
>
> IJF> Thanks Romain, it seems using a ContainerRequestFilter did the job.
>
> IJF> I will open a ticket.
>
> IJF> On Wed, Dec 25, 2019 at 2:45 PM Romain Manni-Bucau <
> rmannibu...@gmail.com>
> IJF> wrote:
>
> >> Hi Ivan
>
> >> You can set it with a cxf interceptor or even jaxrs filter but looks
> like a
> >> bug, at least the default. Default should be true only if there is no
> >> custom mapper, not if there is any registered mapper matching and this
> is
> >> known at deploy time. Guess you should open a ticket.
>
> >> Le mer. 25 déc. 2019 à 15:32, Ivan Junckes Filho <ivanjunc...@gmail.com>
> a
> >> écrit :
>
> >> > It seems the issue is with:
> >> > wae.spec.optimization property, it needs to be false or it
> >> > webapplicationexception  will be skipped.
> >> >
> >> > But I can't find the way to set it to false. Property is part of
> >> > org.apache.cxf.message.Message.
> >> >
> >> > Anyone can help? system.properties didn't work.
> >> >
> >> > On Wed, Dec 25, 2019 at 10:23 AM Ivan Junckes Filho <
> >> ivanjunc...@gmail.com
> >> > >
> >> > wrote:
> >> >
> >> > > Hello guys, I am trying to log the exception thrown by
> >> > > WebApplicationExceptionMapper but the exception mapper is never
> called.
> >> > >
> >> > > Instead of calling it tomee calls
> >> ExceptionUtils.convertFaultToResponse.
> >> > > Even writing a new default exception mapper doesn't work. Anyone
> knows
> >> > how
> >> > > can I print the exception of WebApplicationException? It can be
> using
> >> the
> >> > > mapper or not.
> >> > >
> >> > > public static <T extends Throwable> Response
> convertFaultToResponse(T
> >> > ex, Message currentMessage) {
> >> > >     if (ex == null || currentMessage == null) {
> >> > >         return null;
> >> > >     }e
> >> > >     Message inMessage = currentMessage.getExchange().getInMessage();
> >> > >     Response response = null;
> >> > >     if (ex instanceof WebApplicationException) {
> >> > >         WebApplicationException webEx = (WebApplicationException)ex;
> >> > >         if (webEx.getResponse().hasEntity()
> >> > >             && webEx.getCause() == null
> >> > >             && MessageUtils.getContextualBoolean(inMessage,
> >> > SUPPORT_WAE_SPEC_OPTIMIZATION, true)) {
> >> > >             response = webEx.getResponse();
> >> > >         }
> >> > >     }
> >> > >
> >> > >     if (response == null) {
> >> > >         ExceptionMapper<T>  mapper =
> >> > >
> >> >
> >>
> ServerProviderFactory.getInstance(inMessage).createExceptionMapper(ex.getClass(),
> >> > inMessage);
> >> > >         if (mapper != null) {
> >> > >             try {
> >> > >                 response = mapper.toResponse(ex);
> >> > >             } catch (Throwable mapperEx) {
> >> > >
> >> >  inMessage.getExchange().put(JAXRSUtils.EXCEPTION_FROM_MAPPER,
> "true");
> >> > >                 mapperEx.printStackTrace();
> >> > >                 return Response.serverError().build();
> >> > >             }
> >> > >         }
> >> > >     }
> >> > >     if (response == null) {
> >> > >         Throwable unwrappedException = ex.getCause();
> >> > >         if (unwrappedException instanceof WebApplicationException) {
> >> > >             WebApplicationException webEx =
> >> > (WebApplicationException)unwrappedException;
> >> > >             response = webEx.getResponse();
> >> > >         }
> >> > >     }
> >> > >     JAXRSUtils.setMessageContentType(currentMessage, response);
> >> > >     return response;
> >> > > }
> >> > >
> >> > >
> >> >
>
>
>

Reply via email to