public Response toResponse(WebApplicationException ex) { Response r = ex.getResponse(); if (r == null) { r = Response.serverError().build(); } boolean doAddMessage = r.getEntity() != null ? false : addMessageToResponse; Message msg = PhaseInterceptorChain.getCurrentMessage(); FaultListener flogger = null; if (msg != null) { flogger = (FaultListener)PhaseInterceptorChain.getCurrentMessage() .getContextualProperty(FaultListener.class.getName()); } String errorMessage = doAddMessage || flogger != null ? buildErrorMessage(r, ex) : null; if (flogger == null || !flogger.faultOccurred(ex, errorMessage, msg)) { Level level = printStackTrace ? getStackTraceLogLevel(msg, r) : Level.FINE; LOG.log(level, ExceptionUtils.getStackTrace(ex)); } if (doAddMessage) { r = JAXRSUtils.copyResponseIfNeeded(r); r = buildResponse(r, errorMessage); } return r; }
public ErrorMappingExceptionMapper() { defaultMapper.setAddMessageToResponse(true); }
public static ServerProviderFactory createInstance(Bus bus) { if (bus == null) { bus = BusFactory.getThreadDefaultBus(); } ServerProviderFactory factory = new ServerProviderFactory(bus); ProviderFactory.initFactory(factory); factory.setProviders(false, false, new WebApplicationExceptionMapper(), new NioMessageBodyWriter()); factory.setBusProviders(); return factory; }
public Response toResponse(WebApplicationException ex) { Response r = ex.getResponse(); if (r == null) { r = Response.serverError().build(); } boolean doAddMessage = r.getEntity() != null ? false : addMessageToResponse; Message msg = PhaseInterceptorChain.getCurrentMessage(); FaultListener flogger = null; if (msg != null) { flogger = (FaultListener)PhaseInterceptorChain.getCurrentMessage() .getContextualProperty(FaultListener.class.getName()); } String errorMessage = doAddMessage || flogger != null ? buildErrorMessage(r, ex) : null; if (flogger == null || !flogger.faultOccurred(ex, errorMessage, msg)) { Level level = printStackTrace ? Level.WARNING : Level.FINE; LOG.log(level, getStackTrace(ex)); } if (doAddMessage) { r = JAXRSUtils.copyResponseIfNeeded(r); r = JAXRSUtils.fromResponse(r).entity(errorMessage).type(MediaType.TEXT_PLAIN).build(); } return r; }
public Response toResponse(WebApplicationException exception) { if (exception.getResponse().getStatus() == 500) { return Response.status(500).type("text/plain") .entity(exception.getCause().getMessage()).build(); } return super.toResponse(exception); }
private JAXRSServerFactoryBean getJAXRSServerFactory() { JAXRSServerFactoryBean factoryBean = new JAXRSServerFactoryBean(); factoryBean.setProvider(new JacksonJsonProvider()); factoryBean.setProvider(new JAXRSExceptionMapper()); factoryBean.setProvider(new WebApplicationExceptionMapper()); return factoryBean; } }
@Override public Response toResponse(final Throwable throwable) { // If there's no ServletExceptionMapper then apply the ErrorMappings final Message message = PhaseInterceptorChain.getCurrentMessage(); final OperationResourceInfo ori = message.getExchange().get(OperationResourceInfo.class); if (ori != null) { final Map<Class<?>, ErrorMappingInfo> mapping = endpoints.get(ori); if (mapping != null) { final Class<?> exKey = throwable == null ? NullPointerException.class : throwable.getClass(); ErrorMappingInfo resolver = mapping.get(exKey); if (resolver == null) { resolver = applications.get(exKey); } if (resolver != null) { log(throwable); return Response .status(resolver.getStatusCode()) .entity(BodyResolver.class.cast(resolver.getResolver()).resolve(throwable)) .build(); } } } if (WebApplicationException.class.isInstance(throwable)) { // keep already built response (status code in particular) return defaultMapper.toResponse(WebApplicationException.class.cast(throwable)); } log(throwable); return Response.serverError().build(); }
private JAXRSServerFactoryBean getJAXRSServerFactory() { JAXRSServerFactoryBean factoryBean = new JAXRSServerFactoryBean(); factoryBean.setProvider(new JacksonJsonProvider()); factoryBean.setProvider(new JAXRSExceptionMapper()); factoryBean.setProvider(new WebApplicationExceptionMapper()); return factoryBean; } }