summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/bukkit/configuration/ConfigurationSection.java11
-rw-r--r--src/main/java/org/bukkit/configuration/MemorySection.java14
-rw-r--r--src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java14
-rw-r--r--src/test/java/org/bukkit/configuration/ConfigurationTest.java1
4 files changed, 39 insertions, 1 deletions
diff --git a/src/main/java/org/bukkit/configuration/ConfigurationSection.java b/src/main/java/org/bukkit/configuration/ConfigurationSection.java
index 0843c04e..3bd6fe37 100644
--- a/src/main/java/org/bukkit/configuration/ConfigurationSection.java
+++ b/src/main/java/org/bukkit/configuration/ConfigurationSection.java
@@ -164,6 +164,17 @@ public interface ConfigurationSection {
* @return Newly created section
*/
public ConfigurationSection createSection(String path);
+
+ /**
+ * Creates a {@link ConfigurationSection} at the specified path, with specified values.
+ * <p>
+ * Any value that was previously set at this path will be overwritten. If the
+ * previous value was itself a {@link ConfigurationSection}, it will be orphaned.
+ *
+ * @param path Path to create the section at.
+ * @return Newly created section
+ */
+ public ConfigurationSection createSection(String path, Map<String, Object> map);
// Primitives
/**
diff --git a/src/main/java/org/bukkit/configuration/MemorySection.java b/src/main/java/org/bukkit/configuration/MemorySection.java
index 46965c23..68254d0a 100644
--- a/src/main/java/org/bukkit/configuration/MemorySection.java
+++ b/src/main/java/org/bukkit/configuration/MemorySection.java
@@ -266,6 +266,20 @@ public class MemorySection implements ConfigurationSection {
return section.createSection(key);
}
}
+
+ public ConfigurationSection createSection(String path, Map<String, Object> map) {
+ ConfigurationSection section = createSection(path);
+
+ for(Map.Entry<String, Object> entry : map.entrySet()) {
+ if(entry.getValue() instanceof Map) {
+ section.createSection(entry.getKey(), (Map<String, Object>)entry.getValue());
+ } else {
+ section.set(entry.getKey(), entry.getValue());
+ }
+ }
+
+ return section;
+ }
// Primitives
public String getString(String path) {
diff --git a/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java b/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java
index 6834bfda..6810f817 100644
--- a/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java
+++ b/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java
@@ -3,6 +3,7 @@ package org.bukkit.configuration;
import org.bukkit.Material;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.inventory.ItemStack;
@@ -183,6 +184,19 @@ public abstract class ConfigurationSectionTest {
}
@Test
+ public void testSectionMap() {
+ ConfigurationSection config = getConfigurationSection();
+ Map<String, Object> testMap = new LinkedHashMap<String, Object>();
+
+ testMap.put("string", "Hello World");
+ testMap.put("integer", 15);
+
+ config.createSection("test.path", testMap);
+
+ assertEquals(testMap, config.getConfigurationSection("test.path").getValues(false));
+ }
+
+ @Test
public void testGetString_String() {
ConfigurationSection section = getConfigurationSection();
String key = "exists";
diff --git a/src/test/java/org/bukkit/configuration/ConfigurationTest.java b/src/test/java/org/bukkit/configuration/ConfigurationTest.java
index 20e6f21d..a1671d35 100644
--- a/src/test/java/org/bukkit/configuration/ConfigurationTest.java
+++ b/src/test/java/org/bukkit/configuration/ConfigurationTest.java
@@ -1,7 +1,6 @@
package org.bukkit.configuration;
import java.util.LinkedHashMap;
-import java.io.File;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;