* This adds the ability to make Jackson serializers not output the class name in the manifest in cases where type information is stored in a more concise format in the JSON itself. * documentation about rolling updates * Ensure programatic bindings are search in Jackson serializer
This commit is contained in:
parent
89165badbb
commit
eb64d05b8c
5 changed files with 202 additions and 16 deletions
|
|
@ -478,6 +478,70 @@ class JacksonJsonSerializerSpec extends JacksonSerializerSpec("jackson-json") {
|
|||
JacksonSerializer.isGZipped(bytes) should ===(false)
|
||||
}
|
||||
}
|
||||
|
||||
"JacksonJsonSerializer without type in manifest" should {
|
||||
import ScalaTestMessages._
|
||||
|
||||
"deserialize messages using the serialization bindings" in withSystem(
|
||||
"""
|
||||
akka.actor {
|
||||
serializers.animal = "akka.serialization.jackson.JacksonJsonSerializer"
|
||||
serialization-identifiers.animal = 9091
|
||||
serialization-bindings {
|
||||
"akka.serialization.jackson.ScalaTestMessages$Animal" = animal
|
||||
}
|
||||
}
|
||||
akka.serialization.jackson.animal.type-in-manifest = off
|
||||
""") { sys =>
|
||||
val msg = Elephant("Dumbo", 1)
|
||||
val serializer = serializerFor(msg, sys)
|
||||
serializer.manifest(msg) should ===("")
|
||||
val bytes = serializer.toBinary(msg)
|
||||
val deserialized = serializer.fromBinary(bytes, "")
|
||||
deserialized should ===(msg)
|
||||
}
|
||||
|
||||
"deserialize messages using the configured deserialization type" in withSystem(
|
||||
"""
|
||||
akka.actor {
|
||||
serializers.animal = "akka.serialization.jackson.JacksonJsonSerializer"
|
||||
serialization-identifiers.animal = 9091
|
||||
serialization-bindings {
|
||||
"akka.serialization.jackson.ScalaTestMessages$Elephant" = animal
|
||||
"akka.serialization.jackson.ScalaTestMessages$Lion" = animal
|
||||
}
|
||||
}
|
||||
akka.serialization.jackson.animal {
|
||||
type-in-manifest = off
|
||||
deserialization-type = "akka.serialization.jackson.ScalaTestMessages$Animal"
|
||||
}
|
||||
""") { sys =>
|
||||
val msg = Elephant("Dumbo", 1)
|
||||
val serializer = serializerFor(msg, sys)
|
||||
serializer.manifest(msg) should ===("")
|
||||
val bytes = serializer.toBinary(msg)
|
||||
val deserialized = serializer.fromBinary(bytes, "")
|
||||
deserialized should ===(msg)
|
||||
}
|
||||
|
||||
"fail if multiple serialization bindings are declared with no deserialization type" in {
|
||||
an[IllegalArgumentException] should be thrownBy {
|
||||
withSystem("""
|
||||
akka.actor {
|
||||
serializers.animal = "akka.serialization.jackson.JacksonJsonSerializer"
|
||||
serialization-identifiers.animal = 9091
|
||||
serialization-bindings {
|
||||
"akka.serialization.jackson.ScalaTestMessages$Elephant" = animal
|
||||
"akka.serialization.jackson.ScalaTestMessages$Lion" = animal
|
||||
}
|
||||
}
|
||||
akka.serialization.jackson.animal {
|
||||
type-in-manifest = off
|
||||
}
|
||||
""")(sys => checkSerialization(Elephant("Dumbo", 1), sys))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
abstract class JacksonSerializerSpec(serializerName: String)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue