diff options
-rw-r--r-- | build.sbt | 46 | ||||
-rw-r--r-- | core-types/src/main/scala/xyz/driver/core/core.scala (renamed from src/main/scala/xyz/driver/core/core.scala) | 10 | ||||
-rw-r--r-- | core-types/src/main/scala/xyz/driver/core/date.scala (renamed from src/main/scala/xyz/driver/core/date.scala) | 0 | ||||
-rw-r--r-- | core-types/src/main/scala/xyz/driver/core/domain.scala (renamed from src/main/scala/xyz/driver/core/domain.scala) | 0 | ||||
-rw-r--r-- | core-types/src/main/scala/xyz/driver/core/tagging/tagging.scala (renamed from src/main/scala/xyz/driver/core/tagging/tagging.scala) | 0 | ||||
-rw-r--r-- | core-types/src/main/scala/xyz/driver/core/time.scala (renamed from src/main/scala/xyz/driver/core/time.scala) | 0 | ||||
-rw-r--r-- | core-types/src/test/scala/xyz/driver/core/CoreTest.scala (renamed from src/test/scala/xyz/driver/core/CoreTest.scala) | 0 | ||||
-rw-r--r-- | core-types/src/test/scala/xyz/driver/core/DateTest.scala (renamed from src/test/scala/xyz/driver/core/DateTest.scala) | 0 | ||||
-rw-r--r-- | core-types/src/test/scala/xyz/driver/core/PhoneNumberTest.scala (renamed from src/test/scala/xyz/driver/core/PhoneNumberTest.scala) | 0 | ||||
-rw-r--r-- | core-types/src/test/scala/xyz/driver/core/TimeTest.scala (renamed from src/test/scala/xyz/driver/core/TimeTest.scala) | 0 | ||||
-rw-r--r-- | core-types/src/test/scala/xyz/driver/core/tagging/TaggingTest.scala (renamed from src/test/scala/xyz/driver/core/tagging/TaggingTest.scala) | 0 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/rest/package.scala | 12 | ||||
-rw-r--r-- | src/test/scala/xyz/driver/core/rest/DriverRouteTest.scala | 1 |
13 files changed, 51 insertions, 18 deletions
@@ -1,8 +1,12 @@ import sbt._ import Keys._ -lazy val core = project - .in(file(".")) +val testdeps = libraryDependencies ++= Seq( + "org.mockito" % "mockito-core" % "1.9.5" % "test", + "org.scalacheck" %% "scalacheck" % "1.14.0" % "test", + "org.scalatest" %% "scalatest" % "3.0.5" % "test", +) +lazy val `core-util` = project .enablePlugins(LibraryPlugin) .settings( libraryDependencies ++= Seq( @@ -36,14 +40,42 @@ lazy val core = project "io.kamon" %% "kamon-statsd" % "1.0.0", "io.kamon" %% "kamon-system-metrics" % "1.0.0", "javax.xml.bind" % "jaxb-api" % "2.2.8", - "org.mockito" % "mockito-core" % "1.9.5" % "test", "org.scala-lang.modules" %% "scala-async" % "0.9.7", - "org.scalacheck" %% "scalacheck" % "1.14.0" % "test", - "org.scalatest" %% "scalatest" % "3.0.5" % "test", "org.scalaz" %% "scalaz-core" % "7.2.24", "xyz.driver" %% "spray-json-derivation" % "0.6.0", "xyz.driver" %% "tracing" % "0.1.2" - ), + ) + ) + +lazy val `core-types` = project + .enablePlugins(LibraryPlugin) + .dependsOn(`core-util`) + .settings(testdeps) + +lazy val `core-rest` = project + .enablePlugins(LibraryPlugin) + .dependsOn(`core-util`, `core-types`) + .settings(testdeps) + +lazy val `core-reporting` = project + .enablePlugins(LibraryPlugin) + .dependsOn(`core-util`) + .settings(testdeps) + +lazy val `core-cloud` = project + .enablePlugins(LibraryPlugin) + .dependsOn(`core-util`) + .settings(testdeps) + +lazy val `core-init` = project + .enablePlugins(LibraryPlugin) + .dependsOn(`core-util`) + .settings(testdeps) + +lazy val core = project + .in(file(".")) + .enablePlugins(LibraryPlugin) + .settings( scalacOptions in (Compile, doc) ++= Seq( "-groups", // group similar methods together based on the @group annotation. "-diagrams", // show classs hierarchy diagrams (requires 'dot' to be available on path) @@ -54,3 +86,5 @@ lazy val core = project s"https://github.com/drivergroup/driver-core/blob/master€{FILE_PATH}.scala" ) ) + .dependsOn(`core-types`, `core-rest`, `core-reporting`, `core-cloud`, `core-init`) + .settings(testdeps) diff --git a/src/main/scala/xyz/driver/core/core.scala b/core-types/src/main/scala/xyz/driver/core/core.scala index 2ab4e88..67ac5ee 100644 --- a/src/main/scala/xyz/driver/core/core.scala +++ b/core-types/src/main/scala/xyz/driver/core/core.scala @@ -3,11 +3,8 @@ package xyz.driver import eu.timepit.refined.api.{Refined, Validate} import eu.timepit.refined.collection.NonEmpty import scalaz.{Equal, Monad, OptionT} -import xyz.driver.core.rest.errors.ExternalServiceException import xyz.driver.core.tagging.Tagged -import scala.concurrent.{ExecutionContext, Future} - // TODO: this package seems too complex, look at all the features we need! import scala.language.{higherKinds, implicitConversions, reflectiveCalls} @@ -53,13 +50,6 @@ package object core { OptionT.optionT[H](monadT(monadicValue)(_ => Option(()))) } - implicit class FutureExtensions[T](future: Future[T]) { - def passThroughExternalServiceException(implicit executionContext: ExecutionContext): Future[T] = - future.transform(identity, { - case ExternalServiceException(_, _, Some(e)) => e - case t: Throwable => t - }) - } } package core { diff --git a/src/main/scala/xyz/driver/core/date.scala b/core-types/src/main/scala/xyz/driver/core/date.scala index 5454093..5454093 100644 --- a/src/main/scala/xyz/driver/core/date.scala +++ b/core-types/src/main/scala/xyz/driver/core/date.scala diff --git a/src/main/scala/xyz/driver/core/domain.scala b/core-types/src/main/scala/xyz/driver/core/domain.scala index f3b8337..f3b8337 100644 --- a/src/main/scala/xyz/driver/core/domain.scala +++ b/core-types/src/main/scala/xyz/driver/core/domain.scala diff --git a/src/main/scala/xyz/driver/core/tagging/tagging.scala b/core-types/src/main/scala/xyz/driver/core/tagging/tagging.scala index 5b6599e..5b6599e 100644 --- a/src/main/scala/xyz/driver/core/tagging/tagging.scala +++ b/core-types/src/main/scala/xyz/driver/core/tagging/tagging.scala diff --git a/src/main/scala/xyz/driver/core/time.scala b/core-types/src/main/scala/xyz/driver/core/time.scala index 1622068..1622068 100644 --- a/src/main/scala/xyz/driver/core/time.scala +++ b/core-types/src/main/scala/xyz/driver/core/time.scala diff --git a/src/test/scala/xyz/driver/core/CoreTest.scala b/core-types/src/test/scala/xyz/driver/core/CoreTest.scala index f448d24..f448d24 100644 --- a/src/test/scala/xyz/driver/core/CoreTest.scala +++ b/core-types/src/test/scala/xyz/driver/core/CoreTest.scala diff --git a/src/test/scala/xyz/driver/core/DateTest.scala b/core-types/src/test/scala/xyz/driver/core/DateTest.scala index 0432040..0432040 100644 --- a/src/test/scala/xyz/driver/core/DateTest.scala +++ b/core-types/src/test/scala/xyz/driver/core/DateTest.scala diff --git a/src/test/scala/xyz/driver/core/PhoneNumberTest.scala b/core-types/src/test/scala/xyz/driver/core/PhoneNumberTest.scala index 729302b..729302b 100644 --- a/src/test/scala/xyz/driver/core/PhoneNumberTest.scala +++ b/core-types/src/test/scala/xyz/driver/core/PhoneNumberTest.scala diff --git a/src/test/scala/xyz/driver/core/TimeTest.scala b/core-types/src/test/scala/xyz/driver/core/TimeTest.scala index 1019f60..1019f60 100644 --- a/src/test/scala/xyz/driver/core/TimeTest.scala +++ b/core-types/src/test/scala/xyz/driver/core/TimeTest.scala diff --git a/src/test/scala/xyz/driver/core/tagging/TaggingTest.scala b/core-types/src/test/scala/xyz/driver/core/tagging/TaggingTest.scala index 14dfaf9..14dfaf9 100644 --- a/src/test/scala/xyz/driver/core/tagging/TaggingTest.scala +++ b/core-types/src/test/scala/xyz/driver/core/tagging/TaggingTest.scala diff --git a/src/main/scala/xyz/driver/core/rest/package.scala b/src/main/scala/xyz/driver/core/rest/package.scala index 3be8f02..34a4a9d 100644 --- a/src/main/scala/xyz/driver/core/rest/package.scala +++ b/src/main/scala/xyz/driver/core/rest/package.scala @@ -15,10 +15,11 @@ import scalaz.Scalaz.{intInstance, stringInstance} import scalaz.syntax.equal._ import scalaz.{Functor, OptionT} import xyz.driver.core.rest.auth.AuthProvider +import xyz.driver.core.rest.errors.ExternalServiceException import xyz.driver.core.rest.headers.Traceparent import xyz.driver.tracing.TracingDirectives -import scala.concurrent.Future +import scala.concurrent.{ExecutionContext, Future} import scala.util.Try trait Service @@ -72,6 +73,15 @@ object ListResponse { } object `package` { + + implicit class FutureExtensions[T](future: Future[T]) { + def passThroughExternalServiceException(implicit executionContext: ExecutionContext): Future[T] = + future.transform(identity, { + case ExternalServiceException(_, _, Some(e)) => e + case t: Throwable => t + }) + } + implicit class OptionTRestAdditions[T](optionT: OptionT[Future, T]) { def responseOrNotFound(successCode: StatusCodes.Success = StatusCodes.OK)( implicit F: Functor[Future], diff --git a/src/test/scala/xyz/driver/core/rest/DriverRouteTest.scala b/src/test/scala/xyz/driver/core/rest/DriverRouteTest.scala index 86cf8b5..cc0019a 100644 --- a/src/test/scala/xyz/driver/core/rest/DriverRouteTest.scala +++ b/src/test/scala/xyz/driver/core/rest/DriverRouteTest.scala @@ -8,7 +8,6 @@ import akka.http.scaladsl.server.{Directives, RejectionHandler, Route} import akka.http.scaladsl.testkit.ScalatestRouteTest import com.typesafe.scalalogging.Logger import org.scalatest.{AsyncFlatSpec, Matchers} -import xyz.driver.core.FutureExtensions import xyz.driver.core.json.serviceExceptionFormat import xyz.driver.core.logging.NoLogger import xyz.driver.core.rest.errors._ |