aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kamon-autoweave/src/main/scala/kamon/autoweave/Autoweave.scala12
-rw-r--r--kamon-autoweave/src/main/scala/kamon/autoweave/loader/AttachmentProviders.scala18
-rw-r--r--kamon-core/src/main/scala/kamon/Kamon.scala17
3 files changed, 22 insertions, 25 deletions
diff --git a/kamon-autoweave/src/main/scala/kamon/autoweave/Autoweave.scala b/kamon-autoweave/src/main/scala/kamon/autoweave/Autoweave.scala
index 58111b48..9c349c9e 100644
--- a/kamon-autoweave/src/main/scala/kamon/autoweave/Autoweave.scala
+++ b/kamon-autoweave/src/main/scala/kamon/autoweave/Autoweave.scala
@@ -1,5 +1,5 @@
/* =========================================================================================
- * Copyright © 2013-2015 the kamon project <http://kamon.io/>
+ * Copyright © 2013-2016 the kamon project <http://kamon.io/>
*
* 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
@@ -19,13 +19,15 @@ import kamon.Kamon
import kamon.autoweave.loader.AgentLoader
import org.aspectj.weaver.loadtime.Agent
-object Autoweave {
+class Autoweave {
val config = Kamon.config.getConfig("kamon.autowave.options")
val verbose = config.getBoolean("verbose")
val showWeaveInfo = config.getBoolean("showWeaveInfo")
- System.setProperty("aj.weaving.verbose", verbose.toString)
- System.setProperty("org.aspectj.weaver.showWeaveInfo", showWeaveInfo.toString)
+ def attach(): Unit = {
+ System.setProperty("aj.weaving.verbose", verbose.toString)
+ System.setProperty("org.aspectj.weaver.showWeaveInfo", showWeaveInfo.toString)
- AgentLoader.attachAgentToJVM(classOf[Agent])
+ AgentLoader.attachAgentToJVM(classOf[Agent])
+ }
}
diff --git a/kamon-autoweave/src/main/scala/kamon/autoweave/loader/AttachmentProviders.scala b/kamon-autoweave/src/main/scala/kamon/autoweave/loader/AttachmentProviders.scala
index 40f58502..ebb112e4 100644
--- a/kamon-autoweave/src/main/scala/kamon/autoweave/loader/AttachmentProviders.scala
+++ b/kamon-autoweave/src/main/scala/kamon/autoweave/loader/AttachmentProviders.scala
@@ -50,20 +50,6 @@ object AttachmentProviders extends {
override def run(): ClassLoader = new URLClassLoader(Array[URL](toolsJar.toURI.toURL), null)
}
- def resolve(): Option[Class[_]] = {
- import scala.util.control.Breaks._
-
- var vmClazz: Option[Class[_]] = None
-
- breakable {
- for (provider ← providers) {
- val vmClass = provider.resolve()
- if (vmClass.isDefined) {
- vmClazz = vmClass
- break
- }
- }
- }
- vmClazz
- }
+ def resolve(): Option[Class[_]] =
+ providers.iterator.map(_.resolve()).collectFirst { case Some(clazz) ⇒ clazz }
}
diff --git a/kamon-core/src/main/scala/kamon/Kamon.scala b/kamon-core/src/main/scala/kamon/Kamon.scala
index b5ea0c28..9f6e58ee 100644
--- a/kamon-core/src/main/scala/kamon/Kamon.scala
+++ b/kamon-core/src/main/scala/kamon/Kamon.scala
@@ -16,12 +16,14 @@ package kamon
import _root_.akka.actor
import _root_.akka.actor._
-import _root_.scala.util.{ Success, Failure, Try }
import com.typesafe.config.{ Config, ConfigFactory }
import kamon.metric._
import kamon.trace.TracerModuleImpl
import kamon.util.logger.LazyLogger
+import _root_.scala.util.control.NonFatal
+import _root_.scala.util.{ Failure, Success, Try }
+
object Kamon {
private val log = LazyLogger("Kamon")
@@ -61,13 +63,20 @@ object Kamon {
private def tryLoadAutoweaveModule(): Unit = {
val color = (msg: String) ⇒ s"""\u001B[32m${msg}\u001B[0m"""
- log.info("Trying to load kamon-autoweave...")
+ Try {
+
+ log.info("Trying to load kamon-autoweave...")
+
+ val autoweave = Class.forName("kamon.autoweave.Autoweave")
+ val instance = autoweave.newInstance()
+
+ autoweave.getDeclaredMethod("attach").invoke(instance)
- Try(Class.forName("kamon.autoweave.Autoweave$")) match {
+ } match {
case Success(_) ⇒
log.info(color("Kamon-autoweave has been successfully loaded."))
log.info(color("The AspectJ loadtime weaving agent is now attached to the JVM (you don't need to use -javaagent)."))
- case Failure(reason) ⇒ log.debug(s"Kamon-autoweave failed to load. Reason: we have not found the ${reason.getMessage} class in the classpath.")
+ case Failure(NonFatal(reason)) ⇒ log.debug(s"Kamon-autoweave failed to load. Reason: ${reason.getCause}.")
}
}