aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jakob@driver.xyz>2018-09-12 15:56:41 -0700
committerJakob Odersky <jakob@odersky.com>2018-10-09 16:19:39 -0700
commit7a793ffa068fda8f2146f84fa785328d928dba03 (patch)
treed489b0b9ebf30ca61e2b6ef1c9906b704bc1fa1e
parent2cef01adfe3ebd3a0fa1e0bbbba7f6388198ba10 (diff)
downloaddriver-core-7a793ffa068fda8f2146f84fa785328d928dba03.tar.gz
driver-core-7a793ffa068fda8f2146f84fa785328d928dba03.tar.bz2
driver-core-7a793ffa068fda8f2146f84fa785328d928dba03.zip
Move core types into core-types project
Note that xyz.driver.core.FutureExtensions was moved to xyz.driver.core.rest as it (only) contained logic that dealt with service exceptions, something that belongs into core-rest and must not be depended upon by core-types. This is a breaking change.
-rw-r--r--build.sbt46
-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.scala12
-rw-r--r--src/test/scala/xyz/driver/core/rest/DriverRouteTest.scala1
13 files changed, 51 insertions, 18 deletions
diff --git a/build.sbt b/build.sbt
index 030b12f..576de7b 100644
--- a/build.sbt
+++ b/build.sbt
@@ -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._