/*
 * Copyright 2009-2010 LinkedIn, Inc
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.linkedin.norbert.network.netty

import com.google.protobuf.Message
import java.util.UUID

object Request {
  def apply(message: Message, responseCallback: (Either[Throwable, Message]) => Unit): Request = {
    Request(UUID.randomUUID, message, System.currentTimeMillis, responseCallback)
  }
}

case class Request(id: UUID, message: Message, timestamp: Long, responseCallback: (Either[Throwable, Message]) => Unit)

/*
 * Copyright 2009-2010 LinkedIn, Inc
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.linkedin.norbert.network.netty

import com.google.protobuf.Message
import java.util.UUID

case class Request(message: Message, responseCallback: (Either[Throwable, Message]) => Unit) {
  val id = UUID.randomUUID
  val timestamp = System.currentTimeMillis
}

--- 
+++ 
@@ -18,7 +18,10 @@
 import com.google.protobuf.Message
 import java.util.UUID
 
-case class Request(message: Message, responseCallback: (Either[Throwable, Message]) => Unit) {
-  val id = UUID.randomUUID
-  val timestamp = System.currentTimeMillis
+object Request {
+  def apply(message: Message, responseCallback: (Either[Throwable, Message]) => Unit): Request = {
+    Request(UUID.randomUUID, message, System.currentTimeMillis, responseCallback)
+  }
 }
+
+case class Request(id: UUID, message: Message, timestamp: Long, responseCallback: (Either[Throwable, Message]) => Unit)
Refactor so toString is more informative
