trait DefaultExceptionHandler extends ExceptionHandlerComponent { private val l = Logger(classOf[DefaultExceptionHandler]) override def exceptionHandler: ExceptionHandler = new ExceptionHandler { override def handle[B](e: ApiResponse[B]): Either[ErrorResponse, B] = e match { case Left(x: JsonError) => errorResponse("400", s"Error de-serialising JSON: ${x.getMessage}") case Left(x: NotFound) => errorResponse("404", x.message) case Left(x: BadRequest) => errorResponse("400", x.message) case Left(x: InternalServerError) => errorResponse("500", x.message) case Left(x) => errorResponse("500", x.getMessage) case Right(x) => Right(x) } } }