package com.cattong.commons.oauth.config; import java.lang.reflect.Constructor; import com.cattong.commons.Logger; import com.cattong.commons.ServiceProvider; public class OAuthConfigFactory { private static final String CLASS_NAME_FORMAT = "com.cattong.%1$s.impl.%2$s.%3$sOAuthConfig"; public static synchronized OAuthConfig getOAuthConfig(ServiceProvider sp) { if (sp == ServiceProvider.None) { return null; } String spCategoryPath = sp.getSpCategory().toLowerCase(); String packageName = String.format(CLASS_NAME_FORMAT, spCategoryPath, sp.toString().toLowerCase(), sp.toString()); OAuthConfig oauthConfig = null; try { //Class<?> oauthConfigInstanceClass = ScanPackageUtil.getAbstractExtendClass(packageName, OAuthConfigBase.class); Class<?> oauthConfigInstanceClass = Class.forName(packageName); Constructor<?> constructor = oauthConfigInstanceClass.getConstructor(); oauthConfig = (OAuthConfig)constructor.newInstance(); } catch (Exception e) { Logger.debug("OAuthConfigFactory: {}", sp, e); } return oauthConfig; } }