[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[aspectj-users] Customized annotations @AspectJ vs AspectJ
|
Hi,
We want to use annotations for advices and methods defined in the aspect. We need to post process the compiled aspect. Therefore, we need that the compiler keeps user-defined annotations.
I tried to add annotations with standard AspectJ, and it seems that the compiler keeps them. At least, the bytecode shows 1 annotation for doiIt() and 2 annotations for ajc$before...(). I guess AspectJ already makes use of annotations for advices...(??)
import java.lang.annotation.*;
@Target(ElementType.METHOD)
public @interface Test_Target {
public String doTestTarget();
}
import java.lang.annotation.*;
aspect Foo {
@Test_Target(doTestTarget="a method")
public void doIt() {
System.out.print("do it");
}
@Test_Target(doTestTarget="an advice")
before() : call(* *.*(..)) && !within(Foo) {
System.out.println(thisJoinPoint);
doIt();
}
}
Then, I tried @AspectJ, and I think my annotations were removed by the compiler... The compiled bytecode of the aspect has exactly the same annotation entries (RuntimeVisibleAnnotation) with or without my annotations.
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.*;
@Aspect
public class Foo {
@Pointcut("call(* *.*(..)) && !within(Foo)")
void anyCall() {}
@Test_Target(doTestTarget="a method") // removed??
public void doIt() {
System.out.println("doIt");
}
@Test_Target(doTestTarget="an advice") // removed???
@Before("anyCall()")
public void beforeAnyCall(JoinPoint jp) {
System.out.println(jp);
doIt();
}
}
Is there a way to make ajc to keep user-redined annotations with @AspectJ ? Did I wrongly used my annotations? or should I keep using AspectJ, instead of @AspectJ ?
Many thanks,
Alex