From dd7a6c819ff9452cde6cca6b858b714d807972cf Mon Sep 17 00:00:00 2001 From: CarmJos Date: Fri, 22 Apr 2022 12:57:10 +0800 Subject: [PATCH] =?UTF-8?q?[2.1.0]=20=E5=AE=9E=E7=8E=B0JSON=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E7=9A=84=E6=95=B0=E6=8D=AE=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/pom.xml | 2 +- impl/json/pom.xml | 58 +++++++++ .../lib/configuration/EasyConfiguration.java | 33 +++++ .../json/JSONConfigProvider.java | 85 +++++++++++++ .../configuration/json/JSONConfigWrapper.java | 114 ++++++++++++++++++ .../lib/configuration/json/JSONValue.java | 4 + .../src/test/java/config/JSONConfigTest.java | 63 ++++++++++ .../test/java/config/model/AbstractModel.java | 16 +++ .../src/test/java/config/model/SomeModel.java | 39 ++++++ .../src/test/java/config/model/TestModel.java | 56 +++++++++ .../config/source/DatabaseConfiguration.java | 35 ++++++ .../java/config/source/DemoConfiguration.java | 73 +++++++++++ impl/yaml/pom.xml | 2 +- .../lib/configuration/EasyConfiguration.java | 12 +- .../{YamlComments.java => YAMLComments.java} | 2 +- ...gProvider.java => YAMLConfigProvider.java} | 14 +-- ...onWrapper.java => YAMLSectionWrapper.java} | 8 +- .../lib/configuration/yaml/YAMLValue.java | 18 ++- .../yaml/builder/AbstractYAMLBuilder.java | 6 +- ...figBuilder.java => YAMLConfigBuilder.java} | 2 +- .../yaml/value/ConfiguredSerializable.java | 4 +- .../src/test/java/config/ConfigTester.java | 4 +- pom.xml | 3 +- 23 files changed, 614 insertions(+), 39 deletions(-) create mode 100644 impl/json/pom.xml create mode 100644 impl/json/src/main/java/cc/carm/lib/configuration/EasyConfiguration.java create mode 100644 impl/json/src/main/java/cc/carm/lib/configuration/json/JSONConfigProvider.java create mode 100644 impl/json/src/main/java/cc/carm/lib/configuration/json/JSONConfigWrapper.java create mode 100644 impl/json/src/main/java/cc/carm/lib/configuration/json/JSONValue.java create mode 100644 impl/json/src/test/java/config/JSONConfigTest.java create mode 100644 impl/json/src/test/java/config/model/AbstractModel.java create mode 100644 impl/json/src/test/java/config/model/SomeModel.java create mode 100644 impl/json/src/test/java/config/model/TestModel.java create mode 100644 impl/json/src/test/java/config/source/DatabaseConfiguration.java create mode 100644 impl/json/src/test/java/config/source/DemoConfiguration.java rename impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/{YamlComments.java => YAMLComments.java} (93%) rename impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/{YamlConfigProvider.java => YAMLConfigProvider.java} (74%) rename impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/{YamlSectionWrapper.java => YAMLSectionWrapper.java} (90%) rename impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/builder/{YamlConfigBuilder.java => YAMLConfigBuilder.java} (90%) diff --git a/core/pom.xml b/core/pom.xml index bed6a9f..809bcd5 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -5,7 +5,7 @@ easyconfiguration-parent cc.carm.lib - 2.0.0 + 2.1.0 4.0.0 diff --git a/impl/json/pom.xml b/impl/json/pom.xml new file mode 100644 index 0000000..8b1419f --- /dev/null +++ b/impl/json/pom.xml @@ -0,0 +1,58 @@ + + + + easyconfiguration-parent + cc.carm.lib + 2.1.0 + ../../pom.xml + + 4.0.0 + + ${java.version} + ${java.version} + + easyconfiguration-json + jar + + + + + ${project.parent.groupId} + easyconfiguration-core + ${project.parent.version} + compile + + + + com.google.code.gson + gson + 2.9.0 + compile + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + org.apache.maven.plugins + maven-source-plugin + + + org.apache.maven.plugins + maven-javadoc-plugin + + + + + \ No newline at end of file diff --git a/impl/json/src/main/java/cc/carm/lib/configuration/EasyConfiguration.java b/impl/json/src/main/java/cc/carm/lib/configuration/EasyConfiguration.java new file mode 100644 index 0000000..9be9487 --- /dev/null +++ b/impl/json/src/main/java/cc/carm/lib/configuration/EasyConfiguration.java @@ -0,0 +1,33 @@ +package cc.carm.lib.configuration; + +import cc.carm.lib.configuration.json.JSONConfigProvider; + +import java.io.File; +import java.io.IOException; + +public class EasyConfiguration { + + public static JSONConfigProvider from(File file, String source) { + JSONConfigProvider provider = new JSONConfigProvider(file); + try { + provider.initializeFile(source); + provider.initializeConfig(); + } catch (IOException e) { + e.printStackTrace(); + } + return provider; + } + + public static JSONConfigProvider from(File file) { + return from(file, file.getName()); + } + + public static JSONConfigProvider from(String fileName) { + return from(fileName, fileName); + } + + public static JSONConfigProvider from(String fileName, String source) { + return from(new File(fileName), source); + } + +} diff --git a/impl/json/src/main/java/cc/carm/lib/configuration/json/JSONConfigProvider.java b/impl/json/src/main/java/cc/carm/lib/configuration/json/JSONConfigProvider.java new file mode 100644 index 0000000..a55be0e --- /dev/null +++ b/impl/json/src/main/java/cc/carm/lib/configuration/json/JSONConfigProvider.java @@ -0,0 +1,85 @@ +package cc.carm.lib.configuration.json; + +import cc.carm.lib.configuration.core.ConfigInitializer; +import cc.carm.lib.configuration.core.source.ConfigurationProvider; +import cc.carm.lib.configuration.core.source.impl.FileConfigProvider; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonSerializer; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.util.LinkedHashMap; + +/** + * Some code comes from BungeeCord's implementation of the JsonConfiguration. + * + * @author md_5, CarmJos + */ +public class JSONConfigProvider extends FileConfigProvider { + + protected final Gson gson = new GsonBuilder() + .serializeNulls().disableHtmlEscaping().setPrettyPrinting() + .registerTypeAdapter( + JSONConfigWrapper.class, + (JsonSerializer) (src, typeOfSrc, context) -> context.serialize(src.data) + ).create(); + + protected JSONConfigWrapper configuration; + protected ConfigInitializer initializer; + + public JSONConfigProvider(@NotNull File file) { + super(file); + this.initializer = new ConfigInitializer<>(this); + } + + public void initializeConfig() { + LinkedHashMap map = null; + + try (FileInputStream is = new FileInputStream(file)) { + map = gson.fromJson(new InputStreamReader(is, StandardCharsets.UTF_8), LinkedHashMap.class); + } catch (IOException e) { + e.printStackTrace(); + } + + if (map == null) map = new LinkedHashMap<>(); + + this.configuration = new JSONConfigWrapper(map); + this.initializer = new ConfigInitializer<>(this); + } + + @Override + public @NotNull JSONConfigWrapper getConfiguration() { + return this.configuration; + } + + @Override + public void reload() { + initializeConfig(); + } + + @Override + public void save() throws Exception { + try (Writer writer = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8)) { + gson.toJson(configuration.data, writer); + } + } + + @Override + public void setComments(@NotNull String path, @NotNull String... comments) { + // JSON doesn't support comments. + } + + @Override + public @Nullable String[] getComments(@NotNull String path) { + return new String[0]; // JSON doesn't support comments. + } + + @Override + public @NotNull ConfigInitializer> getInitializer() { + return this.initializer; + } + +} diff --git a/impl/json/src/main/java/cc/carm/lib/configuration/json/JSONConfigWrapper.java b/impl/json/src/main/java/cc/carm/lib/configuration/json/JSONConfigWrapper.java new file mode 100644 index 0000000..f0f7c65 --- /dev/null +++ b/impl/json/src/main/java/cc/carm/lib/configuration/json/JSONConfigWrapper.java @@ -0,0 +1,114 @@ +package cc.carm.lib.configuration.json; + +import cc.carm.lib.configuration.core.source.ConfigurationWrapper; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; + +/** + * Some code comes from BungeeCord's implementation of the JsonConfiguration. + * + * @author md_5, CarmJos + */ +public class JSONConfigWrapper implements ConfigurationWrapper { + + private static final char SEPARATOR = '.'; + protected final Map data; + + JSONConfigWrapper(Map map) { + this.data = new LinkedHashMap<>(); + + for (Map.Entry entry : map.entrySet()) { + String key = (entry.getKey() == null) ? "null" : entry.getKey().toString(); + + if (entry.getValue() instanceof Map) { + this.data.put(key, new JSONConfigWrapper((Map) entry.getValue())); + } else { + this.data.put(key, entry.getValue()); + } + } + } + + + @Override + public @NotNull Set getKeys(boolean deep) { + return new LinkedHashSet<>(this.data.keySet()); + } + + @Override + public @NotNull Map getValues(boolean deep) { + return new LinkedHashMap<>(this.data); + } + + @Override + public void set(@NotNull String path, @Nullable Object value) { + if (value instanceof Map) { + value = new JSONConfigWrapper((Map) value); + } + + JSONConfigWrapper section = getSectionFor(path); + if (section == this) { + if (value == null) { + this.data.remove(path); + } else { + this.data.put(path, value); + } + } else { + section.set(getChild(path), value); + } + } + + @Override + public boolean contains(@NotNull String path) { + return get(path) != null; + } + + @Override + public @Nullable Object get(@NotNull String path) { + JSONConfigWrapper section = getSectionFor(path); + return section == this ? data.get(path) : section.get(getChild(path)); + } + + @Override + public boolean isList(@NotNull String path) { + return get(path) instanceof List; + } + + @Override + public @Nullable List getList(@NotNull String path) { + Object val = get(path); + return (val instanceof List) ? (List) val : null; + } + + @Override + public boolean isConfigurationSection(@NotNull String path) { + return get(path) instanceof JSONConfigWrapper; + } + + @Override + public @Nullable ConfigurationWrapper getConfigurationSection(@NotNull String path) { + Object val = get(path); + return (val instanceof JSONConfigWrapper) ? (JSONConfigWrapper) val : null; + } + + private JSONConfigWrapper getSectionFor(String path) { + int index = path.indexOf(SEPARATOR); + if (index == -1) return this; + + String root = path.substring(0, index); + Object section = this.data.get(root); + if (section == null) { + section = new JSONConfigWrapper(new LinkedHashMap<>()); + this.data.put(root, section); + } + + return (JSONConfigWrapper) section; + } + + private String getChild(String path) { + int index = path.indexOf(SEPARATOR); + return (index == -1) ? path : path.substring(index + 1); + } + +} diff --git a/impl/json/src/main/java/cc/carm/lib/configuration/json/JSONValue.java b/impl/json/src/main/java/cc/carm/lib/configuration/json/JSONValue.java new file mode 100644 index 0000000..112519f --- /dev/null +++ b/impl/json/src/main/java/cc/carm/lib/configuration/json/JSONValue.java @@ -0,0 +1,4 @@ +package cc.carm.lib.configuration.json; + +public abstract class JSONValue { +} diff --git a/impl/json/src/test/java/config/JSONConfigTest.java b/impl/json/src/test/java/config/JSONConfigTest.java new file mode 100644 index 0000000..4edf1c6 --- /dev/null +++ b/impl/json/src/test/java/config/JSONConfigTest.java @@ -0,0 +1,63 @@ +package config; + +import cc.carm.lib.configuration.EasyConfiguration; +import cc.carm.lib.configuration.json.JSONConfigProvider; +import config.model.TestModel; +import config.source.DemoConfiguration; +import org.junit.Test; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class JSONConfigTest { + + protected final JSONConfigProvider provider = EasyConfiguration.from("target/config.yml", "config.yml"); + + + @Test + public void onTest() { + + provider.initialize(DemoConfiguration.class); + + testDemo(); + + try { + provider.save(); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + public static void testDemo() { + System.out.println("----------------------------------------------------"); + + System.out.println("> Test Value:"); + System.out.println("before: " + DemoConfiguration.Sub.UUID_CONFIG_VALUE.get()); + DemoConfiguration.Sub.UUID_CONFIG_VALUE.set(UUID.randomUUID()); + System.out.println("after: " + DemoConfiguration.Sub.UUID_CONFIG_VALUE.get()); + + System.out.println("> Test List:"); + DemoConfiguration.Sub.That.OPERATORS.getNotNull().forEach(System.out::println); + List operators = IntStream.range(0, 5).mapToObj(i -> UUID.randomUUID()).collect(Collectors.toList()); + DemoConfiguration.Sub.That.OPERATORS.set(operators); + + System.out.println("> Test Section:"); + System.out.println(DemoConfiguration.MODEL_TEST.get()); + DemoConfiguration.MODEL_TEST.set(TestModel.random()); + + System.out.println("> Test Maps:"); + DemoConfiguration.USERS.getNotNull().forEach((k, v) -> System.out.println(k + ": " + v)); + LinkedHashMap data = new LinkedHashMap<>(); + for (int i = 1; i <= 5; i++) { + data.put(i, UUID.randomUUID()); + } + DemoConfiguration.USERS.set(data); + System.out.println("----------------------------------------------------"); + } + + +} diff --git a/impl/json/src/test/java/config/model/AbstractModel.java b/impl/json/src/test/java/config/model/AbstractModel.java new file mode 100644 index 0000000..ab5fdcd --- /dev/null +++ b/impl/json/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/json/src/test/java/config/model/SomeModel.java b/impl/json/src/test/java/config/model/SomeModel.java new file mode 100644 index 0000000..2e031f0 --- /dev/null +++ b/impl/json/src/test/java/config/model/SomeModel.java @@ -0,0 +1,39 @@ +package config.model; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.TestOnly; + +import java.util.HashMap; +import java.util.Map; + +public class SomeModel extends AbstractModel { + + int num; + + public SomeModel(@NotNull String name, int num) { + super(name); + this.num = num; + } + + @Override + public String toString() { + return "SomeModel{" + + "name='" + name + '\'' + + ", num=" + num + + '}'; + } + + 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"), (Integer) args.get("num")); + } + + +} diff --git a/impl/json/src/test/java/config/model/TestModel.java b/impl/json/src/test/java/config/model/TestModel.java new file mode 100644 index 0000000..2fbd099 --- /dev/null +++ b/impl/json/src/test/java/config/model/TestModel.java @@ -0,0 +1,56 @@ +package config.model; + +import cc.carm.lib.configuration.core.source.ConfigurationWrapper; +import org.jetbrains.annotations.NotNull; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class TestModel extends AbstractModel { + + public UUID uuid; + + public TestModel(String name, UUID uuid) { + super(name); + this.uuid = uuid; + } + + public void setUuid(UUID uuid) { + this.uuid = uuid; + } + + public UUID getUuid() { + return uuid; + } + + public @NotNull Map serialize() { + Map map = new HashMap<>(); + map.put("name", name); + Map map2 = new HashMap<>(); + map2.put("uuid", uuid.toString()); + map.put("info", map2); + return map; + } + + public static TestModel deserialize(ConfigurationWrapper section) { + String name = section.getString("name"); + if (name == null) throw new NullPointerException("name is null"); + String uuidString = section.getString("info.uuid"); + if (uuidString == null) throw new NullPointerException("uuid is null"); + return new TestModel(name, UUID.fromString(uuidString)); + } + + public static TestModel random() { + return new TestModel(UUID.randomUUID().toString().substring(0, 5), UUID.randomUUID()); + } + + + @Override + public String toString() { + return "TestUser{" + + "name='" + name + '\'' + + ", uuid=" + uuid + + '}'; + } +} \ No newline at end of file diff --git a/impl/json/src/test/java/config/source/DatabaseConfiguration.java b/impl/json/src/test/java/config/source/DatabaseConfiguration.java new file mode 100644 index 0000000..298886f --- /dev/null +++ b/impl/json/src/test/java/config/source/DatabaseConfiguration.java @@ -0,0 +1,35 @@ +package config.source; + +import cc.carm.lib.configuration.core.ConfigurationRoot; +import cc.carm.lib.configuration.core.annotation.ConfigComment; +import cc.carm.lib.configuration.core.annotation.ConfigPath; +import cc.carm.lib.configuration.core.value.ConfigValue; +import cc.carm.lib.configuration.core.value.type.ConfiguredValue; + +@ConfigComment({"数据库配置", " 用于提供数据库连接,进行数据库操作。"}) +public class DatabaseConfiguration extends ConfigurationRoot { + + @ConfigPath("driver") + @ConfigComment({ + "数据库驱动配置,请根据数据库类型设置。", + "- MySQL: com.mysql.cj.jdbc.Driver", + "- MariaDB(推荐): org.mariadb.jdbc.Driver", + }) + protected static final ConfigValue DRIVER_NAME = ConfiguredValue.of( + String.class, "com.mysql.cj.jdbc.Driver" + ); + + protected static final ConfigValue HOST = ConfiguredValue.of(String.class, "127.0.0.1"); + protected static final ConfigValue PORT = ConfiguredValue.of(Integer.class, 3306); + + protected static final ConfigValue DATABASE = ConfiguredValue.of(String.class, "minecraft"); + protected static final ConfigValue USERNAME = ConfiguredValue.of(String.class, "root"); + protected static final ConfigValue PASSWORD = ConfiguredValue.of(String.class, "password"); + + protected static final ConfigValue EXTRA = ConfiguredValue.of(String.class, "?useSSL=false"); + + protected static String buildJDBC() { + return String.format("jdbc:mysql://%s:%s/%s%s", HOST.get(), PORT.get(), DATABASE.get(), EXTRA.get()); + } + +} diff --git a/impl/json/src/test/java/config/source/DemoConfiguration.java b/impl/json/src/test/java/config/source/DemoConfiguration.java new file mode 100644 index 0000000..29b49bc --- /dev/null +++ b/impl/json/src/test/java/config/source/DemoConfiguration.java @@ -0,0 +1,73 @@ +package config.source; + +import cc.carm.lib.configuration.core.ConfigurationRoot; +import cc.carm.lib.configuration.core.annotation.ConfigComment; +import cc.carm.lib.configuration.core.annotation.ConfigPath; +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.ConfiguredSection; +import cc.carm.lib.configuration.core.value.type.ConfiguredValue; +import config.model.TestModel; + +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.UUID; + +public class DemoConfiguration extends ConfigurationRoot { + + @ConfigPath(root = true) + @ConfigComment({ + "有时候,需要在配置文件最上面显示点东西,", + "此时就推荐添加一个可以用到但并不重要的参数到最上面", + "并给他添加对应的注释。" + }) + protected static final ConfigValue VERSION = ConfiguredValue.of(Double.class, 1.0D); + + // 可以直接写静态内部类,并通过 Class 声明。 + public static final Class SUB_TEST = Sub.class; + + @ConfigPath("user") // 通过注解规定配置文件中的路径,若不进行注解则以变量名自动生成。 + @ConfigComment({"Section类型数据测试"}) // 通过注解给配置添加注释。 + public static final ConfigValue MODEL_TEST = ConfiguredSection + .builder(TestModel.class) + .defaults(new TestModel("Carm", UUID.randomUUID())) + .parseValue((section, defaultValue) -> TestModel.deserialize(section)) + .serializeValue(TestModel::serialize).build(); + + // 子配置文件 + @ConfigPath("database") + public static final Class DB_CONFIG = DatabaseConfiguration.class; + + @ConfigComment({"[ID-UUID] 对照表", "", "用于测试Map类型的解析与序列化保存"}) + public static final ConfigValue> USERS = ConfiguredMap + .builder(Integer.class, UUID.class).fromString() + .parseKey(Integer::parseInt) + .parseValue(v -> Objects.requireNonNull(UUID.fromString(v))) + .build(); + + + public static class Sub extends ConfigurationRoot { + + @ConfigPath(value = "uuid-value", root = true) + public static final ConfigValue UUID_CONFIG_VALUE = ConfiguredValue + .builder(UUID.class).fromString() + .parseValue((data, defaultValue) -> UUID.fromString(data)) + .build(); + + public static final Class NOTHING = That.class; + + public static class That extends ConfigurationRoot { + + public static final ConfigValue> OPERATORS = ConfiguredList + .builder(UUID.class).fromString() + .parseValue(s -> Objects.requireNonNull(UUID.fromString(s))) + .build(); + + } + + } + + +} diff --git a/impl/yaml/pom.xml b/impl/yaml/pom.xml index f096360..9eb8974 100644 --- a/impl/yaml/pom.xml +++ b/impl/yaml/pom.xml @@ -5,7 +5,7 @@ easyconfiguration-parent cc.carm.lib - 2.0.0 + 2.1.0 ../../pom.xml 4.0.0 diff --git a/impl/yaml/src/main/java/cc/carm/lib/configuration/EasyConfiguration.java b/impl/yaml/src/main/java/cc/carm/lib/configuration/EasyConfiguration.java index c27f993..6105812 100644 --- a/impl/yaml/src/main/java/cc/carm/lib/configuration/EasyConfiguration.java +++ b/impl/yaml/src/main/java/cc/carm/lib/configuration/EasyConfiguration.java @@ -1,14 +1,14 @@ package cc.carm.lib.configuration; -import cc.carm.lib.configuration.yaml.YamlConfigProvider; +import cc.carm.lib.configuration.yaml.YAMLConfigProvider; import java.io.File; import java.io.IOException; public class EasyConfiguration { - public static YamlConfigProvider from(File file, String source) { - YamlConfigProvider provider = new YamlConfigProvider(file); + public static YAMLConfigProvider from(File file, String source) { + YAMLConfigProvider provider = new YAMLConfigProvider(file); try { provider.initializeFile(source); provider.initializeConfig(); @@ -18,15 +18,15 @@ public class EasyConfiguration { return provider; } - public static YamlConfigProvider from(File file) { + public static YAMLConfigProvider from(File file) { return from(file, file.getName()); } - public static YamlConfigProvider from(String fileName) { + public static YAMLConfigProvider from(String fileName) { return from(fileName, fileName); } - public static YamlConfigProvider from(String fileName, String source) { + public static YAMLConfigProvider from(String fileName, String source) { return from(new File(fileName), source); } diff --git a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YamlComments.java b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLComments.java similarity index 93% rename from impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YamlComments.java rename to impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLComments.java index 96946ea..3206f8e 100644 --- a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YamlComments.java +++ b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLComments.java @@ -7,7 +7,7 @@ import org.jetbrains.annotations.Nullable; import java.util.HashMap; import java.util.Map; -public class YamlComments implements CommentsProvider { +public class YAMLComments implements CommentsProvider { Map comments = new HashMap<>(); diff --git a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YamlConfigProvider.java b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLConfigProvider.java similarity index 74% rename from impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YamlConfigProvider.java rename to impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLConfigProvider.java index 85019f8..f5a976f 100644 --- a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YamlConfigProvider.java +++ b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLConfigProvider.java @@ -8,13 +8,13 @@ import org.jetbrains.annotations.Nullable; import java.io.File; -public class YamlConfigProvider extends FileConfigProvider { +public class YAMLConfigProvider extends FileConfigProvider { - protected final @NotNull YamlComments comments = new YamlComments(); + protected final @NotNull YAMLComments comments = new YAMLComments(); protected CommentedYamlConfiguration configuration; - protected ConfigInitializer initializer; + protected ConfigInitializer initializer; - public YamlConfigProvider(@NotNull File file) { + public YAMLConfigProvider(@NotNull File file) { super(file); } @@ -24,8 +24,8 @@ public class YamlConfigProvider extends FileConfigProvider { } @Override - public @NotNull YamlSectionWrapper getConfiguration() { - return YamlSectionWrapper.of(configuration); + public @NotNull YAMLSectionWrapper getConfiguration() { + return YAMLSectionWrapper.of(configuration); } @Override @@ -49,7 +49,7 @@ public class YamlConfigProvider extends FileConfigProvider { } @Override - public @NotNull ConfigInitializer getInitializer() { + public @NotNull ConfigInitializer getInitializer() { return this.initializer; } diff --git a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YamlSectionWrapper.java b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLSectionWrapper.java similarity index 90% rename from impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YamlSectionWrapper.java rename to impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLSectionWrapper.java index c4ac9ec..42198bc 100644 --- a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YamlSectionWrapper.java +++ b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLSectionWrapper.java @@ -12,17 +12,17 @@ import java.util.List; import java.util.Map; import java.util.Set; -public class YamlSectionWrapper implements ConfigurationWrapper { +public class YAMLSectionWrapper implements ConfigurationWrapper { private final ConfigurationSection section; - private YamlSectionWrapper(ConfigurationSection section) { + private YAMLSectionWrapper(ConfigurationSection section) { this.section = section; } @Contract("!null->!null") - public static @Nullable YamlSectionWrapper of(@Nullable ConfigurationSection section) { - return section == null ? null : new YamlSectionWrapper(section); + public static @Nullable YAMLSectionWrapper of(@Nullable ConfigurationSection section) { + return section == null ? null : new YAMLSectionWrapper(section); } @Override diff --git a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLValue.java b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLValue.java index 9cbfefc..6db05fc 100644 --- a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLValue.java +++ b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/YAMLValue.java @@ -2,30 +2,28 @@ package cc.carm.lib.configuration.yaml; import cc.carm.lib.configuration.core.source.ConfigurationProvider; import cc.carm.lib.configuration.core.value.impl.CachedConfigValue; -import cc.carm.lib.configuration.yaml.YamlConfigProvider; -import cc.carm.lib.configuration.yaml.YamlSectionWrapper; -import cc.carm.lib.configuration.yaml.builder.YamlConfigBuilder; +import cc.carm.lib.configuration.yaml.builder.YAMLConfigBuilder; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public abstract class YAMLValue extends CachedConfigValue { - public static @NotNull YamlConfigBuilder builder() { - return new YamlConfigBuilder(); + public static @NotNull YAMLConfigBuilder builder() { + return new YAMLConfigBuilder(); } - public YAMLValue(@Nullable YamlConfigProvider provider, + public YAMLValue(@Nullable YAMLConfigProvider provider, @Nullable String configPath, @NotNull String[] comments, @Nullable T defaultValue) { super(provider, configPath, comments, defaultValue); } - public YamlConfigProvider getYAMLProvider() { + public YAMLConfigProvider getYAMLProvider() { ConfigurationProvider provider = getProvider(); - if (provider instanceof YamlConfigProvider) return (YamlConfigProvider) getProvider(); - else throw new IllegalStateException("Provider is not a SpigotConfigProvider"); + if (provider instanceof YAMLConfigProvider) return (YAMLConfigProvider) getProvider(); + else throw new IllegalStateException("Provider is not a YamlConfigProvider"); } - public YamlSectionWrapper getYAMLConfig() { + public YAMLSectionWrapper getYAMLConfig() { return getYAMLProvider().getConfiguration(); } diff --git a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/builder/AbstractYAMLBuilder.java b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/builder/AbstractYAMLBuilder.java index 9a2ac1f..1da838f 100644 --- a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/builder/AbstractYAMLBuilder.java +++ b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/builder/AbstractYAMLBuilder.java @@ -1,13 +1,13 @@ package cc.carm.lib.configuration.yaml.builder; import cc.carm.lib.configuration.core.builder.AbstractConfigBuilder; -import cc.carm.lib.configuration.yaml.YamlConfigProvider; +import cc.carm.lib.configuration.yaml.YAMLConfigProvider; public abstract class AbstractYAMLBuilder> - extends AbstractConfigBuilder { + extends AbstractConfigBuilder { public AbstractYAMLBuilder() { - super(YamlConfigProvider.class); + super(YAMLConfigProvider.class); } } diff --git a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/builder/YamlConfigBuilder.java b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/builder/YAMLConfigBuilder.java similarity index 90% rename from impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/builder/YamlConfigBuilder.java rename to impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/builder/YAMLConfigBuilder.java index ac4ee06..51ffd9d 100644 --- a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/builder/YamlConfigBuilder.java +++ b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/builder/YAMLConfigBuilder.java @@ -5,7 +5,7 @@ import cc.carm.lib.configuration.yaml.builder.serializable.SerializableBuilder; import org.bspfsystems.yamlconfiguration.serialization.ConfigurationSerializable; import org.jetbrains.annotations.NotNull; -public class YamlConfigBuilder extends ConfigBuilder { +public class YAMLConfigBuilder extends ConfigBuilder { public @NotNull SerializableBuilder ofSerializable(@NotNull Class valueClass) { return new SerializableBuilder<>(valueClass); diff --git a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/value/ConfiguredSerializable.java b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/value/ConfiguredSerializable.java index 9891f12..03de303 100644 --- a/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/value/ConfiguredSerializable.java +++ b/impl/yaml/src/main/java/cc/carm/lib/configuration/yaml/value/ConfiguredSerializable.java @@ -1,7 +1,7 @@ package cc.carm.lib.configuration.yaml.value; import cc.carm.lib.configuration.yaml.YAMLValue; -import cc.carm.lib.configuration.yaml.YamlConfigProvider; +import cc.carm.lib.configuration.yaml.YAMLConfigProvider; import org.bspfsystems.yamlconfiguration.serialization.ConfigurationSerializable; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -21,7 +21,7 @@ public class ConfiguredSerializable extends protected final @NotNull Class valueClass; - public ConfiguredSerializable(@Nullable YamlConfigProvider provider, + public ConfiguredSerializable(@Nullable YAMLConfigProvider provider, @Nullable String configPath, @NotNull String[] comments, @NotNull Class valueClass, @Nullable T defaultValue) { super(provider, configPath, comments, defaultValue); diff --git a/impl/yaml/src/test/java/config/ConfigTester.java b/impl/yaml/src/test/java/config/ConfigTester.java index 25253af..96660ff 100644 --- a/impl/yaml/src/test/java/config/ConfigTester.java +++ b/impl/yaml/src/test/java/config/ConfigTester.java @@ -1,7 +1,7 @@ package config; import cc.carm.lib.configuration.EasyConfiguration; -import cc.carm.lib.configuration.yaml.YamlConfigProvider; +import cc.carm.lib.configuration.yaml.YAMLConfigProvider; import config.model.AbstractModel; import config.model.SomeModel; import config.model.TestModel; @@ -23,7 +23,7 @@ public class ConfigTester { ConfigurationSerialization.registerClass(SomeModel.class); } - protected final YamlConfigProvider provider = EasyConfiguration.from("target/config.yml", "config.yml"); + protected final YAMLConfigProvider provider = EasyConfiguration.from("target/config.yml", "config.yml"); @Test public void onTest() { diff --git a/pom.xml b/pom.xml index dd5008c..70fe138 100644 --- a/pom.xml +++ b/pom.xml @@ -15,10 +15,11 @@ cc.carm.lib easyconfiguration-parent pom - 2.0.0 + 2.1.0 core impl/yaml + impl/json EasyConfiguration