дзеркало
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-26 17:58:43 +02:00
36 рядки
826 B
Java
36 рядки
826 B
Java
import org.aspectj.testing.Tester;
|
|
|
|
public class CFlowObjects {
|
|
public static void main(String[] args){
|
|
new Test().go();
|
|
Tester.checkEqual(Test.cflowObjects, 1, "1st cflow");
|
|
Tester.checkEqual(Test.callsPerCFlow, 1, "1 call for each cflow");
|
|
|
|
new Test().go();
|
|
Tester.checkEqual(Test.cflowObjects, 2, "2nd cflow");
|
|
Tester.checkEqual(Test.callsPerCFlow, 1, "1 call for each cflow");
|
|
}
|
|
}
|
|
|
|
class Test {
|
|
static int cflowObjects = 0;
|
|
static int callsPerCFlow = 0;
|
|
|
|
void go(){
|
|
foo();
|
|
}
|
|
|
|
void foo(){}
|
|
}
|
|
|
|
aspect A percflow(target(Test) && call(void go())) {
|
|
|
|
{ Test.cflowObjects++; }
|
|
{ Test.callsPerCFlow = 0; }
|
|
|
|
//before(): instanceof(Test) && calls(void Object.*()){ Test.callsPerCFlow++; }
|
|
before(): within(Test) && call(void Object+.*(..)) {
|
|
Test.callsPerCFlow++;
|
|
}
|
|
}
|