From fc1a375f513163ca1903db6b217b8f0e500d3dee Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Tue, 20 Jul 2021 19:14:23 +0200 Subject: [PATCH] Compile akka-serialization-jackson with Scala 3 (#30408) Tests compile but one test fails - possibly because of the mixed Jackson versions. Took inspiration from #30361 Refs #30243 --- .travis.yml | 2 +- .../serialization/jackson/JacksonSerializer.scala | 2 +- .../jackson/JacksonSerializerSpec.scala | 4 ++-- .../serialization/jackson/CustomAdtSerializer.scala | 4 ++-- .../serialization/jackson/SerializationDocSpec.scala | 2 +- project/Dependencies.scala | 12 ++++++++++-- 6 files changed, 17 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2a6d038aa8..7f5bc05685 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,7 +38,7 @@ jobs: - stage: scala3 name: scala3 # separate job since only a few modules compile with Scala 3 yet - script: jabba install adopt@1.11-0 && jabba use adopt@1.11-0 && sbt -Dakka.build.scalaVersion=3.0 "akka-actor-tests/test:compile" akka-actor-testkit-typed/compile akka-actor-typed/compile akka-discovery/compile akka-pki/test:compile akka-protobuf/test:compile akka-protobuf-v3/test:compile akka-slf4j/test:compile akka-stream/compile akka-stream-tests-tck/test akka-coordination/test + script: jabba install adopt@1.11-0 && jabba use adopt@1.11-0 && sbt -Dakka.build.scalaVersion=3.0 "akka-actor-tests/test:compile" akka-actor-testkit-typed/compile akka-actor-typed/compile akka-discovery/compile akka-pki/test:compile akka-protobuf/test:compile akka-protobuf-v3/test:compile akka-slf4j/test:compile akka-stream/compile akka-stream-tests-tck/test akka-coordination/test akka-serialization-jackson/test:compile stages: - name: whitesource diff --git a/akka-serialization-jackson/src/main/scala/akka/serialization/jackson/JacksonSerializer.scala b/akka-serialization-jackson/src/main/scala/akka/serialization/jackson/JacksonSerializer.scala index 2596d45b2d..92282d3ee7 100644 --- a/akka-serialization-jackson/src/main/scala/akka/serialization/jackson/JacksonSerializer.scala +++ b/akka-serialization-jackson/src/main/scala/akka/serialization/jackson/JacksonSerializer.scala @@ -177,7 +177,7 @@ import akka.util.OptionVal // TODO issue #27107: it should be possible to implement ByteBufferSerializer as well, using Jackson's // ByteBufferBackedOutputStream/ByteBufferBackedInputStream - private val log = Logging.withMarker(system, getClass) + private val log = Logging.withMarker(system, classOf[JacksonSerializer]) private val conf = JacksonObjectMapperProvider.configForBinding(bindingName, system.settings.config) private val isDebugEnabled = conf.getBoolean("verbose-debug-logging") && log.isDebugEnabled private final val BufferSize = 1024 * 4 diff --git a/akka-serialization-jackson/src/test/scala/akka/serialization/jackson/JacksonSerializerSpec.scala b/akka-serialization-jackson/src/test/scala/akka/serialization/jackson/JacksonSerializerSpec.scala index 8f2c0409e0..674eb3edfb 100644 --- a/akka-serialization-jackson/src/test/scala/akka/serialization/jackson/JacksonSerializerSpec.scala +++ b/akka-serialization-jackson/src/test/scala/akka/serialization/jackson/JacksonSerializerSpec.scala @@ -151,8 +151,8 @@ object ScalaTestMessages { } final case class WithAkkaSerializer( - @JsonDeserialize(using = classOf[AkkaSerializationDeserializer]) - @JsonSerialize(using = classOf[AkkaSerializationSerializer]) + @JsonDeserialize(`using` = classOf[AkkaSerializationDeserializer]) + @JsonSerialize(`using` = classOf[AkkaSerializationSerializer]) akkaSerializer: HasAkkaSerializer) extends TestMessage } diff --git a/akka-serialization-jackson/src/test/scala/doc/akka/serialization/jackson/CustomAdtSerializer.scala b/akka-serialization-jackson/src/test/scala/doc/akka/serialization/jackson/CustomAdtSerializer.scala index 725f21b578..43c81d6137 100644 --- a/akka-serialization-jackson/src/test/scala/doc/akka/serialization/jackson/CustomAdtSerializer.scala +++ b/akka-serialization-jackson/src/test/scala/doc/akka/serialization/jackson/CustomAdtSerializer.scala @@ -16,8 +16,8 @@ object CustomAdtSerializer { import com.fasterxml.jackson.databind.deser.std.StdDeserializer import com.fasterxml.jackson.databind.ser.std.StdSerializer - @JsonSerialize(using = classOf[DirectionJsonSerializer]) - @JsonDeserialize(using = classOf[DirectionJsonDeserializer]) + @JsonSerialize(`using` = classOf[DirectionJsonSerializer]) + @JsonDeserialize(`using` = classOf[DirectionJsonDeserializer]) sealed trait Direction object Direction { diff --git a/akka-serialization-jackson/src/test/scala/doc/akka/serialization/jackson/SerializationDocSpec.scala b/akka-serialization-jackson/src/test/scala/doc/akka/serialization/jackson/SerializationDocSpec.scala index b8fe0346e8..f2719cd95b 100644 --- a/akka-serialization-jackson/src/test/scala/doc/akka/serialization/jackson/SerializationDocSpec.scala +++ b/akka-serialization-jackson/src/test/scala/doc/akka/serialization/jackson/SerializationDocSpec.scala @@ -163,7 +163,7 @@ object SerializationDocSpec { final case class Lion(name: String) extends Animal final case class Elephant(name: String, age: Int) extends Animal - @JsonDeserialize(using = classOf[UnicornDeserializer]) + @JsonDeserialize(`using` = classOf[UnicornDeserializer]) sealed trait Unicorn extends Animal @JsonTypeName("unicorn") case object Unicorn extends Unicorn diff --git a/project/Dependencies.scala b/project/Dependencies.scala index b6fd38d9cf..121e261a30 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -293,14 +293,22 @@ object Dependencies { jacksonCore, jacksonAnnotations, jacksonDatabind, - jacksonScala, jacksonJdk8, jacksonJsr310, jacksonParameterNames, jacksonCbor, lz4Java, Test.junit, - Test.scalatest) + Test.scalatest) ++ + (if (getScalaVersion() == scala3Version) + // jackson-module-scala is only available for Scala 3 from 2.13.0 onwards. + // since we don't depend on it ourselves, but provide it as a transitive + // dependency for convenience, we can leave it out for Scala 3 for now, + // and depend on 2.13.0-rc1 for our tests. Eventually we should consider + // whether to update all jackson artifacts for Scala 3. + Seq("com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.13.0-rc1" % "test") + else + Seq(jacksonScala)) val osgi = l ++= Seq( osgiCore,