optimize YAML config loader (#4332)

This commit is contained in:
rewerma
2022-08-01 20:15:14 +08:00
committed by GitHub
parent a96db39420
commit eee73dc4b1
43 changed files with 391 additions and 4225 deletions

View File

@@ -1,7 +1,7 @@
package com.alibaba.otter.canal.client.adapter.phoenix.config;
import com.alibaba.otter.canal.client.adapter.config.YmlConfigBinder;
import com.alibaba.otter.canal.client.adapter.support.MappingConfigsLoader;
import com.alibaba.otter.canal.client.adapter.support.YamlUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -28,8 +28,7 @@ public class ConfigLoader {
Map<String, String> configContentMap = MappingConfigsLoader.loadConfigs("phoenix");
configContentMap.forEach((fileName, content) -> {
MappingConfig config = YmlConfigBinder
.bindYmlToObj(null, content, MappingConfig.class, null, envProperties);
MappingConfig config = YamlUtils.ymlToObj(null, content, MappingConfig.class, null, envProperties);
if (config == null) {
return;
}

View File

@@ -1,10 +1,10 @@
package com.alibaba.otter.canal.client.adapter.phoenix.monitor;
import com.alibaba.otter.canal.client.adapter.config.YmlConfigBinder;
import com.alibaba.otter.canal.client.adapter.phoenix.PhoenixAdapter;
import com.alibaba.otter.canal.client.adapter.phoenix.config.MappingConfig;
import com.alibaba.otter.canal.client.adapter.support.MappingConfigsLoader;
import com.alibaba.otter.canal.client.adapter.support.Util;
import com.alibaba.otter.canal.client.adapter.support.YamlUtils;
import java.io.File;
import java.util.Properties;
import org.apache.commons.io.filefilter.FileFilterUtils;
@@ -19,15 +19,15 @@ import org.slf4j.LoggerFactory;
*/
public class PhoenixConfigMonitor {
private static final Logger logger = LoggerFactory.getLogger(PhoenixConfigMonitor.class);
private static final Logger logger = LoggerFactory.getLogger(PhoenixConfigMonitor.class);
private static final String adapterName = "phoenix"; //相应组件名字
private static final String adapterName = "phoenix"; // 相应组件名字
private String key;
private String key;
private PhoenixAdapter phoenixAdapter; //相应适配器名实现类
private PhoenixAdapter phoenixAdapter; // 相应适配器名实现类
private Properties envProperties;
private Properties envProperties;
private FileAlterationMonitor fileMonitor;
@@ -38,7 +38,7 @@ public class PhoenixConfigMonitor {
File confDir = Util.getConfDirPath(adapterName);
try {
FileAlterationObserver observer = new FileAlterationObserver(confDir,
FileFilterUtils.and(FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter("yml")));
FileFilterUtils.and(FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter("yml")));
FileListener listener = new FileListener();
observer.addListener(listener);
fileMonitor = new FileAlterationMonitor(3000, observer);
@@ -65,16 +65,15 @@ public class PhoenixConfigMonitor {
try {
// 加载新增的配置文件
String configContent = MappingConfigsLoader.loadConfig(adapterName + File.separator + file.getName());
MappingConfig config = YmlConfigBinder
.bindYmlToObj(null, configContent, MappingConfig.class, null, envProperties);
MappingConfig config = YamlUtils
.ymlToObj(null, configContent, MappingConfig.class, null, envProperties);
if (config == null) {
return;
}
config.validate();
boolean result = phoenixAdapter.addConfig(file.getName(), config);
if (result) {
logger.info("Add a new phoenix mapping config: {} to canal adapter",
file.getName());
logger.info("Add a new phoenix mapping config: {} to canal adapter", file.getName());
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
@@ -89,13 +88,13 @@ public class PhoenixConfigMonitor {
if (phoenixAdapter.getPhoenixMapping().containsKey(file.getName())) {
// 加载配置文件
String configContent = MappingConfigsLoader
.loadConfig(adapterName + File.separator + file.getName());
.loadConfig(adapterName + File.separator + file.getName());
if (configContent == null) {
onFileDelete(file);
return;
}
MappingConfig config = YmlConfigBinder
.bindYmlToObj(null, configContent, MappingConfig.class, null, envProperties);
MappingConfig config = YamlUtils
.ymlToObj(null, configContent, MappingConfig.class, null, envProperties);
if (config == null) {
return;
}