package me.bvn13.test.spring.validation.atleastonegroup.web; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.validation.FieldError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import java.util.HashMap; import java.util.Map; @Slf4j @RestControllerAdvice public class ApiExceptionHandler { @ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity handle(MethodArgumentNotValidException e) { log.error("Validation exception", e); final Map errors = new HashMap<>(); e.getBindingResult().getAllErrors().forEach((error) -> { if (error instanceof FieldError) { String fieldName = ((FieldError) error).getField(); String errorMessage = error.getDefaultMessage(); errors.put(fieldName, errorMessage); } else { errors.put(error.getObjectName(), error.getDefaultMessage()); } }); return ResponseEntity.status(HttpStatus.BAD_REQUEST) .body(ApiResponseDto.builder() .response(errors) .status("VALIDATION_ERROR: Validation error") .build()); } }