aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/google/api.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/google/api.scala')
-rw-r--r--src/main/scala/google/api.scala15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/main/scala/google/api.scala b/src/main/scala/google/api.scala
index 122b695..de4c82b 100644
--- a/src/main/scala/google/api.scala
+++ b/src/main/scala/google/api.scala
@@ -2,7 +2,7 @@ package xyz.driver.tracing
package google
import spray.json._
-import spray.json.DefaultJsonProtocol._
+import spray.json.DefaultJsonProtocol.{LongJsonFormat => _, _}
import java.util.UUID
import java.nio.ByteBuffer
import java.time._
@@ -47,7 +47,7 @@ object TraceSpan {
implicit val instantFormat = new JsonFormat[Instant] {
val formatter = DateTimeFormatter
- .ofPattern("yyyy-MM-dd'T'HH:mm:ssXXXZ")
+ .ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX")
.withZone(ZoneId.of("UTC"))
override def write(x: Instant): JsValue = JsString(formatter.format(x))
override def read(x: JsValue): Instant = x match {
@@ -57,6 +57,17 @@ object TraceSpan {
}
}
+ implicit val longFormat: JsonFormat[Long] = new JsonFormat[Long] {
+ override def write(x: Long): JsValue = {
+ JsString(java.lang.Long.toUnsignedString(x))
+ }
+ override def read(x: JsValue): Long = x match {
+ case JsString(num) => num.toLong
+ case other =>
+ spray.json.deserializationError("expected long")
+ }
+ }
+
implicit val format: JsonFormat[TraceSpan] = jsonFormat7(TraceSpan.apply)
def fromSpan(span: Span) = TraceSpan(