diff --git a/common/pom.xml b/common/pom.xml
index c313dd7..3636bc3 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -5,7 +5,7 @@
mineconfiguration-parent
cc.carm.lib
- 3.0.1
+ 3.0.2
4.0.0
diff --git a/platform/bukkit/pom.xml b/platform/bukkit/pom.xml
index 6f944e1..d7d87a9 100644
--- a/platform/bukkit/pom.xml
+++ b/platform/bukkit/pom.xml
@@ -5,7 +5,7 @@
mineconfiguration-parent
cc.carm.lib
- 3.0.1
+ 3.0.2
../../pom.xml
4.0.0
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSection.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSection.java
index d87c256..b38c182 100644
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSection.java
+++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSection.java
@@ -6,6 +6,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.UnmodifiableView;
+import java.util.Collections;
import java.util.Map;
import java.util.Set;
@@ -13,12 +14,14 @@ public class BukkitSection implements ConfigureSection {
protected final @NotNull BukkitSource source;
protected final @Nullable BukkitSection parent;
+ protected final @NotNull String path;
protected final @NotNull ConfigurationSection data;
public BukkitSection(@NotNull BukkitSource source, @Nullable BukkitSection parent,
- @NotNull ConfigurationSection data) {
+ @NotNull String path, @NotNull ConfigurationSection data) {
this.source = source;
this.parent = parent;
+ this.path = path;
this.data = data;
}
@@ -31,6 +34,11 @@ public class BukkitSection implements ConfigureSection {
return this.parent;
}
+ @Override
+ public @NotNull String path() {
+ return this.path;
+ }
+
public @NotNull ConfigurationSection data() {
return this.data;
}
@@ -42,11 +50,23 @@ public class BukkitSection implements ConfigureSection {
@Override
public @NotNull @UnmodifiableView Map getValues(boolean deep) {
- return data().getValues(deep);
+
+ Map original = data().getValues(deep);
+ // wrap all ConfigurationSection
+ for (Map.Entry entry : original.entrySet()) {
+ if (entry.getValue() instanceof ConfigurationSection) {
+ original.put(entry.getKey(), createSection(entry.getKey(), (ConfigurationSection) entry.getValue()));
+ }
+ }
+
+ return Collections.unmodifiableMap(original);
}
@Override
public void set(@NotNull String path, @Nullable Object value) {
+ if (value instanceof BukkitSection) { // unwrap
+ value = ((BukkitSection) value).data();
+ }
data().set(path, value);
}
@@ -60,27 +80,24 @@ public class BukkitSection implements ConfigureSection {
Object value = get(path);
if (value instanceof ConfigureSection) {
return (ConfigureSection) value;
- } else if (value instanceof ConfigurationSection) {
- return new BukkitSection(source(), this, (ConfigurationSection) value);
}
return null;
}
- @Override
- public @NotNull ConfigureSection createSection(@NotNull Map, ?> data) {
- throw new UnsupportedOperationException("BukkitSection does not support this operation");
+ public @NotNull BukkitSection createSection(@NotNull String path, @NotNull ConfigurationSection section) {
+ return new BukkitSection(source(), this, path, section);
}
@Override
- public @NotNull ConfigureSection computeSection(@NotNull String path) {
- return new BukkitSection(source(), this, data.createSection(path));
+ public @NotNull BukkitSection createSection(@NotNull String path, @NotNull Map, ?> data) {
+ return createSection(path, data().createSection(path, data));
}
@Override
public @Nullable Object get(@NotNull String path) {
Object value = data().get(path);
- if (value instanceof ConfigurationSection) {
- return new BukkitSection(source(), this, (ConfigurationSection) value);
+ if (value instanceof ConfigurationSection) { // wrap
+ return createSection(path, (ConfigurationSection) value);
}
return value;
}
diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSource.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSource.java
index d2a1db9..74aa81f 100644
--- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSource.java
+++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSource.java
@@ -38,7 +38,7 @@ public class BukkitSource extends FileConfigSource
mineconfiguration-parent
cc.carm.lib
- 3.0.1
+ 3.0.2
../../pom.xml
4.0.0
diff --git a/platform/velocity/pom.xml b/platform/velocity/pom.xml
index d4cf02d..fc030ec 100644
--- a/platform/velocity/pom.xml
+++ b/platform/velocity/pom.xml
@@ -5,7 +5,7 @@
mineconfiguration-parent
cc.carm.lib
- 3.0.1
+ 3.0.2
../../pom.xml
4.0.0
diff --git a/pom.xml b/pom.xml
index 6e43375..731898b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,14 +10,14 @@
UTF-8
UTF-8
- 4.0.6
+ 4.0.7
1.2.0
1.5.12
cc.carm.lib
mineconfiguration-parent
- 3.0.1
+ 3.0.2
pom
common