package com.cattong.weibo.conf; import java.lang.reflect.Constructor; import com.cattong.commons.LibResultCode; import com.cattong.commons.LibRuntimeException; import com.cattong.commons.Logger; import com.cattong.commons.ServiceProvider; import com.cattong.commons.http.auth.Authorization; import com.cattong.weibo.WeiboFactory; public class ApiConfigFactory { public static synchronized ApiConfig getApiConfig(Authorization auth) { if (auth == null) { throw new LibRuntimeException(LibResultCode.E_PARAM_NULL); } String packageName = WeiboFactory.class.getPackage().getName(); ServiceProvider sp = auth.getServiceProvider(); packageName += ".impl." + sp.toString().toLowerCase(); packageName += "." + sp.toString() + "ApiConfig"; ApiConfig apiConfig = null; try { //Class<?> apiConfigInstanceClass = ScanPackageUtil.getAbstractExtendClass(packageName, ApiConfigBase.class); Class<?> apiConfigInstanceClass = Class.forName(packageName); Constructor<?> constructor = apiConfigInstanceClass.getConstructor(); apiConfig = (ApiConfig)constructor.newInstance(); } catch (Exception e) { Logger.error("ApiConfigFactory:{}", sp, e); } return apiConfig; } }