From b2d939f2ddb60bbc320681d6c253b2e8cd13a313 Mon Sep 17 00:00:00 2001 From: momania Date: Thu, 12 Aug 2010 18:48:46 +0200 Subject: [PATCH] Use static 'parseFrom' to create protobuf objects instead of creating a defaultInstance all the time. --- akka-core/src/main/scala/serialization/Serializer.scala | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/akka-core/src/main/scala/serialization/Serializer.scala b/akka-core/src/main/scala/serialization/Serializer.scala index 79be0bec8b..1365a7d4c1 100644 --- a/akka-core/src/main/scala/serialization/Serializer.scala +++ b/akka-core/src/main/scala/serialization/Serializer.scala @@ -39,8 +39,7 @@ class SerializerFactory { * @author Jonas Bonér */ object Serializer { - val EMPTY_CLASS_ARRAY = Array[Class[_]]() - val EMPTY_ANY_REF_ARRAY = Array[AnyRef]() + val ARRAY_OF_BYTE_ARRAY = Array[Class[_]](classOf[Array[Byte]]) object NOOP extends NOOP class NOOP extends Serializer { @@ -85,10 +84,7 @@ object Serializer { def fromBinary(bytes: Array[Byte], clazz: Option[Class[_]]): AnyRef = { if (!clazz.isDefined) throw new IllegalArgumentException( "Need a protobuf message class to be able to serialize bytes using protobuf") - // TODO: should we cache this method lookup? - val message = clazz.get.getDeclaredMethod( - "getDefaultInstance", EMPTY_CLASS_ARRAY: _*).invoke(null, EMPTY_ANY_REF_ARRAY: _*).asInstanceOf[Message] - message.toBuilder().mergeFrom(bytes).build + clazz.get.getDeclaredMethod("parseFrom", ARRAY_OF_BYTE_ARRAY: _*).invoke(null, bytes).asInstanceOf[Message] } def fromBinary(bytes: Array[Byte], clazz: Class[_]): AnyRef = {