diff --git a/core/src/main/java/cc/carm/lib/configuration/source/section/ConfigureSection.java b/core/src/main/java/cc/carm/lib/configuration/source/section/ConfigureSection.java index 8da24a1..bf58d38 100644 --- a/core/src/main/java/cc/carm/lib/configuration/source/section/ConfigureSection.java +++ b/core/src/main/java/cc/carm/lib/configuration/source/section/ConfigureSection.java @@ -2,7 +2,10 @@ package cc.carm.lib.configuration.source.section; import cc.carm.lib.configuration.function.DataFunction; import cc.carm.lib.configuration.source.option.StandardOptions; -import org.jetbrains.annotations.*; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.UnmodifiableView; import java.util.*; import java.util.function.Function; @@ -37,11 +40,15 @@ public interface ConfigureSection { return typeClass.isInstance(get(path)); } - boolean isList(@NotNull String path); + default boolean isList(@NotNull String path) { + return isType(path, List.class); + } @Nullable List getList(@NotNull String path); - boolean isSection(@NotNull String path); + default boolean isSection(@NotNull String path) { + return isType(path, ConfigureSection.class); + } @Nullable ConfigureSection getSection(@NotNull String path); diff --git a/features/section/src/main/java/cc/carm/lib/configuration/source/section/MemorySection.java b/features/section/src/main/java/cc/carm/lib/configuration/source/section/MemorySection.java index f682d68..231cf1a 100644 --- a/features/section/src/main/java/cc/carm/lib/configuration/source/section/MemorySection.java +++ b/features/section/src/main/java/cc/carm/lib/configuration/source/section/MemorySection.java @@ -96,22 +96,12 @@ public class MemorySection implements ConfigureSection { return section == this ? data.get(path) : section.get(childPath(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 isSection(@NotNull String path) { - return get(path) instanceof ConfigureSection; - } - @Override public @Nullable ConfigureSection getSection(@NotNull String path) { Object val = get(path); diff --git a/providers/gson/src/main/java/cc/carm/lib/configuration/source/json/JSONSource.java b/providers/gson/src/main/java/cc/carm/lib/configuration/source/json/JSONSource.java index abbd339..faaf6cf 100644 --- a/providers/gson/src/main/java/cc/carm/lib/configuration/source/json/JSONSource.java +++ b/providers/gson/src/main/java/cc/carm/lib/configuration/source/json/JSONSource.java @@ -14,7 +14,7 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.Objects; -public class JSONSource extends FileConfigSource, JSONSource> { +public class JSONSource extends FileConfigSource, JSONSource> { public static final @NotNull Gson DEFAULT_GSON = new GsonBuilder() .serializeNulls().disableHtmlEscaping().setPrettyPrinting() @@ -53,7 +53,7 @@ public class JSONSource extends FileConfigSource, JSONS } @Override - public @NotNull Map original() { + public @NotNull Map original() { return section().data(); } diff --git a/providers/hocon/pom.xml b/providers/hocon/pom.xml index 992ec48..a53d899 100644 --- a/providers/hocon/pom.xml +++ b/providers/hocon/pom.xml @@ -6,7 +6,7 @@ cc.carm.lib easyconfiguration-parent - 3.9.1 + 4.0.0 ../../pom.xml @@ -25,6 +25,24 @@ ${project.parent.version} compile + + ${project.parent.groupId} + easyconfiguration-feature-commentable + ${project.parent.version} + compile + + + ${project.parent.groupId} + easyconfiguration-feature-file + ${project.parent.version} + compile + + + ${project.parent.groupId} + easyconfiguration-feature-section + ${project.parent.version} + compile + ${project.parent.groupId} diff --git a/providers/hocon/src/main/java/cc/carm/lib/configuration/EasyConfiguration.java b/providers/hocon/src/deprecated/hocon/EasyConfiguration.java similarity index 100% rename from providers/hocon/src/main/java/cc/carm/lib/configuration/EasyConfiguration.java rename to providers/hocon/src/deprecated/hocon/EasyConfiguration.java diff --git a/providers/hocon/src/main/java/cc/carm/lib/configuration/hocon/HOCONConfigWrapper.java b/providers/hocon/src/deprecated/hocon/HOCONConfigWrapper.java similarity index 100% rename from providers/hocon/src/main/java/cc/carm/lib/configuration/hocon/HOCONConfigWrapper.java rename to providers/hocon/src/deprecated/hocon/HOCONConfigWrapper.java diff --git a/providers/hocon/src/main/java/cc/carm/lib/configuration/hocon/HOCONFileConfigProvider.java b/providers/hocon/src/deprecated/hocon/HOCONFileConfigProvider.java similarity index 100% rename from providers/hocon/src/main/java/cc/carm/lib/configuration/hocon/HOCONFileConfigProvider.java rename to providers/hocon/src/deprecated/hocon/HOCONFileConfigProvider.java diff --git a/providers/hocon/src/main/java/cc/carm/lib/configuration/hocon/exception/HOCONGetValueException.java b/providers/hocon/src/deprecated/hocon/exception/HOCONGetValueException.java similarity index 100% rename from providers/hocon/src/main/java/cc/carm/lib/configuration/hocon/exception/HOCONGetValueException.java rename to providers/hocon/src/deprecated/hocon/exception/HOCONGetValueException.java diff --git a/providers/hocon/src/main/java/cc/carm/lib/configuration/hocon/util/HOCONUtils.java b/providers/hocon/src/deprecated/hocon/util/HOCONUtils.java similarity index 100% rename from providers/hocon/src/main/java/cc/carm/lib/configuration/hocon/util/HOCONUtils.java rename to providers/hocon/src/deprecated/hocon/util/HOCONUtils.java diff --git a/providers/hocon/src/main/java/cc/carm/lib/configuration/source/hocon/HOCONSection.java b/providers/hocon/src/main/java/cc/carm/lib/configuration/source/hocon/HOCONSection.java new file mode 100644 index 0000000..00a24a0 --- /dev/null +++ b/providers/hocon/src/main/java/cc/carm/lib/configuration/source/hocon/HOCONSection.java @@ -0,0 +1,69 @@ +package cc.carm.lib.configuration.source.hocon; + +import cc.carm.lib.configuration.source.section.ConfigureSection; +import com.typesafe.config.Config; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.UnmodifiableView; + +import java.util.List; +import java.util.Map; + +public class HOCONSection implements ConfigureSection { + + protected final @NotNull HOCONSource source; + protected final @Nullable HOCONSection parent; + protected final @NotNull Config data; + + public HOCONSection(@NotNull HOCONSource source, @Nullable HOCONSection parent, + @NotNull Config data) { + this.source = source; + this.parent = parent; + this.data = data; + } + + public @NotNull Config data() { + return this.data; + } + + @Override + public @NotNull HOCONSource source() { + return this.source; + } + + @Override + public @Nullable HOCONSection parent() { + return this.parent; + } + + @Override + public @NotNull @UnmodifiableView Map getValues(boolean deep) { + return data().root().unwrapped(); + } + + @Override + public void set(@NotNull String path, @Nullable Object value) { + + } + + @Override + public boolean contains(@NotNull String path) { + return data().hasPath(path); + } + + @Override + public @Nullable List getList(@NotNull String path) { + return data().getAnyRefList(path); + } + + @Override + public @Nullable HOCONSection getSection(@NotNull String path) { + return data().getConfig(path) == null ? null : new HOCONSection(source, this, data().getConfig(path)); + } + + @Override + public @Nullable Object get(@NotNull String path) { + return data().getAnyRef(path); + } + +} diff --git a/providers/hocon/src/main/java/cc/carm/lib/configuration/source/hocon/HOCONSource.java b/providers/hocon/src/main/java/cc/carm/lib/configuration/source/hocon/HOCONSource.java new file mode 100644 index 0000000..76383c0 --- /dev/null +++ b/providers/hocon/src/main/java/cc/carm/lib/configuration/source/hocon/HOCONSource.java @@ -0,0 +1,44 @@ +package cc.carm.lib.configuration.source.hocon; + +import cc.carm.lib.configuration.source.ConfigurationHolder; +import cc.carm.lib.configuration.source.section.ConfigureSource; +import com.typesafe.config.Config; +import org.jetbrains.annotations.NotNull; + +import java.util.Objects; + +public class HOCONSource extends ConfigureSource { + + + private HOCONSection rootSection; + + protected HOCONSource(@NotNull ConfigurationHolder holder, long lastUpdateMillis) { + super(holder, lastUpdateMillis); + } + + @Override + protected HOCONSource self() { + return this; + } + + @Override + public @NotNull Config original() { + return section().data(); + } + + @Override + public @NotNull HOCONSection section() { + return Objects.requireNonNull(rootSection, "RootSection is not initialized"); + } + + @Override + public void save() throws Exception { + + } + + @Override + protected void onReload() throws Exception { + + } + +} diff --git a/providers/hocon/src/test/java/online/flowerinsnow/test/easyconfiguration/HOCONTest.java b/providers/hocon/src/test/java/online/flowerinsnow/test/easyconfiguration/HOCONTest.java index 693120b..fcdbc34 100644 --- a/providers/hocon/src/test/java/online/flowerinsnow/test/easyconfiguration/HOCONTest.java +++ b/providers/hocon/src/test/java/online/flowerinsnow/test/easyconfiguration/HOCONTest.java @@ -1,25 +1,18 @@ package online.flowerinsnow.test.easyconfiguration; -import cc.carm.lib.configuration.EasyConfiguration; -import cc.carm.lib.configuration.demo.tests.ConfigurationTest; -import cc.carm.lib.configuration.hocon.HOCONFileConfigProvider; -import org.junit.Test; - -import java.io.File; - public class HOCONTest { - @Test - public void onTest() { - HOCONFileConfigProvider provider = EasyConfiguration.from(new File("target/hocon.conf")); - - ConfigurationTest.testDemo(provider); - ConfigurationTest.testInner(provider); - - try { - provider.save(); - provider.reload(); - } catch (Exception e) { - e.printStackTrace(); - } - } +// @Test +// public void onTest() { +// HOCONFileConfigProvider provider = EasyConfiguration.from(new File("target/hocon.conf")); +// +// ConfigurationTest.testDemo(provider); +// ConfigurationTest.testInner(provider); +// +// try { +// provider.save(); +// provider.reload(); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } } diff --git a/providers/yaml/src/main/java/cc/carm/lib/configuration/source/yaml/YAMLSource.java b/providers/yaml/src/main/java/cc/carm/lib/configuration/source/yaml/YAMLSource.java index 0381923..3ae6e71 100644 --- a/providers/yaml/src/main/java/cc/carm/lib/configuration/source/yaml/YAMLSource.java +++ b/providers/yaml/src/main/java/cc/carm/lib/configuration/source/yaml/YAMLSource.java @@ -27,7 +27,7 @@ import java.nio.charset.StandardCharsets; import java.util.*; import java.util.regex.Pattern; -public class YAMLSource extends FileConfigSource, YAMLSource> implements CommentedSection { +public class YAMLSource extends FileConfigSource, YAMLSource> implements CommentedSection { protected final @NotNull YamlConstructor yamlConstructor; protected final @NotNull YamlRepresenter yamlRepresenter; @@ -60,7 +60,7 @@ public class YAMLSource extends FileConfigSource, YAMLS } @Override - public @NotNull Map original() { + public @NotNull Map original() { return section().data(); }