package org.xforth.config.client;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.util.Properties;
/**
* 管理LocalConfig和RemoteConfig
*/
public class ConfigBundle implements IConfigProxy,IPropertiesExport {
private static final Logger logger = LoggerFactory.getLogger(ConfigBundle.class);
private static LocalConfig localConfig;
private static RemoteConfig remoteConfig;
public ConfigBundle(String schema,String configFile,String zkConnectString,boolean isDynamic){
localConfig = new LocalConfig(configFile,isDynamic);
remoteConfig = new RemoteConfig(schema,zkConnectString,isDynamic);
}
/**
* 提供配置读取
* @param key
* @return
*/
@Override
public String get(String key){
if(StringUtils.isNotBlank(key)){
String localVal = localConfig.get(key);
if(StringUtils.isNotBlank(localVal)){
return localVal;
}else{
return remoteConfig.get(key);
}
}
if(logger.isDebugEnabled()){
logger.debug("ConfigBundle can not find key:{}",key);
}
return null;
}
@Override
public Properties loadAll(){
Properties localProp = localConfig.loadAll();
Properties remoteProp = remoteConfig.loadAll();
Properties merged = new Properties();
merged.putAll(remoteProp);
merged.putAll(localProp);
return merged;
}
}