Tengo la siguiente clase Event DTO:
@AutoValue @JsonDeserialize(builder = AutoValue_Event.Builder.class) @JsonIgnoreProperties(ignoreUnknown = true) public abstract class Event { public static Event.Builder builder() { return new AutoValue_Event.Builder(); } public abstract UUID id(); @NotNull public abstract Type type(); @NotNull @JsonSerialize(using = LocalDateSerializer.class) @JsonDeserialize(using = LocalDateDeserializer.class) public abstract LocalDate date(); @AutoValue.Builder public abstract static class Builder { @JsonProperty("id") public abstract Builder id(UUID id); @JsonProperty("type") public abstract Builder type(Type type); @JsonProperty("date") public abstract Builder date(LocalDate date); } } La validación funciona bien para los atributos de type y date , y Jackson lanza una JsonMappingException como se esperaba cuando la carga útil no es correcta. Desafortunadamente, el mensaje de error devuelto es un text/plain como: JsonMappingException: Can not construct instance of project.dto.AutoValue_Event$Builder, problem: Missing required properties: type .
¿Hay alguna manera de manejar esos errores de validación y devolver un objeto de error json explícito?
Encontré esta publicación para detectar la excepción y devolver un json explícito, pero no puedo asignar un mensaje de error personalizado en qué campo falló la deserialización (no quiero analizar la excepción del mensaje para saber qué campo es incorrecto). ¿Alguna idea?