diff options
author | Ivan Topolnak <ivantopo@gmail.com> | 2013-05-30 13:04:41 -0300 |
---|---|---|
committer | Ivan Topolnak <ivantopo@gmail.com> | 2013-05-30 13:04:41 -0300 |
commit | 38316a2b0b3a58b81cf7458b0a719980136bbb97 (patch) | |
tree | 156ac7cde159d432d70f4f5b82aa1ed67e4aee28 /src/main/scala/kamon/instrumentation/PromiseInstrumentation.scala | |
parent | 577a03219827889e31fedbe915f677060503cc2c (diff) | |
download | Kamon-38316a2b0b3a58b81cf7458b0a719980136bbb97.tar.gz Kamon-38316a2b0b3a58b81cf7458b0a719980136bbb97.tar.bz2 Kamon-38316a2b0b3a58b81cf7458b0a719980136bbb97.zip |
Settled with a @Aspectj style for instrumentation on runnables
Diffstat (limited to 'src/main/scala/kamon/instrumentation/PromiseInstrumentation.scala')
-rw-r--r-- | src/main/scala/kamon/instrumentation/PromiseInstrumentation.scala | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/src/main/scala/kamon/instrumentation/PromiseInstrumentation.scala b/src/main/scala/kamon/instrumentation/PromiseInstrumentation.scala deleted file mode 100644 index a39bc4ad..00000000 --- a/src/main/scala/kamon/instrumentation/PromiseInstrumentation.scala +++ /dev/null @@ -1,47 +0,0 @@ -package kamon.instrumentation - -import org.aspectj.lang.annotation._ -import kamon.TraceContext -import scala.util.Try -import scala.concurrent.ExecutionContext -import org.aspectj.lang.ProceedingJoinPoint -import scala.Some - -@Aspect("perthis(promiseCreation())") -class PromiseInstrumentation { - - private var traceContext: Option[TraceContext] = None - - @Pointcut("execution(scala.concurrent.impl.Promise.DefaultPromise.new(..))") - def promiseCreation(): Unit = {} - - @Before("promiseCreation()") - def catchTheTraceContext = { - TraceContext.current match { - case Some(ctx) => traceContext = Some(ctx.fork) - case None => traceContext = None - } - } - - @Pointcut("execution(* scala.concurrent.Future.onComplete(..)) && args(func, executor)") - def registeringOnCompleteCallback(func: Try[Any] => Any, executor: ExecutionContext) = {} - - @Around("registeringOnCompleteCallback(func, executor)") - def around(pjp: ProceedingJoinPoint, func: Try[Any] => Any, executor: ExecutionContext) = { - import pjp._ - - val wrappedFunction = traceContext match { - case Some(ctx) => (tryResult: Try[Any]) => { - TraceContext.set(ctx) - val result = func(tryResult) - TraceContext.clear - - result - } - case None => func - } - - proceed(getArgs.updated(0, wrappedFunction)) - } - -} |