aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/ModuleLoader.scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2015-08-28 13:02:09 +0200
committerIvan Topolnjak <ivantopo@gmail.com>2015-08-28 13:02:09 +0200
commitec91eede73e20fef3b694fa45009ddd0ef0b345b (patch)
treeb3aa59dfaa1da122072864b1b343a1ea9835a57b /kamon-core/src/main/scala/kamon/ModuleLoader.scala
parentdf3711e177b58ce752592736f0a327c920adb3f0 (diff)
downloadKamon-ec91eede73e20fef3b694fa45009ddd0ef0b345b.tar.gz
Kamon-ec91eede73e20fef3b694fa45009ddd0ef0b345b.tar.bz2
Kamon-ec91eede73e20fef3b694fa45009ddd0ef0b345b.zip
wip, core/akka/spray are kind of migrated.
Diffstat (limited to 'kamon-core/src/main/scala/kamon/ModuleLoader.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/ModuleLoader.scala32
1 files changed, 18 insertions, 14 deletions
diff --git a/kamon-core/src/main/scala/kamon/ModuleLoader.scala b/kamon-core/src/main/scala/kamon/ModuleLoader.scala
index a26fd339..f240f6ce 100644
--- a/kamon-core/src/main/scala/kamon/ModuleLoader.scala
+++ b/kamon-core/src/main/scala/kamon/ModuleLoader.scala
@@ -21,6 +21,7 @@ import _root_.akka.actor._
import _root_.akka.event.Logging
import org.aspectj.lang.ProceedingJoinPoint
import org.aspectj.lang.annotation.{ Around, Pointcut, Aspect }
+import org.slf4j.LoggerFactory
private[kamon] object ModuleLoader extends ExtensionId[ModuleLoaderExtension] with ExtensionIdProvider {
def lookup(): ExtensionId[_ <: actor.Extension] = ModuleLoader
@@ -28,23 +29,22 @@ private[kamon] object ModuleLoader extends ExtensionId[ModuleLoaderExtension] wi
}
private[kamon] class ModuleLoaderExtension(system: ExtendedActorSystem) extends Kamon.Extension {
- val log = Logging(system, "ModuleLoader")
+ val log = LoggerFactory.getLogger(getClass)
val settings = ModuleLoaderSettings(system)
if (settings.modulesRequiringAspectJ.nonEmpty && !isAspectJPresent && settings.showAspectJMissingWarning)
logAspectJWeaverMissing(settings.modulesRequiringAspectJ)
// Force initialization of all modules marked with auto-start.
- settings.availableModules.filter(_.autoStart).foreach { module ⇒
- if (module.extensionClass == "none")
- log.debug("Ignoring auto start of the [{}] module with no extension class.", module.name)
- else
- system.dynamicAccess.getObjectFor[ExtensionId[Kamon.Extension]](module.extensionClass).map { moduleID ⇒
- log.debug("Auto starting the [{}] module.", module.name)
+ settings.availableModules.filter(_.startInfo.nonEmpty).foreach {
+ case AvailableModuleInfo(name, requiresAJ, Some(ModuleStartInfo(autoStart, extensionClass))) if autoStart ⇒
+
+ system.dynamicAccess.getObjectFor[ExtensionId[Kamon.Extension]](extensionClass).map { moduleID ⇒
+ log.debug(s"Auto starting the [$name] module.")
moduleID.get(system)
} recover {
- case th: Throwable ⇒ log.error(th, "Failed to auto start the [{}] module.", module.name)
+ case th: Throwable ⇒ log.error(s"Failed to auto start the [$name] module.", th)
}
}
@@ -82,7 +82,8 @@ private[kamon] class ModuleLoaderExtension(system: ExtendedActorSystem) extends
}
}
-private[kamon] case class AvailableModuleInfo(name: String, extensionClass: String, requiresAspectJ: Boolean, autoStart: Boolean)
+private[kamon] case class AvailableModuleInfo(name: String, requiresAspectJ: Boolean, startInfo: Option[ModuleStartInfo])
+private[kamon] case class ModuleStartInfo(autoStart: Boolean, extensionClass: String)
private[kamon] case class ModuleLoaderSettings(showAspectJMissingWarning: Boolean, availableModules: List[AvailableModuleInfo]) {
val modulesRequiringAspectJ = availableModules.filter(_.requiresAspectJ)
}
@@ -98,12 +99,15 @@ private[kamon] object ModuleLoaderSettings {
val modules = config.firstLevelKeys
val availableModules = modules.map { moduleName ⇒
val moduleConfig = config.getConfig(moduleName)
+ val requiresAspectJ = moduleConfig.getBoolean("requires-aspectj")
+
+ val startInfo =
+ if (moduleConfig.hasPath("auto-start") && moduleConfig.hasPath("extension-class"))
+ Some(ModuleStartInfo(moduleConfig.getBoolean("auto-start"), moduleConfig.getString("extension-class")))
+ else
+ None
- AvailableModuleInfo(
- moduleName,
- moduleConfig.getString("extension-id"),
- moduleConfig.getBoolean("requires-aspectj"),
- moduleConfig.getBoolean("auto-start"))
+ AvailableModuleInfo(moduleName, requiresAspectJ, startInfo)
} toList