aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--project/AspectJ.scala15
-rw-r--r--project/Build.scala2
-rw-r--r--project/build.properties1
-rw-r--r--src/main/aspectj/kamon/instrumentation/PromiseCompletingRunnableInstrumentation.aj29
-rw-r--r--src/main/resources/META-INF/aop.xml2
-rw-r--r--src/main/scala/kamon/instrumentation/PromiseCompletingRunnableInstrumentation.scala41
-rw-r--r--src/main/scala/spraytest/ClientTest.scala3
7 files changed, 41 insertions, 52 deletions
diff --git a/project/AspectJ.scala b/project/AspectJ.scala
index d708b0db..a711f2be 100644
--- a/project/AspectJ.scala
+++ b/project/AspectJ.scala
@@ -1,15 +1,16 @@
import sbt._
import sbt.Keys._
-import com.typesafe.sbt.SbtAspectj
-import com.typesafe.sbt.SbtAspectj.Aspectj
-import com.typesafe.sbt.SbtAspectj.AspectjKeys._
+import com.typesafe.sbt.SbtAspectj.{ Aspectj, aspectjSettings, compiledClasses }
+import com.typesafe.sbt.SbtAspectj.AspectjKeys.{ binaries, compileOnly, inputs, lintProperties, weaverOptions }
object AspectJ {
- lazy val aspectJSettings = SbtAspectj.aspectjSettings ++ Seq(
- showWeaveInfo := false,
- fork in Test := true,
- javaOptions in Test <++= weaverOptions in Aspectj
+ lazy val aspectJSettings = aspectjSettings ++ Seq(
+ compileOnly in Aspectj := true,
+ fork in Test := true,
+ javaOptions in Test <++= weaverOptions in Aspectj,
+ //lintProperties in Aspectj <++= "invalidAbsoluteTypeName = ignore",
+ products in Compile <<= products in Aspectj
)
} \ No newline at end of file
diff --git a/project/Build.scala b/project/Build.scala
index ce797851..3a16b589 100644
--- a/project/Build.scala
+++ b/project/Build.scala
@@ -8,7 +8,7 @@ object Build extends Build {
lazy val root = Project("kamon", file("."))
.settings(basicSettings: _*)
- .settings(revolverSettings: _*)
+ //.settings(revolverSettings: _*)
.settings(aspectJSettings: _*)
.settings(
libraryDependencies ++=
diff --git a/project/build.properties b/project/build.properties
new file mode 100644
index 00000000..db255c25
--- /dev/null
+++ b/project/build.properties
@@ -0,0 +1 @@
+sbt.version=0.12.3 \ No newline at end of file
diff --git a/src/main/aspectj/kamon/instrumentation/PromiseCompletingRunnableInstrumentation.aj b/src/main/aspectj/kamon/instrumentation/PromiseCompletingRunnableInstrumentation.aj
new file mode 100644
index 00000000..83e46be3
--- /dev/null
+++ b/src/main/aspectj/kamon/instrumentation/PromiseCompletingRunnableInstrumentation.aj
@@ -0,0 +1,29 @@
+package kamon.instrumentation;
+
+import kamon.TraceContext;
+import scala.concurrent.impl.Future;
+import scala.Option;
+
+public aspect PromiseCompletingRunnableInstrumentation {
+
+ public final Option<TraceContext> Future.PromiseCompletingRunnable.context = TraceContext.current();
+
+ pointcut run(Future.PromiseCompletingRunnable runnable)
+ : execution(* scala.concurrent.impl.Future.PromiseCompletingRunnable.run()) && this(runnable);
+
+ void around(Future.PromiseCompletingRunnable runnable)
+ : run(runnable) {
+
+ if(runnable.context.isDefined()) {
+
+ TraceContext.set((TraceContext) runnable.context.get());
+ proceed(runnable);
+ TraceContext.clear();
+
+ } else {
+ proceed(runnable);
+ }
+
+
+ }
+}
diff --git a/src/main/resources/META-INF/aop.xml b/src/main/resources/META-INF/aop.xml
index bd67064d..4aac3913 100644
--- a/src/main/resources/META-INF/aop.xml
+++ b/src/main/resources/META-INF/aop.xml
@@ -1,7 +1,9 @@
<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
+ <weaver options="-verbose -showWeaveInfo -nowarn"/>
<aspects>
+
<!--<aspect name="akka.ActorSystemAspect"/>
&lt;!&ndash;<aspect name="akka.MailboxAspect"/>&ndash;&gt;
<aspect name="akka.PoolMonitorAspect"/>-->
diff --git a/src/main/scala/kamon/instrumentation/PromiseCompletingRunnableInstrumentation.scala b/src/main/scala/kamon/instrumentation/PromiseCompletingRunnableInstrumentation.scala
deleted file mode 100644
index 323951f9..00000000
--- a/src/main/scala/kamon/instrumentation/PromiseCompletingRunnableInstrumentation.scala
+++ /dev/null
@@ -1,41 +0,0 @@
-package kamon.instrumentation
-
-import org.aspectj.lang.annotation.{Around, Before, Pointcut, Aspect}
-import kamon.TraceContext
-import org.aspectj.lang.ProceedingJoinPoint
-
-@Aspect("perthis(promiseCompletingRunnableCreation())")
-class PromiseCompletingRunnableInstrumentation {
-
- @volatile private var traceContext: Option[TraceContext] = None
-
- @Pointcut("execution(scala.concurrent.impl.Future.PromiseCompletingRunnable.new(..))")
- def promiseCompletingRunnableCreation(): Unit = {}
-
- @Before("promiseCompletingRunnableCreation()")
- def catchTheTraceContext = {
- TraceContext.current match {
- case Some(ctx) => traceContext = Some(ctx.fork)
- case None => traceContext = None
- }
- }
-
-
- @Pointcut("execution(* scala.concurrent.impl.Future.PromiseCompletingRunnable.run())")
- def runnableExecution() = {}
-
- @Around("runnableExecution()")
- def around(pjp: ProceedingJoinPoint) = {
- import pjp._
-
- traceContext match {
- case Some(ctx) => {
- TraceContext.set(ctx)
- proceed()
- TraceContext.clear
- }
- case None => proceed()
- }
- }
-
-}
diff --git a/src/main/scala/spraytest/ClientTest.scala b/src/main/scala/spraytest/ClientTest.scala
index c3a6ba39..7a95fc76 100644
--- a/src/main/scala/spraytest/ClientTest.scala
+++ b/src/main/scala/spraytest/ClientTest.scala
@@ -40,9 +40,6 @@ class ClientTest extends App {
val response = pipeline {
Get("http://geo.despegar.com/geo-services-web/service/Autocomplete/DESAR/1/0/0/10/0/0/Obelisco")
-
- Post("http://www.")
-
} onSuccess {
case a => {
println(a)