package com.baidu.disconf.client.config.inner;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.baidu.disconf.client.config.DisClientConfig;
import com.baidu.disconf.client.config.DisClientSysConfig;
import com.baidu.disconf.client.support.utils.StringUtil;
import com.baidu.disconf.core.common.utils.ClassLoaderUtil;
import com.baidu.disconf.core.common.utils.OsUtil;
/**
* 用户配置、系统配置 的校验
*
* @author liaoqiqi
* @version 2014-6-6
*/
public class DisInnerConfigHelper {
protected static final Logger LOGGER = LoggerFactory.getLogger(DisInnerConfigHelper.class);
/**
* @throws Exception
* @Description: 校验用户配置文件是否正常
* @author liaoqiqi
* @date 2013-6-13
*/
public static void verifyUserConfig() throws Exception {
//
// 服务器相关
//
//
// 服务器地址
if (StringUtils.isEmpty(DisClientConfig.getInstance().CONF_SERVER_HOST)) {
throw new Exception("settings: " + DisClientConfig.CONF_SERVER_HOST_NAME + " cannot find");
}
DisClientConfig.getInstance()
.setHostList(StringUtil.parseStringToStringList(DisClientConfig.getInstance().CONF_SERVER_HOST, ","));
LOGGER.info(
"SERVER " + DisClientConfig.CONF_SERVER_HOST_NAME + ": " + DisClientConfig.getInstance().getHostList());
//
// 版本
if (StringUtils.isEmpty(DisClientConfig.getInstance().VERSION)) {
throw new Exception("settings: " + DisClientConfig.VERSION_NAME + " cannot find");
}
LOGGER.info("SERVER " + DisClientConfig.VERSION_NAME + ": " + DisClientConfig.getInstance().VERSION);
//
// APP名
if (StringUtils.isEmpty(DisClientConfig.getInstance().APP)) {
throw new Exception("settings: " + DisClientConfig.APP_NAME + " cannot find");
}
LOGGER.info("SERVER " + DisClientConfig.APP_NAME + ": " + DisClientConfig.getInstance().APP);
//
// 环境
if (StringUtils.isEmpty(DisClientConfig.getInstance().ENV)) {
throw new Exception("settings: " + DisClientConfig.ENV_NAME + " cannot find");
}
LOGGER.info("SERVER " + DisClientConfig.ENV_NAME + ": " + DisClientConfig.getInstance().ENV);
//
// 是否使用远程的配置
LOGGER.info("SERVER disconf.enable.remote.conf: " + DisClientConfig.getInstance().ENABLE_DISCONF);
//
// debug mode
LOGGER.info("SERVER disconf.debug: " + DisClientConfig.getInstance().DEBUG);
// 用户下载文件夹
if (!StringUtils.isEmpty(DisClientConfig.getInstance().userDefineDownloadDir)) {
OsUtil.makeDirs(DisClientConfig.getInstance().userDefineDownloadDir);
LOGGER.info("SERVER disconf.user_define_download_dir: " + DisClientConfig.getInstance()
.userDefineDownloadDir);
}
//
// 忽略哪些分布式配置
//
List<String> ignoreDisconfList =
StringUtil.parseStringToStringList(DisClientConfig.getInstance().IGNORE_DISCONF_LIST, ",");
Set<String> keySet = new HashSet<String>();
if (ignoreDisconfList != null) {
for (String ignoreData : ignoreDisconfList) {
keySet.add(ignoreData.trim());
}
}
DisClientConfig.getInstance().setIgnoreDisconfKeySet(keySet);
LOGGER.info("SERVER disconf.ignore: " + DisClientConfig.getInstance().getIgnoreDisconfKeySet());
// 重试
LOGGER.debug("SERVER disconf.conf_server_url_retry_times: " + DisClientConfig
.getInstance().CONF_SERVER_URL_RETRY_TIMES);
LOGGER.debug("SERVER disconf.conf_server_url_retry_sleep_seconds: " +
DisClientConfig.getInstance().confServerUrlRetrySleepSeconds);
LOGGER.debug("SERVER disconf.enable_local_download_dir_in_class_path: " + DisClientConfig
.getInstance().enableLocalDownloadDirInClassPath);
// 是否将文件放在classpath目录下
if (DisClientConfig.getInstance().enableLocalDownloadDirInClassPath) {
String classpath = ClassLoaderUtil.getClassPath();
if (classpath.isEmpty()) {
LOGGER.warn("CLASSPATH is null. we will not transfer your config file to classpath in the following");
} else {
LOGGER.debug("classpath: " + classpath);
}
}
}
/**
* @throws Exception
* @Description: 校验系统配置文件是否正常
* @date 2013-6-13
*/
public static void verifySysConfig() throws Exception {
//
// 服务器相关
//
// CONF_SERVER_STORE_ACTION
if (StringUtils.isEmpty(DisClientSysConfig.getInstance().CONF_SERVER_STORE_ACTION)) {
throw new Exception("settings: CONF_SERVER_STORE_ACTION cannot find");
}
LOGGER.debug("SERVER disconf.conf_server_store_action: " + DisClientSysConfig
.getInstance().CONF_SERVER_STORE_ACTION);
// CONF_SERVER_ZOO_ACTION
if (StringUtils.isEmpty(DisClientSysConfig.getInstance().CONF_SERVER_ZOO_ACTION)) {
throw new Exception("settings: CONF_SERVER_ZOO_ACTION cannot find");
}
LOGGER.debug(
"SERVER disconf.conf_server_zoo_action: " + DisClientSysConfig.getInstance().CONF_SERVER_ZOO_ACTION);
// CONF_SERVER_MASTER_NUM_ACTION
if (StringUtils.isEmpty(DisClientSysConfig.getInstance().CONF_SERVER_MASTER_NUM_ACTION)) {
throw new Exception("settings: CONF_SERVER_MASTER_NUM_ACTION cannot find");
}
LOGGER.debug("SERVER disconf.conf_server_master_num_action: " +
DisClientSysConfig.getInstance().CONF_SERVER_MASTER_NUM_ACTION);
//
// 本地相关
//
if (StringUtils.isEmpty(DisClientSysConfig.getInstance().LOCAL_DOWNLOAD_DIR)) {
throw new Exception("settings: LOCAL_TMP_DIR cannot find");
}
// LOCAL_DOWNLOAD_DIR
LOGGER.debug("SERVER disconf.local_download_dir: " + DisClientSysConfig.getInstance().LOCAL_DOWNLOAD_DIR);
OsUtil.makeDirs(DisClientSysConfig.getInstance().LOCAL_DOWNLOAD_DIR);
}
}