Package example

Source Code of example.ProxyBuilder

package example;

import java.lang.reflect.UndeclaredThrowableException;

import net.sf.cglib.proxy.Callback;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.transform.impl.UndeclaredThrowableStrategy;

public class ProxyBuilder {

  static <T> T createProxyFor(Class<T> clazz, MethodInterceptor mi) {
    Enhancer enhancer = new Enhancer();
    //    if (classLoader != null) {
    //      enhancer.setClassLoader(classLoader);
    //      if (classLoader instanceof SmartClassLoader &&
    //          ((SmartClassLoader) classLoader).isClassReloadable(proxySuperClass)) {
    //        enhancer.setUseCache(false);
    //      }
    //    }
    enhancer.setSuperclass(clazz);
    enhancer.setStrategy(new UndeclaredThrowableStrategy(UndeclaredThrowableException.class));
    enhancer.setInterfaces(null);//AopProxyUtils.completeProxiedInterfaces(this.advised));
    enhancer.setInterceptDuringConstruction(false);

    Callback[] callbacks = new Callback[] { mi };//getCallbacks(rootClass);
    enhancer.setCallbacks(callbacks);
    //    enhancer.setCallbackFilter(new ProxyCallbackFilter(
    //        this.advised.getConfigurationOnlyCopy(), this.fixedInterceptorMap, this.fixedInterceptorOffset));

    Class<?>[] types = new Class[callbacks.length];
    for (int x = 0; x < types.length; x++) {
      types[x] = callbacks[x].getClass();
    }
    enhancer.setCallbackTypes(types);

    // Generate the proxy class and create a proxy instance.
    //    Object proxy;
    //    if (this.constructorArgs != null) {
    //      proxy = enhancer.create(this.constructorArgTypes, this.constructorArgs);
    //    }
    //    else {
    @SuppressWarnings("unchecked")
    T proxy = (T) enhancer.create();
    //    }
    return proxy;
  }
}
TOP

Related Classes of example.ProxyBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.