
artoria.aop.support.SpringCglibProxyHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of artoria-extend Show documentation
Show all versions of artoria-extend Show documentation
Artoria is a java technology framework based on the facade pattern.
The newest version!
package artoria.aop.support;
import artoria.aop.AbstractProxyHandler;
import artoria.aop.Interceptor;
import artoria.util.Assert;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
/**
* The proxy factory implements by spring cglib.
* @author Kahle
*/
public class SpringCglibProxyHandler extends AbstractProxyHandler {
private static final Logger log = LoggerFactory.getLogger(SpringCglibProxyHandler.class);
/**
* The spring cglib method interceptor adapter.
* @author Kahle
*/
private static class MethodInterceptorAdapter implements MethodInterceptor {
private final Interceptor interceptor;
public MethodInterceptorAdapter(Interceptor interceptor) {
Assert.notNull(interceptor, "Parameter \"interceptor\" must not null. ");
this.interceptor = interceptor;
}
@Override
public Object intercept(Object proxyObject, Method method,
Object[] args, MethodProxy methodProxy) throws Throwable {
return interceptor.intercept(proxyObject, method, args);
}
}
@Override
public Object proxy(Class> originalClass, Interceptor interceptor) {
Assert.notNull(originalClass, "Parameter \"originalClass\" must not null. ");
Assert.notNull(interceptor, "Parameter \"interceptor\" must not null. ");
MethodInterceptor methodInterceptor = new MethodInterceptorAdapter(interceptor);
return Enhancer.create(originalClass, methodInterceptor);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy