package net.dev123.sns; import java.lang.reflect.Constructor; import net.dev123.commons.Constants; import net.dev123.commons.ServiceProvider; import net.dev123.commons.http.auth.Authorization; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SnsFactory { private static final String CLASS_NAME_FORMAT = "net.dev123.sns.%1$s.%2$s"; private static Logger logger = LoggerFactory.getLogger(SnsFactory.class.getSimpleName()); public static Sns getInstance(Authorization auth) { Sns sns = null; ServiceProvider serviceProvider = auth.getServiceProvider(); try { String className = String.format( CLASS_NAME_FORMAT, serviceProvider.toString().toLowerCase(), serviceProvider.toString() ); Constructor<?> constructor = Class.forName(className).getConstructor(Authorization.class); sns = (Sns) constructor.newInstance(auth); } catch (Exception e) { if (Constants.DEBUG) { logger.debug("Get MicroBlog instance for {}", serviceProvider, e); } } return sns; } }