From 642b3aae2b2cb1bd6c9a86a69fd15fd06fab63ae Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Tue, 27 Dec 2011 16:36:30 +0100 Subject: [PATCH] Making sure it deserializes too --- .../akka/dispatch/AbstractDispatcher.scala | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/akka-actor/src/main/scala/akka/dispatch/AbstractDispatcher.scala b/akka-actor/src/main/scala/akka/dispatch/AbstractDispatcher.scala index d4f74ac14b..90c68a4996 100644 --- a/akka-actor/src/main/scala/akka/dispatch/AbstractDispatcher.scala +++ b/akka-actor/src/main/scala/akka/dispatch/AbstractDispatcher.scala @@ -16,10 +16,19 @@ import akka.util.ReflectiveAccess import akka.serialization.SerializationExtension final case class Envelope(val message: Any, val sender: ActorRef)(system: ActorSystem) { - if (message.isInstanceOf[AnyRef] && (message.asInstanceOf[AnyRef] eq null)) throw new InvalidMessageException("Message is null") - else if (system.settings.SerializeAllMessages) SerializationExtension(system).serialize(message.asInstanceOf[AnyRef]) match { - case Left(t) ⇒ throw t - case Right(_) ⇒ //Just verify that it works to serialize it + if (message.isInstanceOf[AnyRef]) { + val msg = message.asInstanceOf[AnyRef] + if (msg eq null) throw new InvalidMessageException("Message is null") + if (system.settings.SerializeAllMessages) { + val ser = SerializationExtension(system) + ser.serialize(msg) match { //Verify serializability + case Left(t) ⇒ throw t + case Right(bytes) ⇒ ser.deserialize(bytes, msg.getClass, None) match { //Verify deserializability + case Left(t) ⇒ throw t + case _ ⇒ //All good + } + } + } } }