enable misc serializers by default for Artery, #21339

* placed them in a new section additional-serialization-bindings,
  which is included by default when Artery is enabled
* can also be enabled with enable-additional-serialization-bindings
  flag to simplify usage with old remoting
* added a JavaSerializable marker trait that is bound to JavaSerializer
  in testkit, this can be used in tests so that we eventually can run
  tests without the java.io.Serializable binding
This commit is contained in:
Patrik Nordwall 2016-09-09 09:01:15 +02:00
parent 02de58392a
commit 97e0628173
12 changed files with 70 additions and 31 deletions

View file

@ -34,12 +34,20 @@ object Serialization {
private[akka] val currentTransportInformation = new DynamicVariable[Information](null)
class Settings(val config: Config) {
val Serializers: Map[String, String] = configToMap("akka.actor.serializers")
val SerializationBindings: Map[String, String] = configToMap("akka.actor.serialization-bindings")
val Serializers: Map[String, String] = configToMap(config.getConfig("akka.actor.serializers"))
val SerializationBindings: Map[String, String] = {
val defaultBindings = config.getConfig("akka.actor.serialization-bindings")
val bindings =
if (config.getBoolean("akka.actor.enable-additional-serialization-bindings") ||
config.getBoolean("akka.remote.artery.enabled"))
defaultBindings.withFallback(config.getConfig("akka.actor.additional-serialization-bindings"))
else defaultBindings
configToMap(bindings)
}
private final def configToMap(path: String): Map[String, String] = {
private final def configToMap(cfg: Config): Map[String, String] = {
import scala.collection.JavaConverters._
config.getConfig(path).root.unwrapped.asScala.toMap map { case (k, v) (k v.toString) }
cfg.root.unwrapped.asScala.toMap map { case (k, v) (k v.toString) }
}
}