59 lines
2.2 KiB
Kotlin
59 lines
2.2 KiB
Kotlin
package net.halfbinary.scavengerhuntapi.error
|
|
|
|
import net.halfbinary.scavengerhuntapi.error.exception.InvalidEmailException
|
|
import net.halfbinary.scavengerhuntapi.error.exception.LoginFailedException
|
|
import net.halfbinary.scavengerhuntapi.error.exception.NotFoundException
|
|
import net.halfbinary.scavengerhuntapi.error.exception.PreexistingAccountException
|
|
import org.springframework.http.HttpStatus
|
|
import org.springframework.http.converter.HttpMessageNotReadableException
|
|
import org.springframework.validation.FieldError
|
|
import org.springframework.web.bind.MethodArgumentNotValidException
|
|
import org.springframework.web.bind.annotation.ExceptionHandler
|
|
import org.springframework.web.bind.annotation.ResponseStatus
|
|
import org.springframework.web.bind.annotation.RestControllerAdvice
|
|
|
|
|
|
@RestControllerAdvice
|
|
class ExceptionHandler {
|
|
|
|
@ExceptionHandler(PreexistingAccountException::class)
|
|
@ResponseStatus(HttpStatus.CONFLICT)
|
|
fun preexistingAccountException(e: PreexistingAccountException): String? {
|
|
return e.message
|
|
}
|
|
|
|
@ExceptionHandler(LoginFailedException::class)
|
|
@ResponseStatus(HttpStatus.UNAUTHORIZED)
|
|
fun loginFailedException(e: LoginFailedException): String? {
|
|
return e.message
|
|
}
|
|
|
|
@ExceptionHandler(InvalidEmailException::class)
|
|
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
|
fun invalidEmailException(e: InvalidEmailException): String? {
|
|
return e.message
|
|
}
|
|
|
|
@ExceptionHandler(NotFoundException::class)
|
|
@ResponseStatus(HttpStatus.NOT_FOUND)
|
|
fun notFoundException(e: NotFoundException): String? {
|
|
return e.message
|
|
}
|
|
|
|
@ExceptionHandler(HttpMessageNotReadableException::class)
|
|
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
|
fun httpMessageNotReadableException(e: HttpMessageNotReadableException): String? {
|
|
return e.message
|
|
}
|
|
|
|
@ExceptionHandler(MethodArgumentNotValidException::class)
|
|
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
|
fun handleValidationExceptions(e: MethodArgumentNotValidException): Map<String, String?> {
|
|
return e.bindingResult.allErrors.associate { error ->
|
|
Pair(
|
|
(error as FieldError).field,
|
|
error.defaultMessage
|
|
)
|
|
}
|
|
}
|
|
} |