KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > samples > event > Sample3


1 package samples.event;
2
3 import alt.jiapi.InstrumentationContext;
4 import alt.jiapi.InstrumentationDescriptor;
5 import alt.jiapi.reflect.Loader;
6 import alt.jiapi.reflect.JiapiClass;
7
8 import alt.jiapi.event.FieldEvent;
9 import alt.jiapi.event.FieldEventProducer;
10 import alt.jiapi.event.FieldListener;
11
12 import alt.jiapi.event.MethodEvent;
13 import alt.jiapi.event.MethodEventProducer;
14 import alt.jiapi.event.MethodListener;
15
16 import alt.jiapi.util.Bootstrapper;
17 import alt.jiapi.util.InstrumentingClassLoader;
18
19 public class Sample3 implements FieldListener, MethodListener {
20     public static void main(String JavaDoc args[]) throws Exception JavaDoc {
21         new Sample3();
22     }
23     
24     public Sample3() throws Exception JavaDoc {
25         // Configure:
26
InstrumentationContext ctx = new InstrumentationContext();
27         InstrumentationDescriptor id = new InstrumentationDescriptor();
28         id.addInclusionRule("samples.event.*");
29         ctx.addInstrumentationDescriptor(id);
30         
31         // Use event API:
32
// Events for field access
33
FieldEventProducer fieldEventProducer = new FieldEventProducer(id);
34         fieldEventProducer.addFieldListener(this);
35
36         // Events for method access
37
MethodEventProducer methodEventProducer = new MethodEventProducer(id);
38         methodEventProducer.addMethodListener(this);
39
40
41         // JiapiClass jc = new Loader().loadClass("samples.event.Foo");
42

43         Bootstrapper.launch("samples.event.Foo", null, ctx,
44                             InstrumentingClassLoader.createClassLoader(ctx));
45     }
46        
47
48     // FieldListener:
49
public void fieldChanging(FieldEvent fe) {
50         System.out.println("Field " + fe.getFieldName() + " is changing");
51     }
52     public void fieldSet(FieldEvent fe) {
53         System.out.println("Field " + fe.getFieldName() + " is set");
54     }
55
56     public void fieldGet(FieldEvent fe) {
57         System.out.println("Field " + fe.getFieldName() + " has been get");
58     }
59
60     // MethodListener
61
public void methodEntered(MethodEvent event) {
62         System.out.println("Method " + event.getClassName() + "." +
63                            event.getMethodName() + " entered.");
64     }
65        
66     public void methodExited(MethodEvent event) {
67         System.out.println("Method " + event.getClassName() + "." +
68                            event.getMethodName() + " exited.");
69     }
70 }
71
Popular Tags