1
mirror of https://github.com/CarmJos/EasyConfiguration.git synced 2026-06-05 02:58:20 +08:00

feat(map): 支持通过ConfigurationSection创建MapValue。

This commit is contained in:
2023-08-28 17:00:56 +08:00
parent c6cce5208f
commit 27a68ead7c
17 changed files with 404 additions and 208 deletions
@@ -42,6 +42,8 @@ public class DemoConfigTest {
if (anyModel != null) System.out.println(anyModel.getName());
ModelConfiguration.MODELS.forEach(System.out::println);
ModelConfiguration.MODEL_MAP.forEach((v, anyModel1) -> System.out.println(v + " -> " + anyModel1.toString()));
System.out.println("----------------------------------------------------");
}
@@ -5,13 +5,13 @@ import cc.carm.lib.configuration.core.annotation.ConfigPath;
import cc.carm.lib.configuration.core.annotation.HeaderComment;
import cc.carm.lib.configuration.core.value.ConfigValue;
import cc.carm.lib.configuration.core.value.type.ConfiguredList;
import cc.carm.lib.configuration.core.value.type.ConfiguredMap;
import cc.carm.lib.configuration.core.value.type.ConfiguredSectionMap;
import cc.carm.lib.configuration.demo.tests.model.AbstractModel;
import cc.carm.lib.configuration.yaml.value.ConfiguredSerializable;
import config.model.AnyModel;
import config.model.SomeModel;
import java.util.Map;
@HeaderComment("以下内容用于测试序列化")
@ConfigPath("model-test")
public class ModelConfiguration extends ConfigurationRoot {
@@ -25,10 +25,19 @@ public class ModelConfiguration extends ConfigurationRoot {
);
public static final ConfiguredList<AnyModel> MODELS = ConfiguredList.builderOf(AnyModel.class)
.fromObject()
.parseValue((section) -> AnyModel.deserialize((Map<String, ?>) section))
.serializeValue(AnyModel::serialize)
.fromMap()
.parseValue(AnyModel::deserialize).serializeValue(AnyModel::serialize)
.defaults(AnyModel.random(), AnyModel.random(), AnyModel.random())
.build();
public static final ConfiguredSectionMap<String, AnyModel> MODEL_MAP = ConfiguredMap.builderOf(String.class, AnyModel.class)
.asLinkedMap().fromSection()
.parseValue(v -> new AnyModel(v.getString("name", "EMPTY"), v.getBoolean("state", false)))
.serializeValue(AnyModel::serialize)
.defaults(m -> {
m.put("a", AnyModel.random());
m.put("b", AnyModel.random());
})
.build();
}