From 310f4cdd8287546ba1339ce90d9de2658ac33a55 Mon Sep 17 00:00:00 2001 From: Matthias Kurz Date: Mon, 27 Jan 2025 10:55:40 +0100 Subject: [PATCH 1/6] Use Play milestone that switches to jakarta.inject --- project/Dependencies.scala | 2 +- samples/compile-timeDI/project/plugins.sbt | 2 +- samples/runtimeDI/project/plugins.sbt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 8b1674a..b333351 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -6,5 +6,5 @@ object Dependencies { val Scala3 = "3.3.4" val ScalaVersions = Seq(Scala213, Scala3) - val PlayVersion = sys.props.getOrElse("play.version", sys.env.getOrElse("PLAY_VERSION", "3.0.6")) + val PlayVersion = sys.props.getOrElse("play.version", sys.env.getOrElse("PLAY_VERSION", "3.1.0-M1")) } diff --git a/samples/compile-timeDI/project/plugins.sbt b/samples/compile-timeDI/project/plugins.sbt index 27f4744..91668a3 100644 --- a/samples/compile-timeDI/project/plugins.sbt +++ b/samples/compile-timeDI/project/plugins.sbt @@ -1,2 +1,2 @@ -addSbtPlugin("org.playframework" % "sbt-plugin" % sys.env.getOrElse("PLAY_VERSION", "3.0.6")) +addSbtPlugin("org.playframework" % "sbt-plugin" % sys.env.getOrElse("PLAY_VERSION", "3.1.0-M1")) addSbtPlugin("com.github.sbt" % "sbt-dynver" % "5.1.0") diff --git a/samples/runtimeDI/project/plugins.sbt b/samples/runtimeDI/project/plugins.sbt index 27f4744..91668a3 100644 --- a/samples/runtimeDI/project/plugins.sbt +++ b/samples/runtimeDI/project/plugins.sbt @@ -1,2 +1,2 @@ -addSbtPlugin("org.playframework" % "sbt-plugin" % sys.env.getOrElse("PLAY_VERSION", "3.0.6")) +addSbtPlugin("org.playframework" % "sbt-plugin" % sys.env.getOrElse("PLAY_VERSION", "3.1.0-M1")) addSbtPlugin("com.github.sbt" % "sbt-dynver" % "5.1.0") From 65a713ee92ae9417d0a518d4315eb54e6c64b48d Mon Sep 17 00:00:00 2001 From: Matthias Kurz Date: Mon, 27 Jan 2025 10:56:11 +0100 Subject: [PATCH 2/6] Imports javax.inject -> jakarta.inject --- README.md | 4 ++-- .../src/main/scala/play/api/libs/mailer/MockMailer.scala | 2 +- .../play/api/libs/mailer/SMTPConfigurationProvider.scala | 2 +- .../main/scala/play/api/libs/mailer/SMTPDynamicMailer.scala | 2 +- .../src/main/scala/play/api/libs/mailer/SMTPMailer.scala | 2 +- samples/runtimeDI/app/controllers/ApplicationJava.java | 2 +- samples/runtimeDI/app/controllers/ApplicationScala.scala | 2 +- .../app/controllers/CustomSMTPConfigurationProvider.scala | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index ea029b7..8b70e33 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ Use the `@Inject` annotation on the constructor, service of your component or co import play.api.libs.mailer._ import java.io.File import org.apache.commons.mail2.jakarta.EmailAttachment -import javax.inject.Inject +import jakarta.inject.Inject class MailerService @Inject() (mailerClient: MailerClient) { @@ -209,7 +209,7 @@ For Java you can just create a simple MailerService and Inject the MailerClient ```java import play.libs.mailer.Email; import play.libs.mailer.MailerClient; -import javax.inject.Inject; +import jakarta.inject.Inject; import java.io.File; import org.apache.commons.mail.EmailAttachment; diff --git a/play-mailer/src/main/scala/play/api/libs/mailer/MockMailer.scala b/play-mailer/src/main/scala/play/api/libs/mailer/MockMailer.scala index c4b9072..82a001f 100644 --- a/play-mailer/src/main/scala/play/api/libs/mailer/MockMailer.scala +++ b/play-mailer/src/main/scala/play/api/libs/mailer/MockMailer.scala @@ -1,6 +1,6 @@ package play.api.libs.mailer -import javax.inject.Inject +import jakarta.inject.Inject import org.slf4j.LoggerFactory diff --git a/play-mailer/src/main/scala/play/api/libs/mailer/SMTPConfigurationProvider.scala b/play-mailer/src/main/scala/play/api/libs/mailer/SMTPConfigurationProvider.scala index 2f2b5a6..e6ac918 100644 --- a/play-mailer/src/main/scala/play/api/libs/mailer/SMTPConfigurationProvider.scala +++ b/play-mailer/src/main/scala/play/api/libs/mailer/SMTPConfigurationProvider.scala @@ -1,6 +1,6 @@ package play.api.libs.mailer -import javax.inject.{ Inject, Provider } +import jakarta.inject.{ Inject, Provider } import com.typesafe.config.Config diff --git a/play-mailer/src/main/scala/play/api/libs/mailer/SMTPDynamicMailer.scala b/play-mailer/src/main/scala/play/api/libs/mailer/SMTPDynamicMailer.scala index d507e13..6f42a98 100644 --- a/play-mailer/src/main/scala/play/api/libs/mailer/SMTPDynamicMailer.scala +++ b/play-mailer/src/main/scala/play/api/libs/mailer/SMTPDynamicMailer.scala @@ -1,6 +1,6 @@ package play.api.libs.mailer -import javax.inject.{ Inject, Provider } +import jakarta.inject.{ Inject, Provider } class SMTPDynamicMailer @Inject() (smtpConfigurationProvider: Provider[SMTPConfiguration]) extends MailerClient { diff --git a/play-mailer/src/main/scala/play/api/libs/mailer/SMTPMailer.scala b/play-mailer/src/main/scala/play/api/libs/mailer/SMTPMailer.scala index 212431c..59d24e4 100644 --- a/play-mailer/src/main/scala/play/api/libs/mailer/SMTPMailer.scala +++ b/play-mailer/src/main/scala/play/api/libs/mailer/SMTPMailer.scala @@ -2,7 +2,7 @@ package play.api.libs.mailer import org.apache.commons.mail2.jakarta.{ HtmlEmail, MultiPartEmail } -import javax.inject.Inject +import jakarta.inject.Inject class SMTPMailer @Inject() (smtpConfiguration: SMTPConfiguration) extends MailerClient { diff --git a/samples/runtimeDI/app/controllers/ApplicationJava.java b/samples/runtimeDI/app/controllers/ApplicationJava.java index 09387f6..3d621fc 100644 --- a/samples/runtimeDI/app/controllers/ApplicationJava.java +++ b/samples/runtimeDI/app/controllers/ApplicationJava.java @@ -7,7 +7,7 @@ import play.mvc.Result; import play.Environment; -import javax.inject.Inject; +import jakarta.inject.Inject; import java.io.File; public class ApplicationJava extends Controller { diff --git a/samples/runtimeDI/app/controllers/ApplicationScala.scala b/samples/runtimeDI/app/controllers/ApplicationScala.scala index c761791..dd6211b 100644 --- a/samples/runtimeDI/app/controllers/ApplicationScala.scala +++ b/samples/runtimeDI/app/controllers/ApplicationScala.scala @@ -1,7 +1,7 @@ package controllers import java.io.File -import javax.inject.Inject +import jakarta.inject.Inject import org.apache.commons.mail2.jakarta.EmailAttachment import play.api.Environment diff --git a/samples/runtimeDI/app/controllers/CustomSMTPConfigurationProvider.scala b/samples/runtimeDI/app/controllers/CustomSMTPConfigurationProvider.scala index efc4879..2cd8726 100644 --- a/samples/runtimeDI/app/controllers/CustomSMTPConfigurationProvider.scala +++ b/samples/runtimeDI/app/controllers/CustomSMTPConfigurationProvider.scala @@ -1,6 +1,6 @@ package controllers -import javax.inject.Provider +import jakarta.inject.Provider import play.api.libs.mailer.SMTPConfiguration import play.api.{Configuration, Environment} From e563ad397dc92509e55192abc16660a5d42418be Mon Sep 17 00:00:00 2001 From: Matthias Kurz Date: Mon, 27 Jan 2025 10:56:35 +0100 Subject: [PATCH 3/6] Need to depend on jakarta.inject-api now --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 61619b1..51b8390 100644 --- a/build.sbt +++ b/build.sbt @@ -42,7 +42,7 @@ lazy val `play-mailer` = (project in file("play-mailer")) .settings(commonSettings) .settings( libraryDependencies ++= Seq( - "javax.inject" % "javax.inject" % "1", + "jakarta.inject" % "jakarta.inject-api" % "2.0.1", "com.typesafe" % "config" % "1.4.3", "org.slf4j" % "slf4j-api" % "2.0.16", "org.apache.commons" % "commons-email2-jakarta" % "2.0.0-M1", From 0c804c511bf7a847fbe2810c46e99bfd9b6b010d Mon Sep 17 00:00:00 2001 From: Matthias Kurz Date: Mon, 27 Jan 2025 10:56:44 +0100 Subject: [PATCH 4/6] guice 7 --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 51b8390..7fc1594 100644 --- a/build.sbt +++ b/build.sbt @@ -58,7 +58,7 @@ lazy val `play-mailer-guice` = (project in file("play-mailer-guice")) .dependsOn(`play-mailer`) .settings( libraryDependencies ++= Seq( - "com.google.inject" % "guice" % "6.0.0", + "com.google.inject" % "guice" % "7.0.0", "org.playframework" %% "play" % Dependencies.PlayVersion % Test, "org.playframework" %% "play-specs2" % Dependencies.PlayVersion % Test ), From e3a57d5e60f369de02dae74afa51da466ab517e7 Mon Sep 17 00:00:00 2001 From: Matthias Kurz Date: Mon, 27 Jan 2025 10:56:55 +0100 Subject: [PATCH 5/6] scalatestplus-play 8.0.0-M1 (supports jakarta.inject) --- samples/compile-timeDI/build.sbt | 2 +- samples/runtimeDI/build.sbt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/compile-timeDI/build.sbt b/samples/compile-timeDI/build.sbt index c608bd2..1be0ea6 100644 --- a/samples/compile-timeDI/build.sbt +++ b/samples/compile-timeDI/build.sbt @@ -13,7 +13,7 @@ crossScalaVersions := Seq("2.13.16", "3.3.4") libraryDependencies ++= Seq( "org.playframework" %% "play-mailer" % version.value, - "org.scalatestplus.play" %% "scalatestplus-play" % "7.0.1" % Test + "org.scalatestplus.play" %% "scalatestplus-play" % "8.0.0-M1" % Test ) lazy val root = (project in file(".")).enablePlugins(PlayScala) diff --git a/samples/runtimeDI/build.sbt b/samples/runtimeDI/build.sbt index 823daa8..1da2067 100644 --- a/samples/runtimeDI/build.sbt +++ b/samples/runtimeDI/build.sbt @@ -13,7 +13,7 @@ crossScalaVersions := Seq("2.13.16", "3.3.4") libraryDependencies ++= Seq( "org.playframework" %% "play-mailer-guice" % version.value, - "org.scalatestplus.play" %% "scalatestplus-play" % "7.0.1" % Test + "org.scalatestplus.play" %% "scalatestplus-play" % "8.0.0-M1" % Test ) lazy val root = (project in file(".")).enablePlugins(PlayJava) From d098896cd1380d172df757d1d9f38d6d29d53e12 Mon Sep 17 00:00:00 2001 From: Matthias Kurz Date: Mon, 27 Jan 2025 11:30:10 +0100 Subject: [PATCH 6/6] MiMa filters --- build.sbt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/build.sbt b/build.sbt index 7fc1594..df9b1ae 100644 --- a/build.sbt +++ b/build.sbt @@ -1,4 +1,7 @@ import com.typesafe.sbt.SbtScalariform._ +import com.typesafe.tools.mima.core.IncompatibleMethTypeProblem +import com.typesafe.tools.mima.core.MissingTypesProblem +import com.typesafe.tools.mima.core.ProblemFilters import scalariform.formatter.preferences._ ThisBuild / dynverVTagPrefix := false @@ -33,6 +36,11 @@ lazy val commonSettings = Seq( "-Xlint:unchecked", "-Xlint:deprecation" ), + + mimaBinaryIssueFilters ++= Seq( + ProblemFilters.exclude[IncompatibleMethTypeProblem]("play.api.libs.mailer.SMTPDynamicMailer.this"), + ProblemFilters.exclude[MissingTypesProblem]("play.api.libs.mailer.SMTPConfigurationProvider"), + ), ) val previousVersion: Option[String] = Some("11.0.0-M1")