package com.erdaoya.springcloud.comx.boot;
import com.erdaoya.springcloud.comx.source.sourcebase.SourceBaseFactory;
import com.erdaoya.springcloud.comx.utils.cache.AbstractCache;
import com.erdaoya.springcloud.comx.utils.cache.CacheFactory;
import com.erdaoya.springcloud.comx.utils.config.Config;
import com.erdaoya.springcloud.comx.utils.config.ConfigException;
import com.erdaoya.springcloud.comx.utils.config.Loader;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* Created by xue on 12/16/16.
* 在服务启动时加载配置
*/
@Slf4j
public class ComxConfLoader {
private static boolean initialized = false;
private static String COMX_HOME;
private static Config comxConf;
private static SourceBaseFactory sourceBaseFactory;
private static AbstractCache cache;
private static String urlPrefix;
private static final String FIELD_URL_PREFIX = "urlPrefix";
private static final String FIELD_CACHE = "cache";
static {
Properties prop = new Properties();
InputStream in = ComxConfLoader.class.getClassLoader().getResourceAsStream("comx.properties");
try {
prop.load(in);
} catch (IOException e) {
log.error("fail to load properties!", e);
throw new RuntimeException(e);
}
COMX_HOME = prop.getProperty("comx_home");
}
// 提供更新方法 TODO
public static Config load() throws ConfigException {
if (!initialized) {
initialize();
}
return comxConf;
}
public static void initialize() throws ConfigException{
comxConf = Loader.fromJsonFile(COMX_HOME + "/comx.conf.json");
sourceBaseFactory = SourceBaseFactory.fromConf(comxConf);
urlPrefix = comxConf.rstr(FIELD_URL_PREFIX);
Config cacheConf = comxConf.sub(FIELD_CACHE);
cache = CacheFactory.fromConf(cacheConf);
initialized = true;
}
public static String getUrlPrefix() {
return urlPrefix;
}
public static AbstractCache getCache() {return cache;}
public static String getComxHome() {
return COMX_HOME;
}
public static Config getComxConf() {
return comxConf;
}
public static SourceBaseFactory getSourceBaseFactory() {
return sourceBaseFactory;
}
}