From 774864100676b7dbcf332f40c833cfa65dcd7b5a Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Sun, 1 Oct 2017 23:15:12 -0700 Subject: Fix google tracing long and date format --- src/main/scala/google/api.scala | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/main/scala/google/api.scala') 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( -- cgit v1.2.3