private DetailedErrorResponse getValidationErrorsResponse()

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;
  }