diff options
author | Dinnerbone <dinnerbone@dinnerbone.com> | 2011-07-18 20:52:38 +0100 |
---|---|---|
committer | Dinnerbone <dinnerbone@dinnerbone.com> | 2011-07-18 20:52:38 +0100 |
commit | 40bbf19ca2a9434a69b9319d25bb4cdf51a95602 (patch) | |
tree | aea17dc7834d7938e60012faba739a393182b312 | |
parent | d894e11b519016f7193c4f1446b25415de19bb33 (diff) | |
download | bukkit-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
-rw-r--r-- | src/main/java/org/bukkit/permissions/Permission.java | 17 |
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; + } } |