diff options
3 files changed, 29 insertions, 9 deletions
diff --git a/src/main/aspectj/kamon/instrumentation/PromiseCompletingRunnableInstrumentation.aj b/src/main/aspectj/kamon/instrumentation/PromiseCompletingRunnableInstrumentation.aj index 83e46be3..bd2a4d47 100644 --- a/src/main/aspectj/kamon/instrumentation/PromiseCompletingRunnableInstrumentation.aj +++ b/src/main/aspectj/kamon/instrumentation/PromiseCompletingRunnableInstrumentation.aj @@ -4,26 +4,26 @@ import kamon.TraceContext; import scala.concurrent.impl.Future; import scala.Option; -public aspect PromiseCompletingRunnableInstrumentation { +privileged public aspect PromiseCompletingRunnableInstrumentation { + + declare parents : Future.PromiseCompletingRunnable extends TraceContextHolder; - 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) + void around(TraceContextHolder runnable) : run(runnable) { - if(runnable.context.isDefined()) { - - TraceContext.set((TraceContext) runnable.context.get()); + if(runnable.getContext().isDefined()) { + System.out.println("########################################################3 There is some context"); + TraceContext.set(runnable.getContext().get()); proceed(runnable); TraceContext.clear(); } else { + System.out.println("########################################################3 There is NOOOOO context"); proceed(runnable); } - - } } diff --git a/src/main/resources/META-INF/aop.xml b/src/main/resources/META-INF/aop.xml index 4aac3913..cafba5ee 100644 --- a/src/main/resources/META-INF/aop.xml +++ b/src/main/resources/META-INF/aop.xml @@ -1,7 +1,10 @@ <!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd"> <aspectj> - <weaver options="-verbose -showWeaveInfo -nowarn"/> + <weaver options="-verbose -showWeaveInfo -nowarn"> + <dump within="*"/> + </weaver> + <aspects> <!--<aspect name="akka.ActorSystemAspect"/> diff --git a/src/main/scala/kamon/instrumentation/TraceContextHolder.java b/src/main/scala/kamon/instrumentation/TraceContextHolder.java new file mode 100644 index 00000000..529ce86a --- /dev/null +++ b/src/main/scala/kamon/instrumentation/TraceContextHolder.java @@ -0,0 +1,17 @@ +package kamon.instrumentation; +import scala.Option; +import kamon.TraceContext; + +abstract public class TraceContextHolder implements Runnable { + public final Option<TraceContext> context; + + public TraceContextHolder() { + context = TraceContext.current(); + } + + public Option<TraceContext> getContext() { + return context; + } + + +}
\ No newline at end of file |