package com.jarvis.cache.aop.aspectj; import java.lang.reflect.Method; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.Signature; import org.aspectj.lang.reflect.MethodSignature; import com.jarvis.cache.aop.CacheAopProxyChain; public class AspectjCacheAopProxyChain implements CacheAopProxyChain { private final ProceedingJoinPoint jp; private Method method; public AspectjCacheAopProxyChain(ProceedingJoinPoint jp) { this.jp=jp; } @Override public Object[] getArgs() { return jp.getArgs(); } @SuppressWarnings("rawtypes") @Override public Class getTargetClass() { return jp.getTarget().getClass(); } @Override public Method getMethod() { if(null == method) { Signature signature=jp.getSignature(); MethodSignature methodSignature=(MethodSignature)signature; this.method=methodSignature.getMethod(); } return method; } @Override public Object doProxyChain(Object[] arguments) throws Throwable { return jp.proceed(arguments); } }