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;
 >>> > > }
 >>> > >
 >>> > >
 >>> >




Reply via email to