Class DSpaceApiExceptionControllerAdvice

java.lang.Object
org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler
org.dspace.app.rest.exception.DSpaceApiExceptionControllerAdvice

@ControllerAdvice public class DSpaceApiExceptionControllerAdvice extends org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler
This Controller advice will handle default exceptions thrown by the DSpace REST API module.

Keep in mind some specialized handlers exist for specific message types, e.g. DSpaceAccessDeniedHandler

Author:
Tom Desair (tom dot desair at atmire dot com), Frederic Van Reet (frederic dot vanreet at atmire dot com), Andrea Bollini (andrea.bollini at 4science.it), Pasquale Cavallo (pasquale.cavallo at 4science dot it)
See Also:
  • Field Summary

    Fields inherited from class org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler

    logger, PAGE_NOT_FOUND_LOG_CATEGORY, pageNotFoundLogger
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    csrfTokenException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex)
     
    protected void
    handleAuthorizeException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex)
     
    protected void
    handleCustomUnprocessableEntityException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, TranslatableException ex)
    Add user-friendly error messages to the response body for selected errors.
    protected void
    handleGenericException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex)
     
    protected void
    handleInvalidCaptchaTokenRequestException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex)
     
    protected void
    handleInvalidPasswordException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex)
     
    protected void
    handleInvalidSearchRequestException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex)
     
    protected void
    handleIOException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex)
     
    protected void
    handleMaxUploadSizeExceededException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex)
     
    protected org.springframework.http.ResponseEntity<Object>
    handleMissingServletRequestParameter(org.springframework.web.bind.MissingServletRequestParameterException ex, org.springframework.http.HttpHeaders headers, org.springframework.http.HttpStatus status, org.springframework.web.context.request.WebRequest request)
     
    protected void
    handleOrcidValidationException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, OrcidValidationException ex)
    Handle the OrcidValidationException returning the exception message in the response, that always contains only the validation error codes (usable for example to show specific messages to users).
    protected void
    handleSQLException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex)
     
    protected org.springframework.http.ResponseEntity<Object>
    handleTypeMismatch(org.springframework.beans.TypeMismatchException ex, org.springframework.http.HttpHeaders headers, org.springframework.http.HttpStatus status, org.springframework.web.context.request.WebRequest request)
     
    protected void
    handleUnprocessableEntityException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex)
     
    protected void
    handleWrongRequestException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex)
     
    protected void
    methodNotAllowedException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex)
     
    protected void
    MissingParameterException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex)
     
    protected void
    ParameterConversionException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex)
     

    Methods inherited from class org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler

    handleAsyncRequestTimeoutException, handleBindException, handleConversionNotSupported, handleException, handleExceptionInternal, handleHttpMediaTypeNotAcceptable, handleHttpMediaTypeNotSupported, handleHttpMessageNotReadable, handleHttpMessageNotWritable, handleHttpRequestMethodNotSupported, handleMethodArgumentNotValid, handleMissingPathVariable, handleMissingServletRequestPart, handleNoHandlerFoundException, handleServletRequestBindingException

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • DSpaceApiExceptionControllerAdvice

      public DSpaceApiExceptionControllerAdvice()
  • Method Details

    • handleAuthorizeException

      @ExceptionHandler({org.dspace.authorize.AuthorizeException.class,RESTAuthorizationException.class,org.springframework.security.access.AccessDeniedException.class}) protected void handleAuthorizeException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex) throws IOException
      Throws:
      IOException
    • csrfTokenException

      @ExceptionHandler({org.springframework.security.web.csrf.InvalidCsrfTokenException.class,org.springframework.security.web.csrf.MissingCsrfTokenException.class}) protected void csrfTokenException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex) throws IOException
      Throws:
      IOException
    • handleWrongRequestException

      @ExceptionHandler({java.lang.IllegalArgumentException.class,org.springframework.web.multipart.MultipartException.class}) protected void handleWrongRequestException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex) throws IOException
      Throws:
      IOException
    • handleMaxUploadSizeExceededException

      @ExceptionHandler(org.springframework.web.multipart.MaxUploadSizeExceededException.class) protected void handleMaxUploadSizeExceededException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex) throws IOException
      Throws:
      IOException
    • handleSQLException

      @ExceptionHandler(java.sql.SQLException.class) protected void handleSQLException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex) throws IOException
      Throws:
      IOException
    • handleIOException

      @ExceptionHandler(java.io.IOException.class) protected void handleIOException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex) throws IOException
      Throws:
      IOException
    • methodNotAllowedException

      @ExceptionHandler(MethodNotAllowedException.class) protected void methodNotAllowedException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex) throws IOException
      Throws:
      IOException
    • handleUnprocessableEntityException

      @ExceptionHandler({UnprocessableEntityException.class,org.dspace.app.exception.ResourceAlreadyExistsException.class}) protected void handleUnprocessableEntityException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex) throws IOException
      Throws:
      IOException
    • handleInvalidSearchRequestException

      @ExceptionHandler(InvalidSearchRequestException.class) protected void handleInvalidSearchRequestException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex) throws IOException
      Throws:
      IOException
    • handleOrcidValidationException

      @ExceptionHandler(org.dspace.orcid.exception.OrcidValidationException.class) protected void handleOrcidValidationException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, OrcidValidationException ex) throws IOException
      Handle the OrcidValidationException returning the exception message in the response, that always contains only the validation error codes (usable for example to show specific messages to users). No other details are present in the exception message.
      Throws:
      IOException
    • handleCustomUnprocessableEntityException

      @ExceptionHandler({RESTEmptyWorkflowGroupException.class,EPersonNameNotProvidedException.class,GroupNameNotProvidedException.class,GroupHasPendingWorkflowTasksException.class,PasswordNotValidException.class,RESTBitstreamNotFoundException.class}) protected void handleCustomUnprocessableEntityException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, TranslatableException ex) throws IOException
      Add user-friendly error messages to the response body for selected errors. Since the error messages will be exposed to the API user, the exception classes are expected to implement TranslatableException such that the error messages can be translated.
      Parameters:
      request - the client's request
      response - our response
      ex - exception thrown in handling request
      Throws:
      IOException - passed through.
    • ParameterConversionException

      @ExceptionHandler(org.springframework.data.repository.support.QueryMethodParameterConversionException.class) protected void ParameterConversionException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex) throws IOException
      Throws:
      IOException
    • MissingParameterException

      @ExceptionHandler(MissingParameterException.class) protected void MissingParameterException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex) throws IOException
      Throws:
      IOException
    • handleInvalidPasswordException

      @ExceptionHandler(WrongCurrentPasswordException.class) protected void handleInvalidPasswordException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex) throws IOException
      Throws:
      IOException
    • handleInvalidCaptchaTokenRequestException

      @ExceptionHandler(org.dspace.eperson.InvalidReCaptchaException.class) protected void handleInvalidCaptchaTokenRequestException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex) throws IOException
      Throws:
      IOException
    • handleMissingServletRequestParameter

      protected org.springframework.http.ResponseEntity<Object> handleMissingServletRequestParameter(org.springframework.web.bind.MissingServletRequestParameterException ex, org.springframework.http.HttpHeaders headers, org.springframework.http.HttpStatus status, org.springframework.web.context.request.WebRequest request)
      Overrides:
      handleMissingServletRequestParameter in class org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler
    • handleTypeMismatch

      protected org.springframework.http.ResponseEntity<Object> handleTypeMismatch(org.springframework.beans.TypeMismatchException ex, org.springframework.http.HttpHeaders headers, org.springframework.http.HttpStatus status, org.springframework.web.context.request.WebRequest request)
      Overrides:
      handleTypeMismatch in class org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler
    • handleGenericException

      @ExceptionHandler(java.lang.Exception.class) protected void handleGenericException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception ex) throws IOException
      Throws:
      IOException