|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import org.aspectj.testing.Tester;
-
- public class Cricket {
- public static void main(String[] args) {
- Lib l = new Lib();
- Tester.event("call stringMethod");
- l.stringMethod(2);
- Tester.event("call voidMethod");
- l.voidMethod(2);
- Tester.checkEventsFromFile("Cricket.out");
- }
- }
-
-
- class Lib {
- public void voidMethod(int count) {
- if (count == 0) return;
- else voidMethod(count - 1);
- }
-
- public String stringMethod(int count) {
- if (count == 0) return "0";
- else return count + "-" + stringMethod(count-1);
- }
- }
-
-
- aspect Trace {
- pointcut entry(): target(Lib) && call(* *(..));
- pointcut topEntry(): entry() && !cflowbelow(entry());
-
- before(): topEntry() {
- Tester.event("->top entry: " + thisJoinPoint);
- }
-
- after(): entry() {
- Tester.event("->exit: " + thisJoinPoint);
- }
-
- after() returning (Object o): entry() {
- Tester.event("->exit: " + thisJoinPoint + " with " + o);
- }
- after(): topEntry() {
- Tester.event("->top exit: " + thisJoinPoint);
- }
-
- after() returning (Object o): topEntry() {
- Tester.event("->top exit: " + thisJoinPoint + " with " + o);
- }
- }
|