Class UnifiedErrorResponseProcessor

java.lang.Object
br.com.xadm.comum.web.UnifiedErrorResponseProcessor
All Implemented Interfaces:
io.micronaut.http.server.exceptions.response.ErrorResponseProcessor<ProblemDetail>

@Singleton @Replaces(io.micronaut.http.server.exceptions.response.HateoasErrorResponseProcessor.class) public class UnifiedErrorResponseProcessor extends Object implements io.micronaut.http.server.exceptions.response.ErrorResponseProcessor<ProblemDetail>
Renderiza todo corpo de erro da API no formato RFC 7807 (ProblemDetail, application/problem+json), substituindo o HateoasErrorResponseProcessor default (que emitia {message, _links, _embedded}). É o padrão de erro da casa.

Atua no ponto único por onde o Micronaut renderiza erros gerados pelo framework: HttpStatusException (e a hierarquia de exceção desta lib), falhas de validação (Bean Validation), 404 de rota e erros de parse de corpo.

Honra a taxonomia de domínio da causa-raiz. Lê context.getRootCause(): quando a exceção é uma PortadoraDeProblema, carimba o code de máquina e o title de tipo que ela carrega; na ausência, cai no genérico (code = status.name(), title = status.getReason()) — byte-idêntico ao comportamento anterior. O title é do tipo do problema (estável, RFC 9457 §3.1.4); o específico da ocorrência fica no detail.

Falha de Bean Validation (ConstraintViolationException) recebe code uniforme (status.name(), ex. BAD_REQUEST — o mesmo de BadRequestException, para o consumidor não distinguir borda×service) mais a lista de campos rejeitados em invalid-params. Ordem de decisão: portadora → validação → genérico.

O status HTTP já vem definido na resposta quando este processor roda — apenas formatamos o corpo, sem alterar o status (preserva os contratos testados de cada app).

  • Constructor Details

    • UnifiedErrorResponseProcessor

      public UnifiedErrorResponseProcessor()
  • Method Details

    • processResponse

      public io.micronaut.http.MutableHttpResponse<ProblemDetail> processResponse(io.micronaut.http.server.exceptions.response.ErrorContext context, io.micronaut.http.MutableHttpResponse<?> response)
      Specified by:
      processResponse in interface io.micronaut.http.server.exceptions.response.ErrorResponseProcessor<ProblemDetail>