Разделение исключений JAX-RS ExceptionMapper - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть веб-приложение на основе JAX-RS.Приложение включает 2 типа API:

  1. типичные точки отдыха (json)
  2. конечная точка, которая дублирует остальные, но получает запросы в формате XML.

Оба API выдают разные форматы ответа.

  1. json
  2. XML

В настоящее время у меня есть один ExceptionMapper, чтобы перехватывать исключения, такие как: EJBAccessException, NotAllowedException ...

Какиемогут создаваться обоими типами API.

Мой вопрос: каков наилучший способ отделить обработку исключений?
(реакция на то же исключение для остальных API должна генерировать JSON-ответ, для XML - XML-ответ)

1 Ответ

0 голосов
/ 14 сентября 2018
@Context private ResourceInfo resourceInfo;

@Override
public Response toResponse(Throwable throwable) {
    if(resourceInfo.getResourceClass().isAnnotationPresent(RestExceptionMapper.class)) {
        return RestExceptionHandler.handle(throwable, servletRequest);
    } else if (resourceInfo.getResourceClass().isAnnotationPresent(SoapExceptionMapper.class)) {
        SoapExceptionHandler.handle(throwable, servletRequest);
    }
    return Response.status(500).entity("ERROR").build();
}

Это шаблон моего нового картографа исключений. Связь с ресурсом с помощью аннотации.

...