예제 #1
0
파일: Trace.java 프로젝트: CycStt/cglib
  public Object intercept(
      Object obj, java.lang.reflect.Method method, Object[] args, MethodProxy proxy)
      throws Throwable {
    printIdent(ident);
    System.out.println(method);
    for (int i = 0; i < args.length; i++) {
      printIdent(ident);
      System.out.print("arg" + (i + 1) + ": ");
      if (obj == args[i]) System.out.println("this");
      else System.out.println(args[i]);
    }
    ident++;

    Object retValFromSuper = null;
    try {
      retValFromSuper = proxy.invokeSuper(obj, args);
      ident--;
    } catch (Throwable t) {
      ident--;
      printIdent(ident);
      System.out.println("throw " + t);
      System.out.println();
      throw t.fillInStackTrace();
    }

    printIdent(ident);
    System.out.print("return ");
    if (obj == retValFromSuper) System.out.println("this");
    else System.out.println(retValFromSuper);

    if (ident == 1) System.out.println();

    return retValFromSuper;
  }
예제 #2
0
파일: Trace.java 프로젝트: CycStt/cglib
 public static Object newInstance(Class clazz) {
   try {
     Enhancer e = new Enhancer();
     e.setSuperclass(clazz);
     e.setCallback(callback);
     return e.create();
   } catch (Throwable e) {
     e.printStackTrace();
     throw new Error(e.getMessage());
   }
 }