aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/instrumentation/AspectJPimps.scala
blob: 84c20c52e2ea0d49644fc69d650983ffeac0a2de (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package kamon.instrumentation

import org.aspectj.lang.ProceedingJoinPoint

trait ProceedingJoinPointPimp {
  import language.implicitConversions

  implicit def pimpProceedingJointPoint(pjp: ProceedingJoinPoint) = RichProceedingJointPoint(pjp)
}

object ProceedingJoinPointPimp extends ProceedingJoinPointPimp

case class RichProceedingJointPoint(pjp: ProceedingJoinPoint) {
  def proceedWith(newUniqueArg: AnyRef) = {
    val args = pjp.getArgs
    args.update(0, newUniqueArg)
    pjp.proceed(args)
  }

  def proceedWithTarget(args: AnyRef*) = {
    pjp.proceed(args.toArray)
  }
}