package com.cattong.sns;
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;
public class SnsFactory {
public static Sns getInstance(Authorization auth) {
if (auth == null) {
throw new LibRuntimeException(LibResultCode.E_PARAM_NULL);
}
String packageName = SnsFactory.class.getPackage().getName();
ServiceProvider sp = auth.getServiceProvider();
packageName += ".impl." + sp.toString().toLowerCase();
packageName += "." + sp.toString();
Sns snsInstance = null;
Class<?>[] constructorParams = {Authorization.class};
try {
//Class<?> weiboInstanceClass = ScanPackageUtil.getAbstractExtendClass(packageName, Weibo.class);
Class<?> weiboInstanceClass = Class.forName(packageName);
Constructor<?> constructor = weiboInstanceClass.getConstructor(constructorParams);
snsInstance = (Sns)constructor.newInstance(auth);
} catch (Exception e) {
Logger.error("SnsFactory:{}", sp, e);
}
return snsInstance;
}
}