Thank you, agree with Romain, looks like an issue to me, please open one. IJF> The issue was the DefaultExceptionMapper that I created that extends WebApplicationExceptionMapper was never IJF> called. Also WebApplicationExceptionMapper was never called if I didn't create the default one.
IJF> In summary WebApplicationExceptionMapper is never called, because of the property I mentioned earlier. Changing it to false, it works. IJF> On Thu, Dec 26, 2019 at 1:33 PM Andriy Redko <drr...@gmail.com> wrote: IJF> Hi Ivan, IJF> 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. IJF> You have an exception mapper (WebApplicationExceptionMapper) which throws IJF> (possibly, another) exception while trying to map the exception? And you IJF> would like to intercept and log the exceptions thrown from mapper? Or your IJF> JAX-RS resources thrown exceptions and WebApplicationExceptionMapper is never IJF> called? IJF> Thank you. IJF> Best Regards, IJF> 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; >>> > > } >>> > > >>> > > >>> >