package net.dev123.commons.http.config;
import java.util.Hashtable;
import net.dev123.commons.Constants;
import net.dev123.commons.ServiceProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* ConfigurationBase
*
* @version
* @author 马庆升
* @time 2010-7-29 下午02:50:29
*/
public class HttpConfigurationFactory {
private static final String CLASS_NAME_FORMAT = "net.dev123.%1$s%2$s.%3$sHttpConfiguration";
private static Logger logger = LoggerFactory.getLogger(HttpConfigurationFactory.class.getSimpleName());
private static Hashtable<ServiceProvider, HttpConfiguration> spHttpConfigs =
new Hashtable<ServiceProvider, HttpConfiguration>();
public static synchronized HttpConfiguration getHttpConfiguration(ServiceProvider serviceProvider) {
HttpConfiguration conf = spHttpConfigs.get(serviceProvider);
if (conf != null) {
return conf;
}
try {
if (serviceProvider == ServiceProvider.None) {
conf = new HttpConfigurationBase();
} else {
String spCategoryPath = serviceProvider.getServiceProviderCategory().toLowerCase();
if (!ServiceProvider.CATEGORY_NONE.equals(spCategoryPath)) {
spCategoryPath += ".";
}
String className =
String.format(
CLASS_NAME_FORMAT,
spCategoryPath,
serviceProvider.toString().toLowerCase(),
serviceProvider.toString()
);
conf = (HttpConfiguration) Class.forName(className).newInstance();
}
} catch (Exception e) {
if (Constants.DEBUG) {
logger.debug("Get HttpConfiguration instance for {}", serviceProvider, e);
}
conf = new HttpConfigurationBase();
}
spHttpConfigs.put(serviceProvider, conf);
return conf;
}
}