From f1328134ada77d1c21374f7cca953a376a9b27f9 Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Tue, 27 Jun 2017 15:49:21 -0700 Subject: Library upgrades and code tweaks to support Scala 2.12 --- src/main/scala/xyz/driver/core/app.scala | 4 ++-- .../scala/xyz/driver/core/database/PatchedHsqldbProfile.scala | 6 +++--- src/main/scala/xyz/driver/core/database/database.scala | 6 +++--- src/main/scala/xyz/driver/core/database/package.scala | 2 +- src/main/scala/xyz/driver/core/file/GcsStorage.scala | 2 +- src/main/scala/xyz/driver/core/file/S3Storage.scala | 2 +- src/main/scala/xyz/driver/core/rest.scala | 8 ++++---- src/main/scala/xyz/driver/core/swagger.scala | 10 +++++----- 8 files changed, 20 insertions(+), 20 deletions(-) (limited to 'src/main') diff --git a/src/main/scala/xyz/driver/core/app.scala b/src/main/scala/xyz/driver/core/app.scala index 363f1e8..a64093a 100644 --- a/src/main/scala/xyz/driver/core/app.scala +++ b/src/main/scala/xyz/driver/core/app.scala @@ -104,7 +104,7 @@ object app { lazy val names = methods map (_.name) mkString ", " options { ctx => - optionalHeaderValueByType[Origin]() { originHeader => + optionalHeaderValueByType[Origin](()) { originHeader => respondWithHeaders(List[HttpHeader]( Allow(methods), `Access-Control-Allow-Methods`(methods), @@ -130,7 +130,7 @@ object app { http.bindAndHandle( route2HandlerFlow(extractHost { origin => extractClientIP { ip => - optionalHeaderValueByType[Origin]() { originHeader => + optionalHeaderValueByType[Origin](()) { originHeader => { ctx => val trackingId = rest.extractTrackingId(ctx.request) MDC.put("trackingId", trackingId) diff --git a/src/main/scala/xyz/driver/core/database/PatchedHsqldbProfile.scala b/src/main/scala/xyz/driver/core/database/PatchedHsqldbProfile.scala index 1331efc..a3f57c1 100644 --- a/src/main/scala/xyz/driver/core/database/PatchedHsqldbProfile.scala +++ b/src/main/scala/xyz/driver/core/database/PatchedHsqldbProfile.scala @@ -1,11 +1,11 @@ package xyz.driver.core.database -import slick.driver.HsqldbDriver +import slick.jdbc.HsqldbProfile import slick.jdbc.JdbcType import slick.ast.FieldSymbol -import slick.profile.RelationalProfile +import slick.relational.RelationalProfile -trait PatchedHsqldbProfile extends HsqldbDriver { +trait PatchedHsqldbProfile extends HsqldbProfile { override def defaultSqlTypeName(tmd: JdbcType[_], sym: Option[FieldSymbol]): String = tmd.sqlType match { case java.sql.Types.VARCHAR => val size = sym.flatMap(_.findColumnOption[RelationalProfile.ColumnOption.Length]) diff --git a/src/main/scala/xyz/driver/core/database/database.scala b/src/main/scala/xyz/driver/core/database/database.scala index 8426309..7855a16 100644 --- a/src/main/scala/xyz/driver/core/database/database.scala +++ b/src/main/scala/xyz/driver/core/database/database.scala @@ -1,7 +1,7 @@ package xyz.driver.core -import slick.backend.DatabaseConfig -import slick.driver.JdbcProfile +import slick.basic.DatabaseConfig +import slick.jdbc.JdbcProfile import xyz.driver.core.date.Date import xyz.driver.core.time.Time @@ -21,7 +21,7 @@ package database { val dbConfig: DatabaseConfig[JdbcProfile] = DatabaseConfig.forConfig(databaseName, config) new Database { - val profile: JdbcProfile = dbConfig.driver + val profile: JdbcProfile = dbConfig.profile val database: JdbcProfile#Backend#Database = dbConfig.db } } diff --git a/src/main/scala/xyz/driver/core/database/package.scala b/src/main/scala/xyz/driver/core/database/package.scala index b39169d..9385c8f 100644 --- a/src/main/scala/xyz/driver/core/database/package.scala +++ b/src/main/scala/xyz/driver/core/database/package.scala @@ -5,7 +5,7 @@ import java.util.Calendar import date.{Date, Month} import slick.dbio._ -import slick.driver.JdbcProfile +import slick.jdbc.JdbcProfile package object database { diff --git a/src/main/scala/xyz/driver/core/file/GcsStorage.scala b/src/main/scala/xyz/driver/core/file/GcsStorage.scala index 65a5a50..76438cf 100644 --- a/src/main/scala/xyz/driver/core/file/GcsStorage.scala +++ b/src/main/scala/xyz/driver/core/file/GcsStorage.scala @@ -11,7 +11,7 @@ import java.nio.file.{Path, Paths} import java.util.concurrent.TimeUnit import com.google.cloud.storage.Storage.BlobListOption -import com.google.cloud.storage._ +import com.google.cloud.storage.{Option => _, _} import xyz.driver.core.time.Time import xyz.driver.core.{Name, Revision, generators} diff --git a/src/main/scala/xyz/driver/core/file/S3Storage.scala b/src/main/scala/xyz/driver/core/file/S3Storage.scala index 49bebc8..311aab3 100644 --- a/src/main/scala/xyz/driver/core/file/S3Storage.scala +++ b/src/main/scala/xyz/driver/core/file/S3Storage.scala @@ -43,7 +43,7 @@ class S3Storage(s3: AmazonS3, bucket: Name[Bucket], executionContext: ExecutionC override def stream(filePath: Path): OptionT[Future, Source[ByteString, NotUsed]] = OptionT.optionT(Future { Option(s3.getObject(new GetObjectRequest(bucket.value, filePath.toString))).map { elem => - StreamConverters.fromInputStream(elem.getObjectContent, chunkSize).mapMaterializedValue(_ => NotUsed) + StreamConverters.fromInputStream(() => elem.getObjectContent(), chunkSize).mapMaterializedValue(_ => NotUsed) } }) diff --git a/src/main/scala/xyz/driver/core/rest.scala b/src/main/scala/xyz/driver/core/rest.scala index 1088e40..2527b75 100644 --- a/src/main/scala/xyz/driver/core/rest.scala +++ b/src/main/scala/xyz/driver/core/rest.scala @@ -91,7 +91,7 @@ object `package` { case Seq(start, end) => builder += ' ' builder ++= byteString.slice(start, end) - case Seq(byteStringLength) => // Should not match; sliding on at least 2 elements + case Seq(_) => // Should not match; sliding on at least 2 elements assert(indices.nonEmpty, s"Indices should have been nonEmpty: $indices") } builder.result @@ -205,7 +205,7 @@ trait Authorization[U <: User] { implicit ctx: ServiceRequestContext): Future[AuthorizationResult] } -class AlwaysAllowAuthorization[U <: User](implicit execution: ExecutionContext) extends Authorization[U] { +class AlwaysAllowAuthorization[U <: User] extends Authorization[U] { override def userHasPermissions(user: U, permissions: Seq[Permission])( implicit ctx: ServiceRequestContext): Future[AuthorizationResult] = { val permissionsMap = permissions.map(_ -> true).toMap @@ -427,9 +427,9 @@ class HttpRestServiceTransport(applicationName: Name[App], val request = requestStub .withHeaders(context.contextHeaders.toSeq.map { - case (ContextHeaders.TrackingIdHeader, headerValue) => + case (ContextHeaders.TrackingIdHeader, _) => RawHeader(ContextHeaders.TrackingIdHeader, context.trackingId) - case (ContextHeaders.StacktraceHeader, headerValue) => + case (ContextHeaders.StacktraceHeader, _) => RawHeader(ContextHeaders.StacktraceHeader, Option(MDC.get("stack")) .orElse(context.contextHeaders.get(ContextHeaders.StacktraceHeader)) diff --git a/src/main/scala/xyz/driver/core/swagger.scala b/src/main/scala/xyz/driver/core/swagger.scala index 36c52e0..a97e0ac 100644 --- a/src/main/scala/xyz/driver/core/swagger.scala +++ b/src/main/scala/xyz/driver/core/swagger.scala @@ -85,7 +85,7 @@ object swagger { val javaType = Json.mapper().constructType(`type`) (getEnumerationInstance(javaType.getRawClass) match { - case Some(enumInstance) => Option.empty[Model] // ignore scala enums + case Some(_) => Option.empty[Model] // ignore scala enums case None => val customObjectModel = customObjects.get(javaType.getRawClass).map { objectExampleJson => val properties = objectExampleJson.asJsObject.fields.mapValues(parseJsonValueToSwaggerProperty).flatMap { @@ -125,10 +125,10 @@ object swagger { case (key, value) => value.map(v => key -> v) } Option(new ObjectProperty(subProperties.asJava)) - case JsBoolean(value) => Option(booleanProperty()) - case JsNumber(value) => Option(numericProperty(example = Option(value))) - case JsString(value) => Option(stringProperty(example = Option(value))) - case _ => Option.empty[Property] + case JsBoolean(_) => Option(booleanProperty()) + case JsNumber(value) => Option(numericProperty(example = Option(value))) + case JsString(value) => Option(stringProperty(example = Option(value))) + case _ => Option.empty[Property] } } -- cgit v1.2.3 From d0e5b33cffda34ca27c1ea0dd1e20770fc4e2a2a Mon Sep 17 00:00:00 2001 From: Zach Smith Date: Wed, 2 Aug 2017 17:56:51 -0700 Subject: Add subflatMap to OptionT (stolen from cats) --- src/main/scala/xyz/driver/core/core.scala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/main') diff --git a/src/main/scala/xyz/driver/core/core.scala b/src/main/scala/xyz/driver/core/core.scala index 1babd91..1d917d6 100644 --- a/src/main/scala/xyz/driver/core/core.scala +++ b/src/main/scala/xyz/driver/core/core.scala @@ -1,6 +1,6 @@ package xyz.driver -import scalaz.{Equal, Monad, OptionT} +import scalaz.{Equal, Functor, Monad, OptionT} package object core { @@ -32,6 +32,9 @@ package object core { def continueIgnoringNone: OptionT[H, Unit] = optionTValue.map(_ => ()).orElse(OptionT.some[H, Unit](())) + + def subflatMap[B](f: T => Option[B])(implicit F: Functor[H]): OptionT[H, B] = + OptionT.optionT[H](F.map(optionTValue.run)(_.flatMap(f))) } implicit class MonadicExtensions[H[_]: Monad, T](monadicValue: H[T]) { -- cgit v1.2.3 From c5620d091a06df039be92e8c3b6d95e226384292 Mon Sep 17 00:00:00 2001 From: Zach Smith Date: Thu, 3 Aug 2017 10:53:52 -0700 Subject: Use vlad's ugly implicitly version --- src/main/scala/xyz/driver/core/core.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/main') diff --git a/src/main/scala/xyz/driver/core/core.scala b/src/main/scala/xyz/driver/core/core.scala index 1d917d6..4747574 100644 --- a/src/main/scala/xyz/driver/core/core.scala +++ b/src/main/scala/xyz/driver/core/core.scala @@ -1,6 +1,6 @@ package xyz.driver -import scalaz.{Equal, Functor, Monad, OptionT} +import scalaz.{Equal, Monad, OptionT} package object core { @@ -33,8 +33,8 @@ package object core { def continueIgnoringNone: OptionT[H, Unit] = optionTValue.map(_ => ()).orElse(OptionT.some[H, Unit](())) - def subflatMap[B](f: T => Option[B])(implicit F: Functor[H]): OptionT[H, B] = - OptionT.optionT[H](F.map(optionTValue.run)(_.flatMap(f))) + def subflatMap[B](f: T => Option[B]): OptionT[H, B] = + OptionT.optionT[H](implicitly[Monad[H]].map(optionTValue.run)(_.flatMap(f))) } implicit class MonadicExtensions[H[_]: Monad, T](monadicValue: H[T]) { -- cgit v1.2.3