package tk.antoine_roux.wiki.configuration; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.context.request.WebRequest; import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; import tk.antoine_roux.wiki.configuration.Exception.DeleteRunnerException; import tk.antoine_roux.wiki.configuration.Exception.NoIdException; import java.time.LocalDateTime; import java.util.LinkedHashMap; import java.util.Map; /** * Custom http handler for dealing with {@link Exception} */ @ControllerAdvice public class ControllerExceptionHandler extends ResponseEntityExceptionHandler { @ExceptionHandler({NoIdException.class}) public ResponseEntity handleInternalException(NoIdException ex, WebRequest request) { Map body = new LinkedHashMap<>(); body.put("timestamp", LocalDateTime.now()); body.put("message", ex.getMessage()); return new ResponseEntity<>(body, HttpStatus.INTERNAL_SERVER_ERROR); } @ExceptionHandler({DeleteRunnerException.class}) public ResponseEntity handleNotFoundException(NoIdException ex, WebRequest request) { Map body = new LinkedHashMap<>(); body.put("timestamp", LocalDateTime.now()); body.put("message", ex.getMessage()); return new ResponseEntity<>(body, HttpStatus.NOT_FOUND); } }