From 2664b915a044f7bc5eda2722145ebe978d9adf1a Mon Sep 17 00:00:00 2001 From: Kseniya Tomskikh Date: Wed, 6 Dec 2017 11:13:52 +0700 Subject: PDSUI-2432 Fixed domain exception handler --- .../xyz/driver/pdsuicommon/http/Directives.scala | 33 +++++++++++++++++----- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala b/src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala index 93eb62f..4f53a9d 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala @@ -13,6 +13,7 @@ import xyz.driver.pdsuicommon.domain._ import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._ import xyz.driver.core.generators import xyz.driver.core.rest.ContextHeaders +import xyz.driver.core.rest.errors.{InvalidActionException, InvalidInputException, ResourceNotFoundException} import scala.util.control._ import scala.util._ @@ -69,14 +70,32 @@ trait Directives { } def domainExceptionHandler(req: String): ExceptionHandler = { - def errorResponse(ex: Throwable) = - ErrorsResponse(Seq(ResponseError(None, ex.getMessage, 1)), req) + def errorResponse(msg: String, code: Int) = + ErrorsResponse(Seq(ResponseError(None, msg, code)), req) ExceptionHandler { - case ex: AuthenticationException => complete(StatusCodes.Unauthorized -> errorResponse(ex)) - case ex: AuthorizationException => complete(StatusCodes.Forbidden -> errorResponse(ex)) - case ex: NotFoundException => complete(StatusCodes.NotFound -> errorResponse(ex)) - case ex: DomainException => complete(StatusCodes.BadRequest -> errorResponse(ex)) - case NonFatal(ex) => complete(StatusCodes.InternalServerError -> errorResponse(ex)) + case ex: AuthenticationException => + complete(StatusCodes.Unauthorized -> errorResponse(ex.getMessage, 401)) + + case ex: InvalidActionException => + complete(StatusCodes.Forbidden -> errorResponse(ex.message, 403)) + + case ex: AuthorizationException => + complete(StatusCodes.Forbidden -> errorResponse(ex.getMessage, 403)) + + case ex: ResourceNotFoundException => + complete(StatusCodes.NotFound -> errorResponse(ex.message, 404)) + + case ex: NotFoundException => + complete(StatusCodes.NotFound -> errorResponse(ex.getMessage, 404)) + + case ex: InvalidInputException => + complete(StatusCodes.BadRequest -> errorResponse(ex.message, 400)) + + case ex: DomainException => + complete(StatusCodes.BadRequest -> errorResponse(ex.getMessage, 400)) + + case NonFatal(ex) => + complete(StatusCodes.InternalServerError -> errorResponse(ex.getMessage, 500)) } } -- cgit v1.2.3