diff --git a/core/pom.xml b/core/pom.xml
index 05a3687..3d0c346 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -5,7 +5,7 @@
easyconfiguration-parent
cc.carm.lib
- 4.0.1
+ 4.0.2
4.0.0
diff --git a/core/src/main/java/cc/carm/lib/configuration/source/ConfigurationHolder.java b/core/src/main/java/cc/carm/lib/configuration/source/ConfigurationHolder.java
index 851c846..8502a90 100644
--- a/core/src/main/java/cc/carm/lib/configuration/source/ConfigurationHolder.java
+++ b/core/src/main/java/cc/carm/lib/configuration/source/ConfigurationHolder.java
@@ -7,6 +7,7 @@ import cc.carm.lib.configuration.source.loader.ConfigurationInitializer;
import cc.carm.lib.configuration.source.meta.ConfigurationMetaHolder;
import cc.carm.lib.configuration.source.meta.ConfigurationMetadata;
import cc.carm.lib.configuration.source.option.ConfigurationOptionHolder;
+import cc.carm.lib.configuration.source.option.StandardOptions;
import cc.carm.lib.configuration.source.section.ConfigureSource;
import cc.carm.lib.configuration.value.ValueManifest;
import org.jetbrains.annotations.Contract;
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 bf58d38..b1de0a1 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
@@ -1,7 +1,6 @@
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.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -14,14 +13,8 @@ import java.util.stream.Stream;
public interface ConfigureSection {
- @NotNull ConfigureSource, ?, ?> source();
-
@Nullable ConfigureSection parent();
- default char separator() {
- return source().holder().options().get(StandardOptions.PATH_SEPARATOR);
- }
-
@NotNull
@UnmodifiableView
default Set getKeys(boolean deep) {
diff --git a/core/src/main/java/cc/carm/lib/configuration/source/section/ConfigureSource.java b/core/src/main/java/cc/carm/lib/configuration/source/section/ConfigureSource.java
index 1780105..6edf142 100644
--- a/core/src/main/java/cc/carm/lib/configuration/source/section/ConfigureSource.java
+++ b/core/src/main/java/cc/carm/lib/configuration/source/section/ConfigureSource.java
@@ -1,6 +1,9 @@
package cc.carm.lib.configuration.source.section;
import cc.carm.lib.configuration.source.ConfigurationHolder;
+import cc.carm.lib.configuration.source.option.StandardOptions;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -24,28 +27,46 @@ public abstract class ConfigureSource<
return holder;
}
-
public void reload() throws Exception {
onReload(); // 调用重写的Reload方法
this.lastUpdateMillis = System.currentTimeMillis();
}
- protected abstract SELF self();
+ @Contract(pure = true)
+ @ApiStatus.Internal
+ protected abstract @NotNull SELF self();
/**
- * @return Original configuration object
+ * @return The original configuration object.
*/
+ @Contract(pure = true)
public abstract @NotNull ORIGINAL original();
/**
- * @return The root {@link ConfigureSection}
+ * @return The root {@link ConfigureSection}, which represents the entire configuration.
*/
public abstract @NotNull SECTION section();
+ /**
+ * Save the whole configuration.
+ *
+ * @throws Exception If any error occurs while saving.
+ */
public abstract void save() throws Exception;
+ /**
+ * Reload the configuration.
+ *
This used for implementation, for external usage, use {@link #reload()}
+ *
+ * @throws Exception If any error occurs while reloading.
+ */
+ @ApiStatus.OverrideOnly
protected abstract void onReload() throws Exception;
+ public char pathSeparator() {
+ return holder().options().get(StandardOptions.PATH_SEPARATOR);
+ }
+
public long getLastUpdateMillis() {
return this.lastUpdateMillis;
}
@@ -54,14 +75,15 @@ public abstract class ConfigureSource<
return getLastUpdateMillis() > parsedTime;
}
+ /**
+ * Source also represents the root section, so it has no parent
+ *
+ * @return null
+ */
@Override
+ @Contract(pure = true, value = "->null")
public @Nullable ConfigureSection parent() {
- return null; // Source also represents the root section, so it has no parent
- }
-
- @Override
- public @NotNull ConfigureSource, ?, ?> source() {
- return self();
+ return null;
}
@Override
@@ -79,21 +101,11 @@ public abstract class ConfigureSource<
return section().contains(path);
}
- @Override
- public boolean isList(@NotNull String path) {
- return section().isList(path);
- }
-
@Override
public @Nullable List> getList(@NotNull String path) {
return section().getList(path);
}
- @Override
- public boolean isSection(@NotNull String path) {
- return section().isSection(path);
- }
-
@Override
public @Nullable ConfigureSection getSection(@NotNull String path) {
return section().getSection(path);
diff --git a/demo/pom.xml b/demo/pom.xml
index dc8bd5f..6fc3c85 100644
--- a/demo/pom.xml
+++ b/demo/pom.xml
@@ -5,7 +5,7 @@
easyconfiguration-parent
cc.carm.lib
- 4.0.1
+ 4.0.2
4.0.0
diff --git a/features/commentable/pom.xml b/features/commentable/pom.xml
index 4b27f03..e3d6329 100644
--- a/features/commentable/pom.xml
+++ b/features/commentable/pom.xml
@@ -6,7 +6,7 @@
cc.carm.lib
easyconfiguration-parent
- 4.0.1
+ 4.0.2
../../pom.xml
diff --git a/features/file/pom.xml b/features/file/pom.xml
index f5ddb79..3045891 100644
--- a/features/file/pom.xml
+++ b/features/file/pom.xml
@@ -6,7 +6,7 @@
cc.carm.lib
easyconfiguration-parent
- 4.0.1
+ 4.0.2
../../pom.xml
diff --git a/features/section/pom.xml b/features/section/pom.xml
index 9f183f6..1f41fab 100644
--- a/features/section/pom.xml
+++ b/features/section/pom.xml
@@ -6,7 +6,7 @@
cc.carm.lib
easyconfiguration-parent
- 4.0.1
+ 4.0.2
../../pom.xml
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 231cf1a..10ba244 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
@@ -53,7 +53,6 @@ public class MemorySection implements ConfigureSection {
return createChild(new LinkedHashMap<>());
}
- @Override
public @NotNull ConfigureSource extends MemorySection, ?, ?> source() {
return this.source;
}
@@ -66,6 +65,10 @@ public class MemorySection implements ConfigureSection {
return this.parent;
}
+ public char pathSeparator() {
+ return source.pathSeparator();
+ }
+
@Override
public @NotNull Map getValues(boolean deep) {
return Collections.unmodifiableMap(deep ? mapChildrenValues(this, null, true) : data());
@@ -109,7 +112,7 @@ public class MemorySection implements ConfigureSection {
}
private MemorySection getSectionFor(String path) {
- int index = path.indexOf(separator());
+ int index = path.indexOf(pathSeparator());
if (index == -1) return this;
String root = path.substring(0, index);
@@ -123,7 +126,7 @@ public class MemorySection implements ConfigureSection {
}
private String childPath(String path) {
- int index = path.indexOf(separator());
+ int index = path.indexOf(pathSeparator());
return (index == -1) ? path : path.substring(index + 1);
}
@@ -138,7 +141,7 @@ public class MemorySection implements ConfigureSection {
@Nullable String parent, boolean deep) {
Map output = new LinkedHashMap<>();
for (Map.Entry entry : section.data().entrySet()) {
- String path = (parent == null ? "" : parent + separator()) + entry.getKey();
+ String path = (parent == null ? "" : parent + pathSeparator()) + entry.getKey();
output.remove(path);
output.put(path, entry.getValue());
if (deep && entry.getValue() instanceof MemorySection) {
diff --git a/features/text/pom.xml b/features/text/pom.xml
index d24ef54..f5d5e0e 100644
--- a/features/text/pom.xml
+++ b/features/text/pom.xml
@@ -6,7 +6,7 @@
cc.carm.lib
easyconfiguration-parent
- 4.0.1
+ 4.0.2
../../pom.xml
diff --git a/features/versioned/pom.xml b/features/versioned/pom.xml
index c725fcf..e9337d5 100644
--- a/features/versioned/pom.xml
+++ b/features/versioned/pom.xml
@@ -6,7 +6,7 @@
cc.carm.lib
easyconfiguration-parent
- 4.0.1
+ 4.0.2
../../pom.xml
diff --git a/pom.xml b/pom.xml
index 9e9bc66..4052d9a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,7 +15,7 @@
cc.carm.lib
easyconfiguration-parent
pom
- 4.0.1
+ 4.0.2
core
features/section
diff --git a/providers/gson/pom.xml b/providers/gson/pom.xml
index 0c02fa0..6dea304 100644
--- a/providers/gson/pom.xml
+++ b/providers/gson/pom.xml
@@ -5,7 +5,7 @@
easyconfiguration-parent
cc.carm.lib
- 4.0.1
+ 4.0.2
../../pom.xml
4.0.0
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 faaf6cf..22e8f50 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
@@ -48,7 +48,7 @@ public class JSONSource extends FileConfigSource
easyconfiguration-parent
cc.carm.lib
- 4.0.1
+ 4.0.2
../../pom.xml
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 0df42c1..7b0cc09 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
@@ -4,7 +4,6 @@ import cc.carm.lib.configuration.commentable.Commentable;
import cc.carm.lib.configuration.commentable.CommentableOptions;
import cc.carm.lib.configuration.source.ConfigurationHolder;
import cc.carm.lib.configuration.source.file.FileConfigSource;
-import cc.carm.lib.configuration.source.option.StandardOptions;
import cc.carm.lib.configuration.source.section.ConfigureSection;
import cc.carm.lib.configuration.source.section.MemorySection;
import cc.carm.lib.yamlcommentupdater.CommentedSection;
@@ -56,7 +55,7 @@ public class YAMLSource
}
@Override
- protected YAMLSource self() {
+ protected @NotNull YAMLSource self() {
return null;
}
@@ -70,11 +69,6 @@ public class YAMLSource
return Objects.requireNonNull(this.rootSection, "Root section is not initialized.");
}
- @Override
- public char separator() {
- return holder().options().get(StandardOptions.PATH_SEPARATOR);
- }
-
public @NotNull LoaderOptions loaderOptions() {
return holder().options().get(YAMLOptions.LOADER);
}
@@ -115,7 +109,7 @@ public class YAMLSource
@Override
public void save() throws Exception {
CommentedYAMLWriter writer = new CommentedYAMLWriter(
- String.valueOf(this.separator()),
+ String.valueOf(this.pathSeparator()),
dumperOptions().getIndent(),
holder.options().get(CommentableOptions.COMMENT_EMPTY_VALUE)
);