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 args[]) throws Exception { 21 new Sample3(); 22 } 23 24 public Sample3() throws Exception { 25 InstrumentationContext ctx = new InstrumentationContext(); 27 InstrumentationDescriptor id = new InstrumentationDescriptor(); 28 id.addInclusionRule("samples.event.*"); 29 ctx.addInstrumentationDescriptor(id); 30 31 FieldEventProducer fieldEventProducer = new FieldEventProducer(id); 34 fieldEventProducer.addFieldListener(this); 35 36 MethodEventProducer methodEventProducer = new MethodEventProducer(id); 38 methodEventProducer.addMethodListener(this); 39 40 41 43 Bootstrapper.launch("samples.event.Foo", null, ctx, 44 InstrumentingClassLoader.createClassLoader(ctx)); 45 } 46 47 48 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 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 |