// Path: src/com/jfinal/weixin/sdk/api/ApiConfigKit.java
// public class ApiConfigKit {
// 	
// 	private static final ThreadLocal<ApiConfig> tl = new ThreadLocal<ApiConfig>();
// 	
// 	// 开发模式将输出消息交互 xml 到控制台
// 	private static boolean devMode = false;
// 	
// 	public static void setDevMode(boolean devMode) {
// 		ApiConfigKit.devMode = devMode;
// 	}
// 	
// 	public static boolean isDevMode() {
// 		return devMode;
// 	}
// 	
// 	public static void setThreadLocalApiConfig(ApiConfig apiConfig) {
// 		tl.set(apiConfig);
// 	}
// 	
// 	public static void removeThreadLocalApiConfig() {
// 		tl.remove();
// 	}
// 	
// 	public static ApiConfig getApiConfig() {
// 		ApiConfig result = tl.get();
// 		if (result == null)
// 			throw new IllegalStateException("需要事先使用 ApiConfigKit.setThreadLocalApiConfig(apiConfig) 将 ApiConfig对象存入，才可以调用 ApiConfigKit.getApiConfig() 方法");
// 		return result;
// 	}
// 	
// 	static IAccessTokenCache accessTokenCache = new DefaultAccessTokenCache();
// 	
// 	public static void setAccessTokenCache(IAccessTokenCache accessTokenCache) {
// 		ApiConfigKit.accessTokenCache = accessTokenCache;
// 	}
// 	
// 	public static IAccessTokenCache getAccessTokenCache() {
// 		return ApiConfigKit.accessTokenCache;
// 	}
// }


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

package com.jfinal.weixin.sdk.jfinal;


/**
 * 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 {

// Path: src/com/jfinal/weixin/sdk/api/ApiConfigKit.java
// public class ApiConfigKit {
// 	
// 	private static final ThreadLocal<ApiConfig> tl = new ThreadLocal<ApiConfig>();
// 	
// 	// 开发模式将输出消息交互 xml 到控制台
// 	private static boolean devMode = false;
// 	
// 	public static void setDevMode(boolean devMode) {
// 		ApiConfigKit.devMode = devMode;
// 	}
// 	
// 	public static boolean isDevMode() {
// 		return devMode;
// 	}
// 	
// 	public static void setThreadLocalApiConfig(ApiConfig apiConfig) {
// 		tl.set(apiConfig);
// 	}
// 	
// 	public static void removeThreadLocalApiConfig() {
// 		tl.remove();
// 	}
// 	
// 	public static ApiConfig getApiConfig() {
// 		ApiConfig result = tl.get();
// 		if (result == null)
// 			throw new IllegalStateException("需要事先使用 ApiConfigKit.setThreadLocalApiConfig(apiConfig) 将 ApiConfig对象存入，才可以调用 ApiConfigKit.getApiConfig() 方法");
// 		return result;
// 	}
// 	
// 	static IAccessTokenCache accessTokenCache = new DefaultAccessTokenCache();
// 	
// 	public static void setAccessTokenCache(IAccessTokenCache accessTokenCache) {
// 		ApiConfigKit.accessTokenCache = accessTokenCache;
// 	}
// 	
// 	public static IAccessTokenCache getAccessTokenCache() {
// 		return ApiConfigKit.accessTokenCache;
// 	}
// }


// Path: src/com/jfinal/weixin/sdk/jfinal/ApiInterceptor.java
import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.Controller;
import com.jfinal.weixin.sdk.api.ApiConfigKit;

package com.jfinal.weixin.sdk.jfinal;


/**
 * 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());
