Switching to immutable.Seq instead of Seq
This commit is contained in:
parent
2866ecfa85
commit
8f131c680f
65 changed files with 375 additions and 350 deletions
|
|
@ -4,14 +4,15 @@
|
|||
|
||||
package akka.serialization
|
||||
|
||||
import akka.AkkaException
|
||||
import com.typesafe.config.Config
|
||||
import akka.AkkaException
|
||||
import akka.actor.{ Extension, ExtendedActorSystem, Address, DynamicAccess }
|
||||
import akka.event.Logging
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import scala.collection.mutable.ArrayBuffer
|
||||
import java.io.NotSerializableException
|
||||
import util.{ Try, DynamicVariable }
|
||||
import scala.util.{ Try, DynamicVariable }
|
||||
import scala.collection.immutable
|
||||
|
||||
object Serialization {
|
||||
|
||||
|
|
@ -97,7 +98,7 @@ class Serialization(val system: ExtendedActorSystem) extends Extension {
|
|||
serializerMap.get(clazz) match {
|
||||
case null ⇒
|
||||
// bindings are ordered from most specific to least specific
|
||||
def unique(possibilities: Seq[(Class[_], Serializer)]): Boolean =
|
||||
def unique(possibilities: immutable.Seq[(Class[_], Serializer)]): Boolean =
|
||||
possibilities.size == 1 ||
|
||||
(possibilities forall (_._1 isAssignableFrom possibilities(0)._1)) ||
|
||||
(possibilities forall (_._2 == possibilities(0)._2))
|
||||
|
|
@ -122,8 +123,8 @@ class Serialization(val system: ExtendedActorSystem) extends Extension {
|
|||
* loading is performed by the system’s [[akka.actor.DynamicAccess]].
|
||||
*/
|
||||
def serializerOf(serializerFQN: String): Try[Serializer] =
|
||||
system.dynamicAccess.createInstanceFor[Serializer](serializerFQN, Seq(classOf[ExtendedActorSystem] -> system)) recoverWith {
|
||||
case _ ⇒ system.dynamicAccess.createInstanceFor[Serializer](serializerFQN, Seq())
|
||||
system.dynamicAccess.createInstanceFor[Serializer](serializerFQN, List(classOf[ExtendedActorSystem] -> system)) recoverWith {
|
||||
case _ ⇒ system.dynamicAccess.createInstanceFor[Serializer](serializerFQN, Nil)
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -137,21 +138,21 @@ class Serialization(val system: ExtendedActorSystem) extends Extension {
|
|||
* bindings is a Seq of tuple representing the mapping from Class to Serializer.
|
||||
* It is primarily ordered by the most specific classes first, and secondly in the configured order.
|
||||
*/
|
||||
private[akka] val bindings: Seq[ClassSerializer] =
|
||||
sort(for ((k: String, v: String) ← settings.SerializationBindings if v != "none") yield (system.dynamicAccess.getClassFor[Any](k).get, serializers(v)))
|
||||
private[akka] val bindings: immutable.Seq[ClassSerializer] =
|
||||
sort(for ((k: String, v: String) ← settings.SerializationBindings if v != "none") yield (system.dynamicAccess.getClassFor[Any](k).get, serializers(v))).to[immutable.Seq]
|
||||
|
||||
/**
|
||||
* Sort so that subtypes always precede their supertypes, but without
|
||||
* obeying any order between unrelated subtypes (insert sort).
|
||||
*/
|
||||
private def sort(in: Iterable[ClassSerializer]): Seq[ClassSerializer] =
|
||||
(new ArrayBuffer[ClassSerializer](in.size) /: in) { (buf, ca) ⇒
|
||||
private def sort(in: Iterable[ClassSerializer]): immutable.Seq[ClassSerializer] =
|
||||
((new ArrayBuffer[ClassSerializer](in.size) /: in) { (buf, ca) ⇒
|
||||
buf.indexWhere(_._1 isAssignableFrom ca._1) match {
|
||||
case -1 ⇒ buf append ca
|
||||
case x ⇒ buf insert (x, ca)
|
||||
}
|
||||
buf
|
||||
}
|
||||
}).to[immutable.Seq]
|
||||
|
||||
/**
|
||||
* serializerMap is a Map whose keys is the class that is serializable and values is the serializer
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue