diff options
Diffstat (limited to 'kamon-core/src/main/scala/kamon/AkkaExtensionSwap.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/AkkaExtensionSwap.scala | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/kamon-core/src/main/scala/kamon/AkkaExtensionSwap.scala b/kamon-core/src/main/scala/kamon/AkkaExtensionSwap.scala new file mode 100644 index 00000000..3d503d54 --- /dev/null +++ b/kamon-core/src/main/scala/kamon/AkkaExtensionSwap.scala @@ -0,0 +1,14 @@ +package kamon + +import akka.actor.{ActorSystem, ExtensionId} +import java.util.concurrent.ConcurrentHashMap + +object AkkaExtensionSwap { + def swap(system: ActorSystem, key: ExtensionId[_], value: Kamon.Extension): Unit = { + val extensionsField = system.getClass.getDeclaredField("extensions") + extensionsField.setAccessible(true) + + val extensions = extensionsField.get(system).asInstanceOf[ConcurrentHashMap[ExtensionId[_], AnyRef]] + extensions.put(key, value) + } +} |