0
votes

I have created a controller advice class to return JSON error responses. It does not respond with JSON when I get a HttpMessageNotReadableException, however I still get a "Resolved [org.springframework.http.converter.HttpMessageNotReadableException:..." log in my terminal.

My exception handler class:

@ControllerAdvice
public class PosterExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(value = {
            RuntimeException.class,
    })
    protected ResponseEntity<ExceptionResponse> internalServerErrorHandler(RuntimeException e) {
        return this.defaultResponseHandler(e, HttpStatus.INTERNAL_SERVER_ERROR);
    }

    @ExceptionHandler(value = {
            UserNotFoundException.class,
            UserExistsException.class,
            InvalidTokenException.class
    })
    public ResponseEntity<ExceptionResponse> badRequestResponseHandler(RuntimeException e) {
        return this.defaultResponseHandler(e, HttpStatus.BAD_REQUEST);
    }

    public ResponseEntity<ExceptionResponse> defaultResponseHandler(RuntimeException e, HttpStatus status) {
        var resp = new ExceptionResponse(
                status.value(),
                e.getMessage(),
                Instant.now()
        );
        return new ResponseEntity<>(resp, status);
    }

}

The exception I receive is org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public org.springframework.http.ResponseEntity<java.lang.Object> com.sulayman.poster.controller.PostController.post(com.sulayman.poster.dto.PostRequestDto