Example #1
0
 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());
   }
 }
Example #2
0
  /**
   * control 代理工厂
   *
   * @param clazz
   * @return
   */
  public static <T> T getControlInstance(Class<T> clazz, MessageProxy mMethodCallBack) {
    Enhancer<T> enhancer;
    if (mMethodCallBack != null) {
      enhancer =
          new Enhancer<T>(
              mCacheDir,
              clazz,
              new Class[] {mMethodCallBack.getClass()},
              new Object[] {mMethodCallBack});
    } else {
      enhancer = new Enhancer<T>(mCacheDir, clazz);
    }

    enhancer.addCallBacks(new Interceptor[] {new AsyncMethodAtomInterceptor(mMethodCallBack)});
    enhancer.addFilter(new AsyncMethodFilter());
    return enhancer.create();
  }
Example #3
0
  private Factory createMock() throws Exception {
    final MethodInterceptor interceptor =
        new MethodInterceptor() {
          public Object intercept(
              final Object obj, final Method method, final Object[] args, final MethodProxy proxy)
              throws Throwable {
            return proxy.invokeSuper(obj, args);
          }
        };

    final Enhancer enhancer = new Enhancer();
    enhancer.setSuperclass(ArrayList.class);
    enhancer.setCallbackType(MethodInterceptor.class);

    final Class<?> mockClass = enhancer.createClass();

    Enhancer.registerCallbacks(mockClass, new Callback[] {interceptor});

    final Factory f = (Factory) ClassInstantiatorFactory.getInstantiator().newInstance(mockClass);

    f.getCallback(0);

    return f;
  }