Co-authored-by: Phan Huy Tran <p.tran@neusta.de> Reviewed-on: #11 Reviewed-by: Jan Gleytenhoover <krisellp9@gmail.com>
51 lines
2.4 KiB
Java
51 lines
2.4 KiB
Java
package de.szut.lf8_starter.exceptionHandling;
|
|
|
|
import io.swagger.v3.oas.annotations.media.Content;
|
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
|
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
|
import jakarta.validation.ConstraintViolationException;
|
|
import org.springframework.http.HttpStatus;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.web.bind.MethodArgumentNotValidException;
|
|
import org.springframework.web.bind.annotation.ControllerAdvice;
|
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
|
import org.springframework.web.context.request.WebRequest;
|
|
|
|
import java.util.Date;
|
|
|
|
@ControllerAdvice
|
|
@ApiResponses(value = {
|
|
@ApiResponse(responseCode = "500", description = "invalid JSON posted",
|
|
content = @Content)
|
|
})
|
|
public class GlobalExceptionHandler {
|
|
|
|
@ExceptionHandler(ResourceNotFoundException.class)
|
|
public ResponseEntity<?> handleHelloEntityNotFoundException(ResourceNotFoundException ex, WebRequest request) {
|
|
ErrorDetails errorDetails = new ErrorDetails(new Date(), ex.getMessage(), request.getDescription(false));
|
|
return new ResponseEntity<>(errorDetails, HttpStatus.NOT_FOUND);
|
|
}
|
|
|
|
@ExceptionHandler(Exception.class)
|
|
public ResponseEntity<ErrorDetails> handleAllOtherExceptions(Exception ex, WebRequest request) {
|
|
ErrorDetails errorDetails = new ErrorDetails(new Date(), ex.getClass() + " " + ex.getMessage(), request.getDescription(false));
|
|
|
|
return new ResponseEntity<>(errorDetails, HttpStatus.INTERNAL_SERVER_ERROR);
|
|
}
|
|
|
|
@ExceptionHandler(MethodArgumentNotValidException.class)
|
|
public ResponseEntity<ErrorDetails> handleMethodArgumentNotValidException(MethodArgumentNotValidException ex, WebRequest request) {
|
|
ErrorDetails errorDetails = new ErrorDetails(new Date(), ex.getMessage(), request.getDescription(false));
|
|
|
|
return new ResponseEntity<>(errorDetails, HttpStatus.BAD_REQUEST);
|
|
}
|
|
|
|
@ExceptionHandler(ConstraintViolationException.class)
|
|
public ResponseEntity<ErrorDetails> handleConstraintViolationException(ConstraintViolationException ex, WebRequest request) {
|
|
String errorMessage = ex.getConstraintViolations().stream().findFirst().get().getMessage();
|
|
|
|
ErrorDetails errorDetails = new ErrorDetails(new Date(), errorMessage, request.getDescription(false));
|
|
|
|
return new ResponseEntity<>(errorDetails, HttpStatus.BAD_REQUEST);
|
|
}
|
|
}
|