From d5eab6edef7f0ab5394c4463675bd68a796fc56c Mon Sep 17 00:00:00 2001 From: Wojciech Langiewicz Date: Mon, 7 Mar 2016 20:51:26 +0100 Subject: [PATCH] =act #19789 do not log serialization warnings for java.lang.* --- .../scala/akka/serialization/SerializeSpec.scala | 13 ++++++++++--- .../scala/akka/serialization/Serialization.scala | 10 +++++++--- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/akka-actor-tests/src/test/scala/akka/serialization/SerializeSpec.scala b/akka-actor-tests/src/test/scala/akka/serialization/SerializeSpec.scala index 84715f5e0e..c40caa5f5a 100644 --- a/akka-actor-tests/src/test/scala/akka/serialization/SerializeSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/serialization/SerializeSpec.scala @@ -420,12 +420,19 @@ class DefaultSerializationWarningSpec extends AkkaSpec( ConfigFactory.parseString("akka.actor.warn-about-java-serializer-usage = on")) { val ser = SerializationExtension(system) + val messagePrefix = "Using the default Java serializer for class.*" "Using the default Java serializer" must { - "log a warning" in { - EventFilter.warning(message = "Using the default Java serializer for class.*") intercept { - ser.serializerFor(classOf[java.lang.Integer]) + "log a warning when serializing classes outside of java.lang package" in { + EventFilter.warning(message = messagePrefix) intercept { + ser.serializerFor(classOf[java.math.BigDecimal]) + } + } + + "not log warning when serializing classes from java.lang package" in { + EventFilter.warning(message = messagePrefix, occurrences = 0) intercept { + ser.serializerFor(classOf[java.lang.String]) } } diff --git a/akka-actor/src/main/scala/akka/serialization/Serialization.scala b/akka-actor/src/main/scala/akka/serialization/Serialization.scala index c59492f196..b0f6f275de 100644 --- a/akka-actor/src/main/scala/akka/serialization/Serialization.scala +++ b/akka-actor/src/main/scala/akka/serialization/Serialization.scala @@ -246,10 +246,14 @@ class Serialization(val system: ExtendedActorSystem) extends Extension { val serializerByIdentity: Map[Int, Serializer] = Map(NullSerializer.identifier -> NullSerializer) ++ serializers map { case (_, v) ⇒ (v.identifier, v) } - private def shouldWarnAboutJavaSerializer(serializedClass: Class[_], serializer: Serializer) = - settings.config.getBoolean("akka.actor.warn-about-java-serializer-usage") && + private val isJavaSerializationWarningEnabled = settings.config.getBoolean("akka.actor.warn-about-java-serializer-usage") + + private def shouldWarnAboutJavaSerializer(serializedClass: Class[_], serializer: Serializer) = { + isJavaSerializationWarningEnabled && serializer.isInstanceOf[JavaSerializer] && - !serializedClass.getName.startsWith("akka.") + !serializedClass.getName.startsWith("akka.") && + !serializedClass.getName.startsWith("java.lang.") + } }