01: package examples.proxy.tracing;
02:
03: import org.codehaus.aspectwerkz.proxy.Proxy;
04: import org.codehaus.aspectwerkz.intercept.Advisable;
05: import org.codehaus.aspectwerkz.intercept.AroundAdvice;
06: import org.codehaus.aspectwerkz.joinpoint.JoinPoint;
07:
08: public class TraceMe1 {
09:
10: public void step1() {
11: System.out.println(" - TraceMe1.step1");
12: step2();
13: }
14:
15: protected void step2() {
16: System.out.println(" - TraceMe1.step2");
17: step3();
18: }
19:
20: void step3() {
21: System.out.println(" - TraceMe1.step3");
22: }
23:
24: public static void main(String[] args) {
25:
26: // get a proxy instance of the TraceMe1 class
27: // this class will have been weaved with all AW aspects on the classpath
28: System.out
29: .println("\nINFO:: ------ get a weaved proxy to the TraceMe1 class -----");
30: TraceMe1 traceMe1 = (TraceMe1) Proxy.newInstance(
31: TraceMe1.class, false, true);
32:
33: // invoke the method - trigger deployed matched aspects (one around, one before and one after)
34: System.out
35: .println("\nINFO:: ------ run method chain with only regular AW aspects -----");
36: traceMe1.step1();
37:
38: // adding around interceptor using Advisble API
39: System.out
40: .println("\nINFO:: ------ adding an around per instance interceptor on the fly -----");
41: ((Advisable) traceMe1).aw_addAdvice("execution(* *.step3())",
42: new AroundAdvice() {
43: public Object invoke(JoinPoint jp) throws Throwable {
44: System.out
45: .println("Interceptor::ENTERING - step3()");
46: Object result = jp.proceed();
47: System.out
48: .println("Interceptor::EXITING - step3()");
49: return result;
50: }
51: });
52:
53: // invoking the method chain with the added around interceptor
54: System.out
55: .println("\nINFO:: ------ run method chain with the added per instance runtime added around interceptor -----");
56: traceMe1.step1();
57: }
58: }
|