View Javadoc
1 package samples; 2 import net.sf.cglib.proxy.*; 3 import java.util.*; 4 /*** 5 * 6 * @author baliuka 7 */ 8 public class Trace implements MethodInterceptor { 9 10 int ident = 1; 11 static Trace callback = new Trace(); 12 13 /*** Creates a new instance of Trace */ 14 private Trace() { 15 } 16 17 public static Object newInstance( Class clazz ){ 18 try{ 19 Enhancer e = new Enhancer(); 20 e.setSuperclass(clazz); 21 e.setCallback(callback); 22 return e.create(); 23 }catch( Throwable e ){ 24 e.printStackTrace(); 25 throw new Error(e.getMessage()); 26 } 27 28 } 29 /*** 30 * @param args the command line arguments 31 */ 32 public static void main(String[] args) { 33 List list = (List)newInstance(Vector.class); 34 Object value = "TEST"; 35 list.add(value); 36 list.contains(value); 37 try{ 38 list.set(2, "ArrayIndexOutOfBounds" ); 39 }catch( ArrayIndexOutOfBoundsException ignore ){ 40 41 } 42 list.add(value + "1"); 43 list.add(value + "2"); 44 list.toString(); 45 list.equals(list); 46 list.set( 0, null ); 47 list.toString(); 48 list.add(list); 49 list.get(1); 50 list.toArray(); 51 list.remove(list); 52 list.remove(""); 53 list.containsAll(list); 54 list.lastIndexOf(value); 55 } 56 57 58 public Object intercept(Object obj, java.lang.reflect.Method method, Object[] args, 59 MethodProxy proxy) throws Throwable { 60 printIdent(ident); 61 System.out.println( method ); 62 for( int i = 0; i < args.length; i++ ){ 63 printIdent(ident); 64 System.out.print( "arg" + (i + 1) + ": "); 65 if( obj == args[i]) 66 System.out.println("this"); 67 else 68 System.out.println(args[i]); 69 } 70 ident++; 71 72 Object retValFromSuper = null; 73 try { 74 retValFromSuper = proxy.invokeSuper(obj, args); 75 ident--; 76 } catch (Throwable t) { 77 ident--; 78 printIdent(ident); 79 System.out.println("throw " + t ); 80 System.out.println(); 81 throw t.fillInStackTrace(); 82 } 83 84 printIdent(ident); 85 System.out.print("return " ); 86 if( obj == retValFromSuper) 87 System.out.println("this"); 88 else System.out.println(retValFromSuper); 89 90 if(ident == 1) 91 System.out.println(); 92 93 return retValFromSuper; 94 } 95 96 void printIdent( int ident ){ 97 98 99 while( --ident > 0 ){ 100 System.out.print("......."); 101 } 102 System.out.print(" "); 103 } 104 105 }

This page was automatically generated by Maven