From 61029e115272b9af3f4460b311d3a2e650c806e3 Mon Sep 17 00:00:00 2001 From: Diego Date: Tue, 15 Aug 2017 13:16:45 -0300 Subject: expose SpanCodec through Kamon::contextCodec --- kamon-core/src/main/scala/kamon/Kamon.scala | 7 ++++++- kamon-core/src/main/scala/kamon/context/Codec.scala | 16 +++++++++++++++- kamon-core/src/main/scala/kamon/context/Context.scala | 17 ++++++++++++++++- kamon-core/src/main/scala/kamon/trace/SpanCodec.scala | 2 +- 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/kamon-core/src/main/scala/kamon/Kamon.scala b/kamon-core/src/main/scala/kamon/Kamon.scala index 884f2d93..2c0561e2 100644 --- a/kamon-core/src/main/scala/kamon/Kamon.scala +++ b/kamon-core/src/main/scala/kamon/Kamon.scala @@ -24,7 +24,7 @@ import scala.concurrent.Future import java.time.Duration import java.util.concurrent.{Executors, ScheduledExecutorService, ScheduledThreadPoolExecutor} -import kamon.context.{Context, Storage} +import kamon.context.{Codec, Context, Storage} import org.slf4j.LoggerFactory import scala.util.Try @@ -42,6 +42,7 @@ object Kamon extends MetricLookup with ReporterRegistry with Tracer { private val _reporters = new ReporterRegistryImpl(_metrics, _config) private val _tracer = Tracer.Default(Kamon, _reporters, _config) private val _contextStorage = Storage.ThreadLocal() + private val _contextCodec = new Codec(_config) private var _onReconfigureHooks = Seq.empty[OnReconfigureHook] def environment: Environment = @@ -57,6 +58,7 @@ object Kamon extends MetricLookup with ReporterRegistry with Tracer { _metrics.reconfigure(config) _reporters.reconfigure(config) _tracer.reconfigure(config) + _contextCodec.reconfigure(config) _onReconfigureHooks.foreach(hook => { Try(hook.onReconfigure(config)).failed.foreach(error => @@ -98,6 +100,9 @@ object Kamon extends MetricLookup with ReporterRegistry with Tracer { override def identityProvider: IdentityProvider = _tracer.identityProvider + def contextCodec(): Codec = + _contextCodec + def currentContext(): Context = _contextStorage.current() diff --git a/kamon-core/src/main/scala/kamon/context/Codec.scala b/kamon-core/src/main/scala/kamon/context/Codec.scala index 10580c22..19ec2a20 100644 --- a/kamon-core/src/main/scala/kamon/context/Codec.scala +++ b/kamon-core/src/main/scala/kamon/context/Codec.scala @@ -1,8 +1,22 @@ +/* ========================================================================================= + * Copyright © 2013-2017 the kamon project + * + * 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 kamon package context import com.typesafe.config.Config -import kamon.trace.IdentityProvider import kamon.util.DynamicAccess import org.slf4j.LoggerFactory diff --git a/kamon-core/src/main/scala/kamon/context/Context.scala b/kamon-core/src/main/scala/kamon/context/Context.scala index f8a4662f..85c80d50 100644 --- a/kamon-core/src/main/scala/kamon/context/Context.scala +++ b/kamon-core/src/main/scala/kamon/context/Context.scala @@ -1,8 +1,23 @@ +/* ========================================================================================= + * Copyright © 2013-2017 the kamon project + * + * 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 kamon.context class Context private (private[context] val entries: Map[Key[_], Any]) { def get[T](key: Key[T]): T = - entries.get(key).getOrElse(key.emptyValue).asInstanceOf[T] + entries.getOrElse(key, key.emptyValue).asInstanceOf[T] def withKey[T](key: Key[T], value: T): Context = new Context(entries.updated(key, value)) diff --git a/kamon-core/src/main/scala/kamon/trace/SpanCodec.scala b/kamon-core/src/main/scala/kamon/trace/SpanCodec.scala index e04ceb03..96317696 100644 --- a/kamon-core/src/main/scala/kamon/trace/SpanCodec.scala +++ b/kamon-core/src/main/scala/kamon/trace/SpanCodec.scala @@ -32,7 +32,7 @@ object SpanCodec { val carrier = TextMap.Default() if(span.nonEmpty()) { - val spanContext = span.context + val spanContext = span.context() carrier.put(Headers.TraceIdentifier, urlEncode(spanContext.traceID.string)) carrier.put(Headers.SpanIdentifier, urlEncode(spanContext.spanID.string)) carrier.put(Headers.ParentSpanIdentifier, urlEncode(spanContext.parentID.string)) -- cgit v1.2.3