GlobalExceptionHandler.java
package org.fresnel.backend.api;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
/**
* Maps domain validation exceptions thrown from controllers and core code
* (e.g. {@code IllegalArgumentException} from optics-core records) to HTTP 400.
*/
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(IllegalArgumentException.class)
public ResponseEntity<String> handleIllegalArgument(IllegalArgumentException ex) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.contentType(MediaType.TEXT_PLAIN)
.body(ex.getMessage() == null ? "bad request" : ex.getMessage());
}
}