package com.jfinal.weixin.sdk.jfinal;

import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.Controller;
import com.jfinal.weixin.sdk.api.ApiConfigKit;

/**
 * ApiController 为 ApiController 绑定 ApiConfig 对象到当前线程,
 * 以便在后续的操作中可以使用 ApiConfigKit.getApiConfig() 获取到该对象
 */
public class ApiInterceptor implements Interceptor {
	
	public void intercept(Invocation inv) {
		Controller controller = inv.getController();
		if (controller instanceof ApiController == false)
			throw new RuntimeException("控制器需要继承 ApiController");
		
		try {
			ApiConfigKit.setThreadLocalApiConfig(((ApiController)controller).getApiConfig());
			inv.invoke();
		}
		finally {
			ApiConfigKit.removeThreadLocalApiConfig();
		}
	}
}