Thanks Romain, it seems using a ContainerRequestFilter did the job.

I will open a ticket.

On Wed, Dec 25, 2019 at 2:45 PM Romain Manni-Bucau <rmannibu...@gmail.com>
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