Skip to content

Commit

Permalink
Get backwards compatibility correct; bump version to 0.6.1
Browse files Browse the repository at this point in the history
  • Loading branch information
Joshua Hartman committed Mar 1, 2011
1 parent 0480249 commit b24dec5
Show file tree
Hide file tree
Showing 10 changed files with 22 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,14 @@ public Ping(long timestamp) {
}

class PingSerializer implements Serializer<Ping, Ping> {
public String nameOfRequestMessage() {
public String requestName() {
return "ping";
}

public String responseName() {
return "pong";
}

public byte[] requestToBytes(Ping message) {
return NorbertExampleProtos.Ping.newBuilder().setTimestamp(message.timestamp).build().toByteArray();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ import com.linkedin.norbert.protos.NorbertExampleProtos

object Ping {
implicit case object PingSerializer extends Serializer[Ping, Ping] {
def nameOfRequestMessage = "ping"
def requestName = "ping"
def responseName = "pong"

def requestToBytes(message: Ping) =
NorbertExampleProtos.Ping.newBuilder.setTimestamp(message.timestamp).build.toByteArray
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ object JavaSerializer {

class JavaSerializer[RequestMsg, ResponseMsg](requestClass: Class[RequestMsg], responseClass: Class[ResponseMsg])
extends Serializer[RequestMsg, ResponseMsg] {
def nameOfRequestMessage = requestClass.getName + " -> " + responseClass.getName
def requestName = requestClass.getName
def responseName = responseClass.getName

private def toBytes[T](message: T): Array[Byte] = {
val baos = new ByteArrayOutputStream
Expand Down Expand Up @@ -57,7 +58,9 @@ object ProtobufSerializer {
}

class ProtobufSerializer[RequestMsg <: Message, ResponseMsg <: Message](requestPrototype: RequestMsg, responsePrototype: ResponseMsg) extends Serializer[RequestMsg, ResponseMsg] {
def nameOfRequestMessage = requestPrototype.getDescriptorForType.getFullName
def requestName = requestPrototype.getDescriptorForType.getFullName

def responseName = responsePrototype.getDescriptorForType.getFullName

def requestToBytes(request: RequestMsg) = request.toByteArray

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ case class Request[RequestMsg, ResponseMsg](message: RequestMsg, node: Node,
val timestamp = System.currentTimeMillis

def name: String = {
inputSerializer.nameOfRequestMessage
inputSerializer.requestName
}

def requestBytes: Array[Byte] = outputSerializer.requestToBytes(message)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,15 @@ import java.io.{OutputStream, InputStream}
*/
trait Serializer[RequestMsg, ResponseMsg] extends InputSerializer[RequestMsg, ResponseMsg] with OutputSerializer[RequestMsg, ResponseMsg]


// Split up for correct variance
trait OutputSerializer[-RequestMsg, -ResponseMsg] {
def responseName: String
def requestToBytes(request: RequestMsg): Array[Byte]
def responseToBytes(response: ResponseMsg): Array[Byte]
}

trait InputSerializer[+RequestMsg, +ResponseMsg] {
def nameOfRequestMessage: String

def requestName: String
def requestFromBytes(bytes: Array[Byte]): RequestMsg
def responseFromBytes(bytes: Array[Byte]): ResponseMsg
}

// def writeSerializedRequestMessage(message: RequestMsg, output: OutputStream): Unit
// def readSerializedResponseMessage(input: InputStream): ResponseMsg
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ class ServerChannelHandler(serviceName: String, channelGroup: ChannelGroup, mess
case Left(ex) => ResponseHelper.errorResponse(context.requestId, ex)
case Right(responseMsg) =>
ResponseHelper.responseBuilder(context.requestId)
.setMessageName(is.nameOfRequestMessage)
.setMessageName(os.responseName)
.setMessage(ByteString.copyFrom(os.responseToBytes(responseMsg)))
.build
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class MessageHandlerRegistry {
(implicit is: InputSerializer[RequestMsg, ResponseMsg], os: OutputSerializer[RequestMsg, ResponseMsg]) {
if(handler == null) throw new NullPointerException

handlerMap += (is.nameOfRequestMessage -> MessageHandlerEntry(is, os, handler))
handlerMap += (is.requestName -> MessageHandlerEntry(is, os, handler))
}

@throws(classOf[InvalidMessageException])
Expand All @@ -52,7 +52,7 @@ class MessageHandlerRegistry {
@throws(classOf[InvalidMessageException])
def handlerFor[RequestMsg, ResponseMsg](request: RequestMsg)
(implicit is: InputSerializer[RequestMsg, ResponseMsg]): RequestMsg => ResponseMsg = {
handlerFor[RequestMsg, ResponseMsg](is.nameOfRequestMessage)
handlerFor[RequestMsg, ResponseMsg](is.requestName)
}

@throws(classOf[InvalidMessageException])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class MessageExecutorSpec extends Specification with Mockito with WaitFor with S

val unregisteredSerializer = {
val s = mock[Serializer[Ping, Ping]]
s.nameOfRequestMessage returns ("Foo")
s.requestName returns ("Foo")
s
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ class MessageHandlerRegistrySpec extends Specification with Mockito with SampleM
"return the handler for the specified request message" in {
messageHandlerRegistry.registerHandler(handler)

val h = messageHandlerRegistry.handlerFor[Ping, Ping](serializer.nameOfRequestMessage)
val h = messageHandlerRegistry.handlerFor[Ping, Ping](serializer.requestName)

h(request) must be_==(request)
handled must be_==(request)
}

"throw an InvalidMessageException if no handler is registered" in {
messageHandlerRegistry.handlerFor(serializer.nameOfRequestMessage) must throwA[InvalidMessageException]
messageHandlerRegistry.handlerFor(serializer.requestName) must throwA[InvalidMessageException]
}

"return true if the provided response is a valid response for the given request" in {
Expand Down
2 changes: 1 addition & 1 deletion project/build.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
project.organization=com.linkedin.norbert
project.name=norbert
sbt.version=0.7.4
project.version=0.6.0
project.version=0.6.1
build.scala.versions=2.8.0
project.initialize=false

0 comments on commit b24dec5

Please sign in to comment.