From 0d10a06547fa75c2a6b1a305d10183ed2c0cfc4f Mon Sep 17 00:00:00 2001 From: CarmJos Date: Mon, 18 Apr 2022 22:38:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=8A=BD=E8=B1=A1=E7=B1=BB?= =?UTF-8?q?=E7=BB=A7=E6=89=BF=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/java/config/ConfigTester.java | 14 ++++++ .../test/java/config/model/AbstractModel.java | 16 +++++++ .../src/test/java/config/model/SomeModel.java | 43 +++++++++++++++++++ .../src/test/java/config/model/TestModel.java | 13 +----- .../java/config/source/ImplConfiguration.java | 1 + 5 files changed, 76 insertions(+), 11 deletions(-) create mode 100644 impl/yaml/src/test/java/config/model/AbstractModel.java create mode 100644 impl/yaml/src/test/java/config/model/SomeModel.java diff --git a/impl/yaml/src/test/java/config/ConfigTester.java b/impl/yaml/src/test/java/config/ConfigTester.java index 1ac0174..002de10 100644 --- a/impl/yaml/src/test/java/config/ConfigTester.java +++ b/impl/yaml/src/test/java/config/ConfigTester.java @@ -2,6 +2,8 @@ package config; import cc.carm.lib.configuration.EasyConfiguration; import cc.carm.lib.configuration.yaml.YamlConfigProvider; +import config.model.AbstractModel; +import config.model.SomeModel; import config.model.TestModel; import config.source.ComplexConfiguration; import config.source.DemoConfiguration; @@ -11,6 +13,7 @@ import org.junit.Test; import java.util.LinkedHashMap; import java.util.List; +import java.util.Optional; import java.util.UUID; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -21,6 +24,7 @@ public class ConfigTester { @Test public void onTest() { ConfigurationSerialization.registerClass(TestModel.class); + ConfigurationSerialization.registerClass(SomeModel.class); YamlConfigProvider provider = EasyConfiguration.from("target/config.yml", "config.yml"); @@ -41,6 +45,16 @@ public class ConfigTester { provider.initialize(ImplConfiguration.class); System.out.println(ImplConfiguration.TEST.get()); ImplConfiguration.TEST.set(TestModel.random()); + + AbstractModel model = provider.getConfiguration().getSerializable("ImplConfiguration.test", TestModel.class); + + provider.getConfiguration().set("ImplConfiguration.some", new SomeModel("lover", 123)); + AbstractModel model2 = provider.getConfiguration().getSerializable("ImplConfiguration.some", SomeModel.class); + + System.out.println("model1: " + Optional.ofNullable(model).map(AbstractModel::getName).orElse(null)); + System.out.println("model1: " + Optional.ofNullable(model2).map(AbstractModel::getName).orElse(null)); + + System.out.println("----------------------------------------------------"); } diff --git a/impl/yaml/src/test/java/config/model/AbstractModel.java b/impl/yaml/src/test/java/config/model/AbstractModel.java new file mode 100644 index 0000000..ab5fdcd --- /dev/null +++ b/impl/yaml/src/test/java/config/model/AbstractModel.java @@ -0,0 +1,16 @@ +package config.model; + +import org.jetbrains.annotations.NotNull; + +public abstract class AbstractModel { + + protected final @NotNull String name; + + public AbstractModel(@NotNull String name) { + this.name = name; + } + + public @NotNull String getName() { + return name; + } +} diff --git a/impl/yaml/src/test/java/config/model/SomeModel.java b/impl/yaml/src/test/java/config/model/SomeModel.java new file mode 100644 index 0000000..b64949f --- /dev/null +++ b/impl/yaml/src/test/java/config/model/SomeModel.java @@ -0,0 +1,43 @@ +package config.model; + +import org.bspfsystems.yamlconfiguration.serialization.ConfigurationSerializable; +import org.bspfsystems.yamlconfiguration.serialization.SerializableAs; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.TestOnly; + +import java.util.HashMap; +import java.util.Map; + +@SerializableAs("SomeModel") +public class SomeModel extends AbstractModel implements ConfigurationSerializable { + + int num; + + public SomeModel(@NotNull String name, int num) { + super(name); + this.num = num; + } + + @Override + public String toString() { + return "SomeModel{" + + "name='" + name + '\'' + + ", num=" + num + + '}'; + } + + @Override + public @NotNull Map serialize() { + Map map = new HashMap<>(); + map.put("name", name); + map.put("num", num); + return map; + } + + @TestOnly + public static SomeModel deserialize(Map args) { + return new SomeModel((String) args.get("name"), (int) args.get("num")); + } + + +} diff --git a/impl/yaml/src/test/java/config/model/TestModel.java b/impl/yaml/src/test/java/config/model/TestModel.java index cdfa23b..8d7fb83 100644 --- a/impl/yaml/src/test/java/config/model/TestModel.java +++ b/impl/yaml/src/test/java/config/model/TestModel.java @@ -11,28 +11,19 @@ import java.util.Map; import java.util.UUID; @SerializableAs("TestModel") -public class TestModel implements ConfigurationSerializable { +public class TestModel extends AbstractModel implements ConfigurationSerializable { - public String name; public UUID uuid; public TestModel(String name, UUID uuid) { - this.name = name; + super(name); this.uuid = uuid; } - public void setName(String name) { - this.name = name; - } - public void setUuid(UUID uuid) { this.uuid = uuid; } - public String getName() { - return name; - } - public UUID getUuid() { return uuid; } diff --git a/impl/yaml/src/test/java/config/source/ImplConfiguration.java b/impl/yaml/src/test/java/config/source/ImplConfiguration.java index a64be5a..0ae1287 100644 --- a/impl/yaml/src/test/java/config/source/ImplConfiguration.java +++ b/impl/yaml/src/test/java/config/source/ImplConfiguration.java @@ -11,4 +11,5 @@ public class ImplConfiguration extends ConfigurationRoot { public static final ConfigValue TEST = ConfiguredSerializable.of(TestModel.class); + }