aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala31
1 files changed, 31 insertions, 0 deletions
diff --git a/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala b/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala
index 5a3f22dc..370ab467 100644
--- a/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala
+++ b/kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala
@@ -6,6 +6,8 @@ import java.lang.{StringBuilder => JavaStringBuilder}
import com.typesafe.config.ConfigRenderOptions
import kamon.module.Module
+import scala.collection.JavaConverters.{iterableAsScalaIterableConverter, mapAsScalaMapConverter}
+
trait JsonMarshalling[T] {
@@ -96,4 +98,33 @@ object JsonMarshalling {
.done()
}
}
+
+ implicit object InstrumentationStatusJsonMarshalling extends JsonMarshalling[Status.Instrumentation] {
+ override def toJson(instance: Status.Instrumentation, builder: JavaStringBuilder): Unit = {
+ val instrumentationObject = JsonWriter.on(builder)
+ .`object`()
+ .value("isActive", instance.isIActive)
+ .`object`("modules")
+
+ instance.modules.asScala.foreach {
+ case (moduleName, moduleDescription) => instrumentationObject.value(moduleName, moduleDescription)
+ }
+
+ instrumentationObject
+ .end() // end modules
+ .`object`("errors")
+
+ instance.errors.asScala.foreach {
+ case (moduleName, errors) =>
+ instrumentationObject.array(moduleName)
+ errors.asScala.foreach(t => instrumentationObject.value(t.toString))
+ instrumentationObject.end()
+ }
+
+ instrumentationObject
+ .end() // errors
+ .end() // object
+ .done()
+ }
+ }
} \ No newline at end of file