diff --git a/build.sbt b/build.sbt index aa2bdcaff..336109d9d 100644 --- a/build.sbt +++ b/build.sbt @@ -447,8 +447,13 @@ def pekkoConnectorProject(projectId: String, name := s"pekko-connectors-$projectId", licenses := List(License.Apache2), AutomaticModuleName.settings(s"pekko.stream.connectors.$moduleName"), - mimaPreviousArtifacts := Set( - organization.value %% name.value % mimaCompareVersion), + mimaPreviousArtifacts := { + if (moduleName == "slick") { + Set.empty + } else { + Set(organization.value %% name.value % mimaCompareVersion) + } + }, mimaBinaryIssueFilters ++= Seq( ProblemFilters.exclude[Problem]("*.impl.*"), // generated code diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 050a36a35..a746b4ec3 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -403,13 +403,14 @@ object Dependencies { "org.springframework.boot" % "spring-boot-starter-web" % SpringBootVersion % Test)) } - val SlickVersion = "3.4.1" + val SlickVersion = "3.5.0" val Slick = Seq( - crossScalaVersions -= Scala3, libraryDependencies ++= Seq( "com.typesafe.slick" %% "slick" % SlickVersion, "com.typesafe.slick" %% "slick-hikaricp" % SlickVersion, + "ch.qos.logback" % "logback-classic" % LogbackForSlf4j2Version % Test, "com.h2database" % "h2" % "2.2.224" % Test)) + val Eventbridge = Seq( libraryDependencies ++= Seq( ("com.github.pjfanning" %% "aws-spi-pekko-http" % AwsSpiPekkoHttpVersion).excludeAll( diff --git a/slick/src/main/mima-filters/1.1.x.backwards.excludes/slick35.backwards.excludes b/slick/src/main/mima-filters/1.1.x.backwards.excludes/slick35.backwards.excludes new file mode 100644 index 000000000..0384c0826 --- /dev/null +++ b/slick/src/main/mima-filters/1.1.x.backwards.excludes/slick35.backwards.excludes @@ -0,0 +1,24 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# migrate to Slick 3.5 +ProblemFilters.exclude[IncompatibleResultTypeProblem]("org.apache.pekko.stream.connectors.slick.javadsl.SlickSession.db") +ProblemFilters.exclude[ReversedMissingMethodProblem]("org.apache.pekko.stream.connectors.slick.javadsl.SlickSession.db") +ProblemFilters.exclude[IncompatibleResultTypeProblem]("org.apache.pekko.stream.connectors.slick.javadsl.SlickSessionFactory#SlickSessionConfigBackedImpl.db") +ProblemFilters.exclude[IncompatibleResultTypeProblem]("org.apache.pekko.stream.connectors.slick.javadsl.SlickSessionFactory#SlickSessionDbAndProfileBackedImpl.db") +ProblemFilters.exclude[IncompatibleMethTypeProblem]("org.apache.pekko.stream.connectors.slick.javadsl.SlickSessionFactory#SlickSessionDbAndProfileBackedImpl.this") +ProblemFilters.exclude[IncompatibleMethTypeProblem]("org.apache.pekko.stream.connectors.slick.scaladsl.package#SlickSession.forDbAndProfile") diff --git a/slick/src/main/scala/org/apache/pekko/stream/connectors/slick/javadsl/Slick.scala b/slick/src/main/scala/org/apache/pekko/stream/connectors/slick/javadsl/Slick.scala index 662860e2d..5661566c3 100644 --- a/slick/src/main/scala/org/apache/pekko/stream/connectors/slick/javadsl/Slick.scala +++ b/slick/src/main/scala/org/apache/pekko/stream/connectors/slick/javadsl/Slick.scala @@ -28,10 +28,7 @@ import pekko.stream.javadsl._ import pekko.util.FunctionConverters._ import pekko.util.FutureConverters._ import slick.dbio.DBIO -import slick.jdbc.GetResult -import slick.jdbc.SQLActionBuilder -import slick.jdbc.SetParameter -import slick.jdbc.SimpleJdbcAction +import slick.jdbc.{ GetResult, SQLActionBuilder, SetParameter, SimpleJdbcAction } import scala.concurrent.ExecutionContext @@ -54,6 +51,7 @@ object Slick { session: SlickSession, query: String, mapper: JFunction[SlickRow, T]): Source[T, NotUsed] = { + val streamingAction = SQLActionBuilder(query, SetParameter.SetUnit).as[T](toSlick(mapper)) ScalaSlick diff --git a/slick/src/test/scala/docs/scaladsl/DocSnippets.scala b/slick/src/test/scala/docs/scaladsl/DocSnippets.scala index ca72c4432..1e4bc7924 100644 --- a/slick/src/test/scala/docs/scaladsl/DocSnippets.scala +++ b/slick/src/test/scala/docs/scaladsl/DocSnippets.scala @@ -32,7 +32,7 @@ object SlickSourceWithPlainSQLQueryExample extends App { implicit val ec: ExecutionContext = system.dispatcher // #source-example - implicit val session = SlickSession.forConfig("slick-h2") + implicit val session: SlickSession = SlickSession.forConfig("slick-h2") system.registerOnTermination(session.close()) // The example domain @@ -42,7 +42,7 @@ object SlickSourceWithPlainSQLQueryExample extends App { // into instances of the User class. // Please import slick.jdbc.GetResult // See also: "http://slick.lightbend.com/doc/3.2.1/sql.html#result-sets" - implicit val getUserResult = GetResult(r => User(r.nextInt(), r.nextString())) + implicit val getUserResult: GetResult[User] = GetResult(r => User(r.nextInt(), r.nextString())) // This import enables the use of the Slick sql"...", // sqlu"...", and sqlt"..." String interpolators. @@ -68,7 +68,7 @@ object SlickSourceWithTypedQueryExample extends App { implicit val ec: ExecutionContext = system.dispatcher // #source-with-typed-query - implicit val session = SlickSession.forConfig("slick-h2") + implicit val session: SlickSession = SlickSession.forConfig("slick-h2") system.registerOnTermination(session.close()) // This import brings everything you need into scope @@ -100,7 +100,7 @@ object SlickSinkExample extends App { implicit val ec: ExecutionContext = system.dispatcher // #sink-example - implicit val session = SlickSession.forConfig("slick-h2") + implicit val session: SlickSession = SlickSession.forConfig("slick-h2") system.registerOnTermination(session.close()) // The example domain @@ -132,7 +132,7 @@ object SlickFlowExample extends App { implicit val ec: ExecutionContext = system.dispatcher // #flow-example - implicit val session = SlickSession.forConfig("slick-h2") + implicit val session: SlickSession = SlickSession.forConfig("slick-h2") system.registerOnTermination(session.close()) // The example domain @@ -176,7 +176,7 @@ object SlickFlowWithPassThroughExample extends App { implicit val ec: ExecutionContext = system.dispatcher // #flowWithPassThrough-example - implicit val session = SlickSession.forConfig("slick-h2") + implicit val session: SlickSession = SlickSession.forConfig("slick-h2") system.registerOnTermination(session.close()) // The example domain diff --git a/slick/src/test/scala/docs/scaladsl/SlickSpec.scala b/slick/src/test/scala/docs/scaladsl/SlickSpec.scala index 9bb526540..e448d3a7f 100644 --- a/slick/src/test/scala/docs/scaladsl/SlickSpec.scala +++ b/slick/src/test/scala/docs/scaladsl/SlickSpec.scala @@ -164,7 +164,7 @@ class SlickSpec "insert 40 records into a table (no parallelism)" in { // #init-db-config-session val databaseConfig = DatabaseConfig.forConfig[JdbcProfile]("slick-h2") - implicit val session = SlickSession.forConfig(databaseConfig) + implicit val session: SlickSession = SlickSession.forConfig(databaseConfig) // #init-db-config-session val inserted = Source(users)