diff options
Diffstat (limited to 'kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/status/JsonMarshalling.scala | 31 |
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 |