From e5911d0f0fa382f37a22978a5bae1d6c4b47963f Mon Sep 17 00:00:00 2001 From: Zach Smith Date: Tue, 17 Oct 2017 14:57:31 -0700 Subject: Rename APIError -> ServiceException and subclasses --- .../scala/xyz/driver/core/rest/DriverRoute.scala | 6 ++-- .../xyz/driver/core/rest/errors/APIError.scala | 40 --------------------- .../driver/core/rest/errors/serviceException.scala | 41 ++++++++++++++++++++++ 3 files changed, 44 insertions(+), 43 deletions(-) delete mode 100644 src/main/scala/xyz/driver/core/rest/errors/APIError.scala create mode 100644 src/main/scala/xyz/driver/core/rest/errors/serviceException.scala (limited to 'src') diff --git a/src/main/scala/xyz/driver/core/rest/DriverRoute.scala b/src/main/scala/xyz/driver/core/rest/DriverRoute.scala index 20cc556..f3260d0 100644 --- a/src/main/scala/xyz/driver/core/rest/DriverRoute.scala +++ b/src/main/scala/xyz/driver/core/rest/DriverRoute.scala @@ -10,7 +10,7 @@ import akka.http.scaladsl.server.{ExceptionHandler, RequestContext, Route} import com.typesafe.scalalogging.Logger import org.slf4j.MDC import xyz.driver.core.rest -import xyz.driver.core.rest.errors.APIError +import xyz.driver.core.rest.errors.ServiceException import scala.compat.Platform.ConcurrentModificationException @@ -29,12 +29,12 @@ trait DriverRoute { * @return Exception handling route for exception type */ protected def exceptionHandler: PartialFunction[Throwable, Route] = { - case api: APIError if api.isPatientSensitive => + case api: ServiceException if api.isPatientSensitive => ctx => log.info("PHI Sensitive error") errorResponse(ctx, InternalServerError, "Server error", api)(ctx) - case api: APIError => + case api: ServiceException => ctx => log.info("API Error") errorResponse(ctx, api.statusCode, api.message, api)(ctx) diff --git a/src/main/scala/xyz/driver/core/rest/errors/APIError.scala b/src/main/scala/xyz/driver/core/rest/errors/APIError.scala deleted file mode 100644 index e0400fb..0000000 --- a/src/main/scala/xyz/driver/core/rest/errors/APIError.scala +++ /dev/null @@ -1,40 +0,0 @@ -package xyz.driver.core.rest.errors - -import akka.http.scaladsl.model.{StatusCode, StatusCodes} - -abstract class APIError extends Throwable { - def isPatientSensitive: Boolean = false - - def statusCode: StatusCode - def message: String -} - -final case class InvalidInputError(override val message: String = "Invalid input", - override val isPatientSensitive: Boolean = false) - extends APIError { - override def statusCode: StatusCode = StatusCodes.BadRequest -} - -final case class InvalidActionError(override val message: String = "This action is not allowed", - override val isPatientSensitive: Boolean = false) - extends APIError { - override def statusCode: StatusCode = StatusCodes.Forbidden -} - -final case class ResourceNotFoundError(override val message: String = "Resource not found", - override val isPatientSensitive: Boolean = false) - extends APIError { - override def statusCode: StatusCode = StatusCodes.NotFound -} - -final case class ExternalServiceTimeoutError(override val message: String = "Another service took too long to respond", - override val isPatientSensitive: Boolean = false) - extends APIError { - override def statusCode: StatusCode = StatusCodes.GatewayTimeout -} - -final case class DatabaseError(override val message: String = "Database access error", - override val isPatientSensitive: Boolean = false) - extends APIError { - override def statusCode: StatusCode = StatusCodes.InternalServerError -} diff --git a/src/main/scala/xyz/driver/core/rest/errors/serviceException.scala b/src/main/scala/xyz/driver/core/rest/errors/serviceException.scala new file mode 100644 index 0000000..94f9734 --- /dev/null +++ b/src/main/scala/xyz/driver/core/rest/errors/serviceException.scala @@ -0,0 +1,41 @@ +package xyz.driver.core.rest.errors + +import akka.http.scaladsl.model.{StatusCode, StatusCodes} + +abstract class ServiceException extends Exception { + def isPatientSensitive: Boolean = false + + def statusCode: StatusCode + def message: String +} + +final case class InvalidInputException(override val message: String = "Invalid input", + override val isPatientSensitive: Boolean = false) + extends ServiceException { + override def statusCode: StatusCode = StatusCodes.BadRequest +} + +final case class InvalidActionException(override val message: String = "This action is not allowed", + override val isPatientSensitive: Boolean = false) + extends ServiceException { + override def statusCode: StatusCode = StatusCodes.Forbidden +} + +final case class ResourceNotFoundException(override val message: String = "Resource not found", + override val isPatientSensitive: Boolean = false) + extends ServiceException { + override def statusCode: StatusCode = StatusCodes.NotFound +} + +final case class ExternalServiceTimeoutException(override val message: String = + "Another service took too long to respond", + override val isPatientSensitive: Boolean = false) + extends ServiceException { + override def statusCode: StatusCode = StatusCodes.GatewayTimeout +} + +final case class DatabaseException(override val message: String = "Database access error", + override val isPatientSensitive: Boolean = false) + extends ServiceException { + override def statusCode: StatusCode = StatusCodes.InternalServerError +} -- cgit v1.2.3