From 5d60a1bc48f471b6c587622e538044358094b582 Mon Sep 17 00:00:00 2001 From: Simon Rigby Date: Sat, 12 Feb 2011 01:44:03 +0000 Subject: [PATCH] Adds removeProperty(String path) and getEmptyNode() --- .../org/bukkit/util/config/Configuration.java | 9 +++++ .../bukkit/util/config/ConfigurationNode.java | 33 +++++++++++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/bukkit/util/config/Configuration.java b/src/main/java/org/bukkit/util/config/Configuration.java index 0cb63f15..427a94d1 100644 --- a/src/main/java/org/bukkit/util/config/Configuration.java +++ b/src/main/java/org/bukkit/util/config/Configuration.java @@ -120,4 +120,13 @@ public class Configuration extends ConfigurationNode { throw new ConfigurationException("Root document must be an key-value structure"); } } + + /** + * This method returns an empty ConfigurationNode for using as a + * default in methods that select a node from a node list. + * @return + */ + public static ConfigurationNode getEmptyNode() { + return new ConfigurationNode(new HashMap()); + } } diff --git a/src/main/java/org/bukkit/util/config/ConfigurationNode.java b/src/main/java/org/bukkit/util/config/ConfigurationNode.java index 65fe3fba..f65490c7 100644 --- a/src/main/java/org/bukkit/util/config/ConfigurationNode.java +++ b/src/main/java/org/bukkit/util/config/ConfigurationNode.java @@ -13,7 +13,7 @@ import java.util.Map; public class ConfigurationNode { protected Map root; - ConfigurationNode(Map root) { + protected ConfigurationNode(Map root) { this.root = root; } @@ -478,4 +478,33 @@ public class ConfigurationNode { return null; } } -} + + /** + * Remove the property at a location. This will override existing + * configuration data to have it conform to key/value mappings. + * + * @param path + */ + @SuppressWarnings("unchecked") + public void removeProperty(String path) { + if (!path.contains(".")) { + root.remove(path); + return; + } + + String[] parts = path.split("\\."); + Map node = root; + + for (int i = 0; i < parts.length; i++) { + Object o = node.get(parts[i]); + + // Found our target! + if (i == parts.length - 1) { + node.remove(parts[i]); + return; + } + + node = (Map)o; + } + } +} \ No newline at end of file