Boa tarde, pessoal, estou tentando capturar o erro ConstraintViolationException via Provider implementando ExceptionMapper. O problema é que parece não funcionar, o provider não intercepta a requisição e aparentemente está tudo certo. Procurei em fóruns e tutorias, porém, sem sucesso, segue abaixo o código do Provider:
@Provider
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class ConstraintViolationHandlerProvider implements ExceptionMapper<ConstraintViolationException> {
@Override
public Response toResponse(ConstraintViolationException exception) {
return Response.status(Status.BAD_REQUEST)
.entity(exception.getConstraintViolations().stream()
.map(error -> new ResponseError(error.getPropertyPath().toString(), error.getMessage()))
.collect(Collectors.toList()))
.build();
}
}
Segue a assinatura do recurso:
@POST
@Path("{formId}")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Override
public Response saveCheckedModel(@Valid CheckedModel checkedModel, @PathParam("formId") String clinicalFormId) {
try {
checkedModel.setClinicalFormId(clinicalFormId);
checkedModelCore.Add(checkedModel);
return Response
.created(new URI(
String.format(StringLiteralConstants.CHECKED_MODEL_RESOURCE, checkedModel.getAttendanceId(),
checkedModel.getClinicalFormId(), checkedModel.getCheckedDate().getTime())))
.build();
} catch (Exception e) {
logger.error(e.getMessage());
return Response.serverError().build();
}
}
Alguém já passou por esse problema e sabe como resolver?