Removed Serializable.Protobuf since it did not work, use direct Protobuf messages for remote messages instead

This commit is contained in:
Jonas Bonér 2010-05-05 12:45:11 +02:00
parent b0dd4b5d62
commit c1d81d3953
3 changed files with 2 additions and 31 deletions

View file

@ -37,10 +37,6 @@ object RemoteProtocolBuilder {
val manifest = SERIALIZER_JAVA.in(request.getMessageManifest.toByteArray, None).asInstanceOf[String]
SERIALIZER_JAVA_JSON.in(request.getMessage.toByteArray, Some(Class.forName(manifest)))
case SerializationProtocol.PROTOBUF =>
val messageClass = SERIALIZER_JAVA.in(request.getMessageManifest.toByteArray, None).asInstanceOf[Class[_]]
val protobufMessage = messageClass.newInstance.asInstanceOf[Serializable.Protobuf[_]]
protobufMessage.fromBytes(request.getMessage.toByteArray)
case SerializationProtocol.PROTOBUF_RAW =>
val messageClass = SERIALIZER_JAVA.in(request.getMessageManifest.toByteArray, None).asInstanceOf[Class[_]]
SERIALIZER_PROTOBUF.in(request.getMessage.toByteArray, Some(messageClass))
}
@ -60,10 +56,6 @@ object RemoteProtocolBuilder {
val manifest = SERIALIZER_JAVA.in(reply.getMessageManifest.toByteArray, None).asInstanceOf[String]
SERIALIZER_JAVA_JSON.in(reply.getMessage.toByteArray, Some(Class.forName(manifest)))
case SerializationProtocol.PROTOBUF =>
val messageClass = SERIALIZER_JAVA.in(reply.getMessageManifest.toByteArray, None).asInstanceOf[Class[_]]
val protobufMessage = messageClass.newInstance.asInstanceOf[Serializable.Protobuf[_]]
protobufMessage.fromBytes(reply.getMessage.toByteArray)
case SerializationProtocol.PROTOBUF_RAW =>
val messageClass = SERIALIZER_JAVA.in(reply.getMessageManifest.toByteArray, None).asInstanceOf[Class[_]]
SERIALIZER_PROTOBUF.in(reply.getMessage.toByteArray, Some(messageClass))
}
@ -75,14 +67,9 @@ object RemoteProtocolBuilder {
builder.setProtocol(SerializationProtocol.SBINARY)
builder.setMessage(ByteString.copyFrom(serializable.toBytes))
builder.setMessageManifest(ByteString.copyFrom(serializable.getClass.getName.getBytes))
} else if (message.isInstanceOf[Serializable.Protobuf[_]]) {
val serializable = message.asInstanceOf[Serializable.Protobuf[_]]
builder.setProtocol(SerializationProtocol.PROTOBUF)
builder.setMessage(ByteString.copyFrom(serializable.getMessage.toByteArray))
builder.setMessageManifest(ByteString.copyFrom(SERIALIZER_JAVA.out(serializable.getClass)))
} else if (message.isInstanceOf[Message]) {
val serializable = message.asInstanceOf[Message]
builder.setProtocol(SerializationProtocol.PROTOBUF_RAW)
builder.setProtocol(SerializationProtocol.PROTOBUF)
builder.setMessage(ByteString.copyFrom(serializable.toByteArray))
builder.setMessageManifest(ByteString.copyFrom(SERIALIZER_JAVA.out(serializable.getClass)))
} else if (message.isInstanceOf[Serializable.ScalaJSON]) {
@ -108,14 +95,9 @@ object RemoteProtocolBuilder {
builder.setProtocol(SerializationProtocol.SBINARY)
builder.setMessage(ByteString.copyFrom(serializable.toBytes))
builder.setMessageManifest(ByteString.copyFrom(serializable.getClass.getName.getBytes))
} else if (message.isInstanceOf[Serializable.Protobuf[_]]) {
val serializable = message.asInstanceOf[Serializable.Protobuf[_]]
builder.setProtocol(SerializationProtocol.PROTOBUF)
builder.setMessage(ByteString.copyFrom(serializable.getMessage.toByteArray))
builder.setMessageManifest(ByteString.copyFrom(SERIALIZER_JAVA.out(serializable.getClass)))
} else if (message.isInstanceOf[Message]) {
val serializable = message.asInstanceOf[Message]
builder.setProtocol(SerializationProtocol.PROTOBUF_RAW)
builder.setProtocol(SerializationProtocol.PROTOBUF)
builder.setMessage(ByteString.copyFrom(serializable.toByteArray))
builder.setMessageManifest(ByteString.copyFrom(SERIALIZER_JAVA.out(serializable.getClass)))
} else if (message.isInstanceOf[Serializable.ScalaJSON]) {

View file

@ -21,7 +21,6 @@ object SerializationProtocol {
val SCALA_JSON = 2
val JAVA_JSON = 3
val PROTOBUF = 4
val PROTOBUF_RAW = 5
}
/**
@ -106,13 +105,4 @@ object Serializable {
def toJSON: String = new String(toBytes, "UTF-8")
def toBytes: Array[Byte] = SJSONSerializer.SJSON.out(this)
}
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
trait Protobuf[T] extends Serializable {
def fromBytes(bytes: Array[Byte]): T = getMessage.toBuilder.mergeFrom(bytes).asInstanceOf[T]
def toBytes: Array[Byte] = getMessage.toByteArray
def getMessage: Message
}
}

View file

@ -6,7 +6,6 @@ import org.junit.{Test, Before, After}
import se.scalablesolutions.akka.remote.{RemoteServer, RemoteClient}
import se.scalablesolutions.akka.dispatch.Dispatchers
import se.scalablesolutions.akka.serialization.Serializable.Protobuf
import ProtobufProtocol.ProtobufPOJO