From d0641fc7e6a679d7be25f1c69062a6e5a969baed Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 25 Mar 2024 12:10:06 +0800 Subject: [PATCH] fix setting load bugf --- .../hutool/db/config/SettingConfigParser.java | 5 +---- .../org/dromara/hutool/db/IssueI9B98CTest.java | 18 ++++++++++++++++++ .../test/resources/config/issueI9B98C.setting | 3 +++ .../org/dromara/hutool/setting/Setting.java | 7 ++++++- 4 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 hutool-db/src/test/java/org/dromara/hutool/db/IssueI9B98CTest.java create mode 100644 hutool-db/src/test/resources/config/issueI9B98C.setting diff --git a/hutool-db/src/main/java/org/dromara/hutool/db/config/SettingConfigParser.java b/hutool-db/src/main/java/org/dromara/hutool/db/config/SettingConfigParser.java index 4ce1b08aa..77cecbfb9 100644 --- a/hutool-db/src/main/java/org/dromara/hutool/db/config/SettingConfigParser.java +++ b/hutool-db/src/main/java/org/dromara/hutool/db/config/SettingConfigParser.java @@ -22,7 +22,6 @@ import org.dromara.hutool.db.sql.SqlLog; import org.dromara.hutool.db.sql.filter.SqlLogFilter; import org.dromara.hutool.log.level.Level; import org.dromara.hutool.setting.Setting; -import org.dromara.hutool.setting.props.Props; import java.util.Set; @@ -158,14 +157,12 @@ public class SettingConfigParser implements ConfigParser { } // 自定义连接属性 - final Props connProps = new Props(); final Set keys = setting.keySet(); for (final String key : keys) { if (key.startsWith(CONNECTION_PREFIX)) { - connProps.set(StrUtil.subSuf(key, CONNECTION_PREFIX.length()), setting.remove(key)); + dbConfig.addConnProps(StrUtil.subSuf(key, CONNECTION_PREFIX.length()), setting.remove(key)); } } - dbConfig.setConnProps(connProps); // 池属性 dbConfig.setPoolProps(setting.toProps()); diff --git a/hutool-db/src/test/java/org/dromara/hutool/db/IssueI9B98CTest.java b/hutool-db/src/test/java/org/dromara/hutool/db/IssueI9B98CTest.java new file mode 100644 index 000000000..b41525aec --- /dev/null +++ b/hutool-db/src/test/java/org/dromara/hutool/db/IssueI9B98CTest.java @@ -0,0 +1,18 @@ +package org.dromara.hutool.db; + +import org.dromara.hutool.db.config.DbConfig; +import org.dromara.hutool.db.config.SettingConfigParser; +import org.dromara.hutool.setting.Setting; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class IssueI9B98CTest { + + @Test + void settingConfigParserTest() { + final SettingConfigParser settingConfigParser = SettingConfigParser.of(new Setting("config/issueI9B98C.setting")); + final DbConfig config = settingConfigParser.parse(null); + Assertions.assertEquals("jdbc:sqlite:test.db", config.getUrl()); + Assertions.assertEquals("true", config.getConnProps().getProperty("remarks")); + } +} diff --git a/hutool-db/src/test/resources/config/issueI9B98C.setting b/hutool-db/src/test/resources/config/issueI9B98C.setting new file mode 100644 index 000000000..108987f34 --- /dev/null +++ b/hutool-db/src/test/resources/config/issueI9B98C.setting @@ -0,0 +1,3 @@ +# 默认数据源 +url = jdbc:sqlite:test.db +remarks = true diff --git a/hutool-setting/src/main/java/org/dromara/hutool/setting/Setting.java b/hutool-setting/src/main/java/org/dromara/hutool/setting/Setting.java index b92e0416e..294b97a30 100644 --- a/hutool-setting/src/main/java/org/dromara/hutool/setting/Setting.java +++ b/hutool-setting/src/main/java/org/dromara/hutool/setting/Setting.java @@ -387,7 +387,12 @@ public class Setting extends AbsSetting implements Map { for (final Entry> groupEntry : this.groupedMap.entrySet()) { group = groupEntry.getKey(); for (final Entry entry : groupEntry.getValue().entrySet()) { - props.setProperty(StrUtil.isEmpty(group) ? entry.getKey() : group + CharUtil.DOT + entry.getKey(), entry.getValue()); + // issue#I9B98C,忽略null的键值对 + final String key = entry.getKey(); + final String value = entry.getValue(); + if(null != key && null != value){ + props.setProperty(StrUtil.isEmpty(group) ? key : group + CharUtil.DOT + key, value); + } } } return props;