in src/main/java/com/epam/digital/data/platform/restapi/core/exception/ApplicationExceptionHandler.java [418:448]
private DetailedErrorResponse<FieldsValidationErrorDetails> getValidationErrorsResponse(
BindingResult bindingResult, String defaultResponseCode) {
var generalErrorList = bindingResult.getFieldErrors();
var validationConstraint = generalErrorList.get(0).unwrap(ConstraintViolation.class);
var constraintType =
validationConstraint.getConstraintDescriptor().getAnnotation().annotationType();
var fieldType =
Optional.ofNullable(validationConstraint.getInvalidValue())
.map(Object::getClass)
.orElse(Object.class);
String code;
if (Size.class.equals(constraintType) && fieldType.isArray()) {
code = ResponseCode.LIST_SIZE_VALIDATION_ERROR;
} else {
code = defaultResponseCode;
}
DetailedErrorResponse<FieldsValidationErrorDetails> invalidFieldsResponse =
newDetailedResponse(code);
var customErrorsDetails =
generalErrorList.stream()
.map(
error ->
new FieldsValidationErrorDetails.FieldError(
String.valueOf(error.getRejectedValue()),
error.getField(),
error.getDefaultMessage()))
.collect(toList());
invalidFieldsResponse.setDetails(new FieldsValidationErrorDetails(customErrorsDetails));
return invalidFieldsResponse;
}