// Path: src/main/java/com/tkhoon/framework/proxy/Proxy.java
// public interface Proxy {
// 
//     Object doProxy(ProxyChain proxyChain) throws Exception;
// }
// 
// Path: src/main/java/com/tkhoon/framework/proxy/ProxyChain.java
// public class ProxyChain {
// 
//     private Class<?> targetClass;
//     private Object targetObject;
//     private Method targetMethod;
//     private Object[] methodParams;
//     private MethodProxy methodProxy;
// 
//     private List<Proxy> proxyList;
//     private int currentProxyIndex = 0;
// 
//     public ProxyChain(Class<?> targetClass, Object targetObject, Method targetMethod, Object[] methodParams, MethodProxy methodProxy, List<Proxy> proxyList) {
//         this.targetClass = targetClass;
//         this.targetObject = targetObject;
//         this.targetMethod = targetMethod;
//         this.methodParams = methodParams;
//         this.methodProxy = methodProxy;
//         this.proxyList = proxyList;
//     }
// 
//     public Class<?> getTargetClass() {
//         return targetClass;
//     }
// 
//     public Method getTargetMethod() {
//         return targetMethod;
//     }
// 
//     public Object[] getMethodParams() {
//         return methodParams;
//     }
// 
//     public Object doProxyChain() throws Exception {
//         Object methodResult;
//         if (currentProxyIndex < proxyList.size()) {
//             methodResult = proxyList.get(currentProxyIndex++).doProxy(this);
//         } else {
//             try {
//                 methodResult = methodProxy.invokeSuper(targetObject, methodParams);
//             } catch (Throwable throwable) {
//                 throw new RuntimeException(throwable);
//             }
//         }
//         return methodResult;
//     }
// }


import com.tkhoon.framework.proxy.Proxy;
import com.tkhoon.framework.proxy.ProxyChain;
import java.lang.reflect.Method;
package com.tkhoon.framework.base;



public abstract class BaseAspect implements Proxy {

    @Override
// Path: src/main/java/com/tkhoon/framework/proxy/Proxy.java
// public interface Proxy {
// 
//     Object doProxy(ProxyChain proxyChain) throws Exception;
// }
// 
// Path: src/main/java/com/tkhoon/framework/proxy/ProxyChain.java
// public class ProxyChain {
// 
//     private Class<?> targetClass;
//     private Object targetObject;
//     private Method targetMethod;
//     private Object[] methodParams;
//     private MethodProxy methodProxy;
// 
//     private List<Proxy> proxyList;
//     private int currentProxyIndex = 0;
// 
//     public ProxyChain(Class<?> targetClass, Object targetObject, Method targetMethod, Object[] methodParams, MethodProxy methodProxy, List<Proxy> proxyList) {
//         this.targetClass = targetClass;
//         this.targetObject = targetObject;
//         this.targetMethod = targetMethod;
//         this.methodParams = methodParams;
//         this.methodProxy = methodProxy;
//         this.proxyList = proxyList;
//     }
// 
//     public Class<?> getTargetClass() {
//         return targetClass;
//     }
// 
//     public Method getTargetMethod() {
//         return targetMethod;
//     }
// 
//     public Object[] getMethodParams() {
//         return methodParams;
//     }
// 
//     public Object doProxyChain() throws Exception {
//         Object methodResult;
//         if (currentProxyIndex < proxyList.size()) {
//             methodResult = proxyList.get(currentProxyIndex++).doProxy(this);
//         } else {
//             try {
//                 methodResult = methodProxy.invokeSuper(targetObject, methodParams);
//             } catch (Throwable throwable) {
//                 throw new RuntimeException(throwable);
//             }
//         }
//         return methodResult;
//     }
// }


// Path: src/main/java/com/tkhoon/framework/base/BaseAspect.java
import com.tkhoon.framework.proxy.Proxy;
import com.tkhoon.framework.proxy.ProxyChain;
import java.lang.reflect.Method;

package com.tkhoon.framework.base;



public abstract class BaseAspect implements Proxy {

    @Override
    public final Object doProxy(ProxyChain proxyChain) throws Exception {