Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] Fwd: Round advice on constructor?


Hi,

I've successfully used round advice to intercept input parameter for a method.

However, it seems constructor does not work for me. Here're my test: (It's in scala, but should be easy to understand)


class MyObjectTest extends FlatSpecLike with Matchers {

  "MyObjectAspect" should "work" in {
    val t = new MyObject("leon")
    val result = t.talk()
    println(result)
    result should be("LEON")
  }
}

class MyObject(text: String) {

  def talk(): String = {
    println("MyObject " + text)
    text
  }
}


@Aspect
class MyObjectAspect {

  @Around(value = "execution (com.leon.aop.MyObject.new(..))")
  def constructCP(jp: ProceedingJoinPoint): Object = {

    try {
      println("Start...")
      val args = jp.getArgs
      args(0) = args(0).toString.toUpperCase
      jp.proceed(args)
    } finally {
      println("End...")
    }

  }

}


output:

Start...
End...
MyObject leon
leon

"[leon]" was not equal to "[LEON]"
org.scalatest.exceptions.TestFailedException: "[leon]" was not equal to "[LEON]"
at org.scalatest.MatchersHelper$.newTestFailedException(MatchersHelper.scala:160)
at org.scalatest.Matchers$ShouldMethodHelper$.shouldMatcher(Matchers.scala:6141)
at org.scalatest.Matchers$AnyShouldWrapper.should(Matchers.scala:6175)
at com.leon.aop.MyObjectTest$$anonfun$1.apply$mcV$sp(ConstructorTest.scala:18)



Anything wrong?



Thanks

Leon




Back to the top