summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorDinnerbone <dinnerbone@dinnerbone.com>2011-07-18 20:52:38 +0100
committerDinnerbone <dinnerbone@dinnerbone.com>2011-07-18 20:52:38 +0100
commit40bbf19ca2a9434a69b9319d25bb4cdf51a95602 (patch)
treeaea17dc7834d7938e60012faba739a393182b312 /src/main
parentd894e11b519016f7193c4f1446b25415de19bb33 (diff)
downloadbukkit-40bbf19ca2a9434a69b9319d25bb4cdf51a95602.tar
bukkit-40bbf19ca2a9434a69b9319d25bb4cdf51a95602.tar.gz
bukkit-40bbf19ca2a9434a69b9319d25bb4cdf51a95602.tar.lz
bukkit-40bbf19ca2a9434a69b9319d25bb4cdf51a95602.tar.xz
bukkit-40bbf19ca2a9434a69b9319d25bb4cdf51a95602.zip
Correctly report bad values for children perms in plugin.yml
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/bukkit/permissions/Permission.java17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/main/java/org/bukkit/permissions/Permission.java b/src/main/java/org/bukkit/permissions/Permission.java
index d219832a..5acbe220 100644
--- a/src/main/java/org/bukkit/permissions/Permission.java
+++ b/src/main/java/org/bukkit/permissions/Permission.java
@@ -3,6 +3,8 @@ package org.bukkit.permissions;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
/**
* Represents a unique permission that may be attached to a {@link Permissible}
@@ -127,7 +129,7 @@ public class Permission {
if (data.containsKey("children")) {
try {
- children = (Map<String, Boolean>)data.get("children");
+ children = extractChildren(data);
} catch (ClassCastException ex) {
throw new IllegalArgumentException("'children' key is of wrong type", ex);
}
@@ -143,4 +145,17 @@ public class Permission {
return new Permission(name, desc, def, children);
}
+
+ private static Map<String, Boolean> extractChildren(Map<String, Object> data) {
+ Map<String, Boolean> input = (Map<String, Boolean>)data.get("children");
+ Set<Entry<String, Boolean>> entries = input.entrySet();
+
+ for (Map.Entry<String, Boolean> entry : entries) {
+ if (!(entry.getValue() instanceof Boolean)) {
+ throw new IllegalArgumentException("Child '" + entry.getKey() + "' contains invalid value");
+ }
+ }
+
+ return input;
+ }
}