From 8e54bf13b281d1299c3dc33f89940bd3a06d1a30 Mon Sep 17 00:00:00 2001 From: Iaccidentally Date: Mon, 14 Jan 2013 20:02:22 -0500 Subject: Remove Transient :: Formatting Cleanup --- .../permissions/AnjoPermissionsHandler.java | 785 +++++++++++++-------- .../permissions/BukkitPermissions.java | 269 ++++--- .../permissions/PermissionsReaderInterface.java | 88 +-- 3 files changed, 694 insertions(+), 448 deletions(-) (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions') diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java index efad11df4..01f646f00 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java @@ -18,89 +18,94 @@ import org.anjocaido.groupmanager.data.User; import org.anjocaido.groupmanager.utils.PermissionCheckResult; import org.bukkit.entity.Player; + /** * Everything here maintains the model created by Nijikokun - * - * But implemented to use GroupManager system. Which provides instant changes, - * without file access. - * + * + * But implemented to use GroupManager system. Which provides instant changes, without file access. + * * It holds permissions only for one single world. - * + * * @author gabrielcouto, ElgarL */ -public class AnjoPermissionsHandler extends PermissionsReaderInterface { - +public class AnjoPermissionsHandler extends PermissionsReaderInterface +{ WorldDataHolder ph = null; /** * It needs a WorldDataHolder to work with. - * + * * @param holder */ - public AnjoPermissionsHandler(WorldDataHolder holder) { + public AnjoPermissionsHandler(WorldDataHolder holder) + { ph = holder; } /** * A short name method, for permission method. - * + * * @param player * @param permission * @return true if the player has the permission */ @Override - public boolean has(Player player, String permission) { + public boolean has(Player player, String permission) + { return permission(player, permission); } /** * Checks if a player can use that permission node. - * + * * @param player * @param permission * @return true if the player has the permission */ @Override - public boolean permission(Player player, String permission) { + public boolean permission(Player player, String permission) + { return checkUserPermission(ph.getUser(player.getName()).updatePlayer(player), permission); } /** * Checks if a player can use that permission node. - * + * * @param playerName * @param permission * @return true if the player has the permission */ - public boolean permission(String playerName, String permission) { + public boolean permission(String playerName, String permission) + { return checkUserPermission(ph.getUser(playerName), permission); } /** * Returns the name of the group of that player name. - * + * * @param userName * @return String of players group name. */ @Override - public String getGroup(String userName) { + public String getGroup(String userName) + { return ph.getUser(userName).getGroup().getName(); } /** - * Returns All permissions (including inheritance and sub groups) for the - * player, including child nodes from Bukkit. - * + * Returns All permissions (including inheritance and sub groups) for the player, including child nodes from Bukkit. + * * @param userName * @return List of all players permissions. */ @Override - public List getAllPlayersPermissions(String userName) { + public List getAllPlayersPermissions(String userName) + { List perms = new ArrayList(); @@ -110,14 +115,15 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Returns All permissions (including inheritance and sub groups) for the - * player. With or without Bukkit child nodes. - * + * Returns All permissions (including inheritance and sub groups) for the player. With or without Bukkit child + * nodes. + * * @param userName * @return Set of all players permissions. */ @Override - public Set getAllPlayersPermissions(String userName, Boolean includeChildren) { + public Set getAllPlayersPermissions(String userName, Boolean includeChildren) + { Set playerPermArray = new HashSet(); @@ -127,29 +133,37 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { ArrayList alreadyProcessed = new ArrayList(); // fetch all group permissions - for (String group : getGroups(userName)) { + for (String group : getGroups(userName)) + { // Don't process a group more than once. - if (!alreadyProcessed.contains(group)) { + if (!alreadyProcessed.contains(group)) + { alreadyProcessed.add(group); Set groupPermArray = new HashSet(); - if (group.startsWith("g:") && GroupManager.getGlobalGroups().hasGroup(group)) { + if (group.startsWith("g:") && GroupManager.getGlobalGroups().hasGroup(group)) + { // GlobalGroups groupPermArray = populatePerms(GroupManager.getGlobalGroups().getGroupsPermissions(group), includeChildren); - } else { + } + else + { // World Groups groupPermArray = populatePerms(ph.getGroup(group).getPermissionList(), includeChildren); } // Add all group permissions, unless negated by earlier permissions. - for (String perm : groupPermArray) { + for (String perm : groupPermArray) + { boolean negated = (perm.startsWith("-")); // Perm doesn't already exists and there is no negation for it // or It's a negated perm where a normal perm doesn't exists (don't allow inheritance to negate higher perms) if ((!negated && !playerPermArray.contains(perm) && !playerPermArray.contains("-" + perm)) || (negated && !playerPermArray.contains(perm.substring(1)) && !playerPermArray.contains("-" + perm))) + { playerPermArray.add(perm); + } } } @@ -159,7 +173,8 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { return playerPermArray; } - private Set populatePerms(List permsList, boolean includeChildren) { + private Set populatePerms(List permsList, boolean includeChildren) + { // Create a new array so it's modifiable. List perms = new ArrayList(permsList); @@ -167,55 +182,76 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { Boolean allPerms = false; // Allow * node to populate ALL permissions to Bukkit. - if (perms.contains("*")) { + if (perms.contains("*")) + { permArray.addAll(GroupManager.BukkitPermissions.getAllRegisteredPermissions(includeChildren)); allPerms = true; perms.remove("*"); } - for (String perm : perms) { + for (String perm : perms) + { /** - * all permission sets are passed here pre-sorted, alphabetically. - * This means negated nodes will be processed before all permissions - * other than *. + * all permission sets are passed here pre-sorted, alphabetically. This means negated nodes will be + * processed before all permissions other than *. */ boolean negated = perm.startsWith("-"); - if (!permArray.contains(perm)) { + if (!permArray.contains(perm)) + { permArray.add(perm); if ((negated) && (permArray.contains(perm.substring(1)))) + { permArray.remove(perm.substring(1)); + } /** - * Process child nodes if required, - * or this is a negated node AND we used * to include all - * permissions, + * Process child nodes if required, or this is a negated node AND we used * to include all permissions, * in which case we need to remove all children of that node. */ - if ((includeChildren) || (negated && allPerms)) { + if ((includeChildren) || (negated && allPerms)) + { Map children = GroupManager.BukkitPermissions.getAllChildren((negated ? perm.substring(1) : perm), new HashSet()); - if (children != null) { + if (children != null) + { if (negated) - if (allPerms) { + { + if (allPerms) + { // Remove children of negated nodes for (String child : children.keySet()) + { if (children.get(child)) + { if (permArray.contains(child)) + { permArray.remove(child); + } + } + } - } else { + } + else + { // Add child nodes for (String child : children.keySet()) + { if (children.get(child)) + { if ((!permArray.contains(child)) && (!permArray.contains("-" + child))) + { permArray.add(child); + } + } + } } + } } } } @@ -226,27 +262,29 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Verify if player is in such group. It will check it's groups inheritance. - * + * * So if you have a group Admin > Moderator - * - * And verify the player 'MyAdmin', which is Admin, it will return true for - * both Admin or Moderator groups. - * - * If you have a player 'MyModerator', which is Moderator, it will give - * false if you pass Admin in group parameter. - * + * + * And verify the player 'MyAdmin', which is Admin, it will return true for both Admin or Moderator groups. + * + * If you have a player 'MyModerator', which is Moderator, it will give false if you pass Admin in group parameter. + * * @param name * @param group * @return true if in group (with inheritance) */ @Override - public boolean inGroup(String name, String group) { + public boolean inGroup(String name, String group) + { - if (hasGroupInInheritance(ph.getUser(name).getGroup(), group)) { + if (hasGroupInInheritance(ph.getUser(name).getGroup(), group)) + { return true; } - for (Group subGroup : ph.getUser(name).subGroupListCopy()) { - if (hasGroupInInheritance(subGroup, group)) { + for (Group subGroup : ph.getUser(name).subGroupListCopy()) + { + if (hasGroupInInheritance(subGroup, group)) + { return true; } } @@ -254,20 +292,20 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Gets the appropriate prefix for the user. This method is a utility method - * for chat plugins to get the user's prefix without having to look at every - * one of the user's ancestors. Returns an empty string if user has no - * parent groups. - * - * @param user - * Player's name + * Gets the appropriate prefix for the user. This method is a utility method for chat plugins to get the user's + * prefix without having to look at every one of the user's ancestors. Returns an empty string if user has no parent + * groups. + * + * @param user Player's name * @return Player's prefix */ @Override - public String getUserPrefix(String user) { + public String getUserPrefix(String user) + { String prefix = ph.getUser(user).getVariables().getVarString("prefix"); - if (prefix.length() != 0) { + if (prefix.length() != 0) + { return prefix; } @@ -275,20 +313,20 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Gets the appropriate prefix for the user. This method is a utility method - * for chat plugins to get the user's prefix without having to look at every - * one of the user's ancestors. Returns an empty string if user has no - * parent groups. - * - * @param user - * Player's name + * Gets the appropriate prefix for the user. This method is a utility method for chat plugins to get the user's + * prefix without having to look at every one of the user's ancestors. Returns an empty string if user has no parent + * groups. + * + * @param user Player's name * @return Player's prefix */ @Override - public String getUserSuffix(String user) { + public String getUserSuffix(String user) + { String suffix = ph.getUser(user).getVariables().getVarString("suffix"); - if (suffix.length() != 0) { + if (suffix.length() != 0) + { return suffix; } @@ -297,15 +335,14 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Gets name of the primary group of the user. Returns the name of the - * default group if user has no parent groups, or "Default" if there is no - * default group for that world. - * - * @param user - * Player's name + * Gets name of the primary group of the user. Returns the name of the default group if user has no parent groups, + * or "Default" if there is no default group for that world. + * + * @param user Player's name * @return Name of player's primary group */ - public String getPrimaryGroup(String user) { + public String getPrimaryGroup(String user) + { return getGroup(user); @@ -313,12 +350,12 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Check if user can build. Checks inheritance and subgroups. - * - * @param userName - * Player's name + * + * @param userName Player's name * @return true if the user can build */ - public boolean canUserBuild(String userName) { + public boolean canUserBuild(String userName) + { return getPermissionBoolean(userName, "build"); @@ -326,15 +363,17 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Returns the String prefix for the given group - * + * * @param groupName * @return empty string if found none. */ @Override - public String getGroupPrefix(String groupName) { + public String getGroupPrefix(String groupName) + { Group g = ph.getGroup(groupName); - if (g == null) { + if (g == null) + { return ""; } return g.getVariables().getVarString("prefix"); @@ -342,120 +381,131 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Return the suffix for the given group name - * + * * @param groupName * @return empty string if not found. */ @Override - public String getGroupSuffix(String groupName) { + public String getGroupSuffix(String groupName) + { Group g = ph.getGroup(groupName); - if (g == null) { + if (g == null) + { return ""; } return g.getVariables().getVarString("suffix"); } /** - * Checks the specified group for the Info Build node. Does NOT check - * inheritance - * + * Checks the specified group for the Info Build node. Does NOT check inheritance + * * @param groupName * @return true if can build */ @Override - public boolean canGroupBuild(String groupName) { + public boolean canGroupBuild(String groupName) + { Group g = ph.getGroup(groupName); - if (g == null) { + if (g == null) + { return false; } return g.getVariables().getVarBoolean("build"); } /** - * It returns a string variable value, set in the INFO node of the group. It - * will harvest inheritance for value. - * + * It returns a string variable value, set in the INFO node of the group. It will harvest inheritance for value. + * * @param groupName * @param variable * @return null if no group with that variable is found. */ @Override - public String getGroupPermissionString(String groupName, String variable) { + public String getGroupPermissionString(String groupName, String variable) + { Group start = ph.getGroup(groupName); - if (start == null) { + if (start == null) + { return null; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { return null; } return result.getVariables().getVarString(variable); } /** - * It returns a Integer variable value It will harvest inheritance for - * value. - * + * It returns a Integer variable value It will harvest inheritance for value. + * * @param groupName * @param variable * @return -1 if none found or not parseable. */ @Override - public int getGroupPermissionInteger(String groupName, String variable) { + public int getGroupPermissionInteger(String groupName, String variable) + { Group start = ph.getGroup(groupName); - if (start == null) { + if (start == null) + { return -1; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { return -1; } return result.getVariables().getVarInteger(variable); } /** - * Returns a boolean for given variable in INFO node. It will harvest - * inheritance for value. - * + * Returns a boolean for given variable in INFO node. It will harvest inheritance for value. + * * @param group * @param variable * @return false if not found/not parseable. */ @Override - public boolean getGroupPermissionBoolean(String group, String variable) { + public boolean getGroupPermissionBoolean(String group, String variable) + { Group start = ph.getGroup(group); - if (start == null) { + if (start == null) + { return false; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { return false; } return result.getVariables().getVarBoolean(variable); } /** - * Returns a double value for the given variable name in INFO node. It will - * harvest inheritance for value. - * + * Returns a double value for the given variable name in INFO node. It will harvest inheritance for value. + * * @param group * @param variable * @return -1 if not found / not parseable. */ @Override - public double getGroupPermissionDouble(String group, String variable) { + public double getGroupPermissionDouble(String group, String variable) + { Group start = ph.getGroup(group); - if (start == null) { + if (start == null) + { return -1; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { return -1; } return result.getVariables().getVarDouble(variable); @@ -463,16 +513,18 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Returns the variable value of the user, in INFO node. - * + * * @param user * @param variable * @return empty string if not found */ @Override - public String getUserPermissionString(String user, String variable) { + public String getUserPermissionString(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return ""; } return auser.getVariables().getVarString(variable); @@ -480,16 +532,18 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Returns the variable value of the user, in INFO node. - * + * * @param user * @param variable * @return -1 if not found */ @Override - public int getUserPermissionInteger(String user, String variable) { + public int getUserPermissionInteger(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return -1; } return auser.getVariables().getVarInteger(variable); @@ -497,16 +551,18 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Returns the variable value of the user, in INFO node. - * + * * @param user * @param variable * @return boolean value */ @Override - public boolean getUserPermissionBoolean(String user, String variable) { + public boolean getUserPermissionBoolean(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return false; } return auser.getVariables().getVarBoolean(variable); @@ -514,176 +570,222 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Returns the variable value of the user, in INFO node. - * + * * @param user * @param variable * @return -1 if not found */ @Override - public double getUserPermissionDouble(String user, String variable) { + public double getUserPermissionDouble(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return -1; } return auser.getVariables().getVarDouble(variable); } /** - * Returns the variable value of the user, in INFO node. If not found, it - * will search for his Group variables. It will harvest the inheritance and - * subgroups. - * + * Returns the variable value of the user, in INFO node. If not found, it will search for his Group variables. It + * will harvest the inheritance and subgroups. + * * @param user * @param variable * @return empty string if not found */ @Override - public String getPermissionString(String user, String variable) { + public String getPermissionString(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return ""; } - if (auser.getVariables().hasVar(variable)) { + if (auser.getVariables().hasVar(variable)) + { return auser.getVariables().getVarString(variable); } Group start = auser.getGroup(); - if (start == null) { + if (start == null) + { return ""; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { // Check sub groups if (!auser.isSubGroupsEmpty()) - for (Group subGroup : auser.subGroupListCopy()) { + { + for (Group subGroup : auser.subGroupListCopy()) + { result = nextGroupWithVariable(subGroup, variable); // Found value? if (result != null) + { continue; + } } + } if (result == null) + { return ""; + } } return result.getVariables().getVarString(variable); // return getUserPermissionString(user, variable); } /** - * Returns the variable value of the user, in INFO node. If not found, it - * will search for his Group variables. It will harvest the inheritance and - * subgroups. - * + * Returns the variable value of the user, in INFO node. If not found, it will search for his Group variables. It + * will harvest the inheritance and subgroups. + * * @param user * @param variable * @return -1 if not found */ @Override - public int getPermissionInteger(String user, String variable) { + public int getPermissionInteger(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return -1; } - if (auser.getVariables().hasVar(variable)) { + if (auser.getVariables().hasVar(variable)) + { return auser.getVariables().getVarInteger(variable); } Group start = auser.getGroup(); - if (start == null) { + if (start == null) + { return -1; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { // Check sub groups if (!auser.isSubGroupsEmpty()) - for (Group subGroup : auser.subGroupListCopy()) { + { + for (Group subGroup : auser.subGroupListCopy()) + { result = nextGroupWithVariable(subGroup, variable); // Found value? if (result != null) + { continue; + } } + } if (result == null) + { return -1; + } } return result.getVariables().getVarInteger(variable); // return getUserPermissionInteger(string, string1); } /** - * Returns the variable value of the user, in INFO node. If not found, it - * will search for his Group variables. It will harvest the inheritance and - * subgroups. - * + * Returns the variable value of the user, in INFO node. If not found, it will search for his Group variables. It + * will harvest the inheritance and subgroups. + * * @param user * @param variable * @return false if not found or not parseable to true. */ @Override - public boolean getPermissionBoolean(String user, String variable) { + public boolean getPermissionBoolean(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return false; } - if (auser.getVariables().hasVar(variable)) { + if (auser.getVariables().hasVar(variable)) + { return auser.getVariables().getVarBoolean(variable); } Group start = auser.getGroup(); - if (start == null) { + if (start == null) + { return false; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { // Check sub groups if (!auser.isSubGroupsEmpty()) - for (Group subGroup : auser.subGroupListCopy()) { + { + for (Group subGroup : auser.subGroupListCopy()) + { result = nextGroupWithVariable(subGroup, variable); // Found value? if (result != null) + { continue; + } } + } if (result == null) + { return false; + } } return result.getVariables().getVarBoolean(variable); // return getUserPermissionBoolean(user, string1); } /** - * Returns the variable value of the user, in INFO node. If not found, it - * will search for his Group variables. It will harvest the inheritance and - * subgroups. - * + * Returns the variable value of the user, in INFO node. If not found, it will search for his Group variables. It + * will harvest the inheritance and subgroups. + * * @param user * @param variable * @return -1 if not found. */ @Override - public double getPermissionDouble(String user, String variable) { + public double getPermissionDouble(String user, String variable) + { User auser = ph.getUser(user); - if (auser == null) { + if (auser == null) + { return -1.0D; } - if (auser.getVariables().hasVar(variable)) { + if (auser.getVariables().hasVar(variable)) + { return auser.getVariables().getVarDouble(variable); } Group start = auser.getGroup(); - if (start == null) { + if (start == null) + { return -1.0D; } Group result = nextGroupWithVariable(start, variable); - if (result == null) { + if (result == null) + { // Check sub groups if (!auser.isSubGroupsEmpty()) - for (Group subGroup : auser.subGroupListCopy()) { + { + for (Group subGroup : auser.subGroupListCopy()) + { result = nextGroupWithVariable(subGroup, variable); // Found value? if (result != null) + { continue; + } } + } if (result == null) + { return -1.0D; + } } return result.getVariables().getVarDouble(variable); // return getUserPermissionDouble(string, string1); @@ -691,20 +793,23 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Does not include User's group permission - * + * * @param user * @param permission * @return PermissionCheckResult */ - public PermissionCheckResult checkUserOnlyPermission(User user, String permission) { + public PermissionCheckResult checkUserOnlyPermission(User user, String permission) + { user.sortPermissions(); PermissionCheckResult result = new PermissionCheckResult(); result.askedPermission = permission; result.owner = user; - for (String access : user.getPermissionList()) { + for (String access : user.getPermissionList()) + { result.resultType = comparePermissionString(access, permission); - if (result.resultType != PermissionCheckResult.Type.NOTFOUND) { + if (result.resultType != PermissionCheckResult.Type.NOTFOUND) + { return result; } } @@ -713,22 +818,24 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Returns the node responsible for that permission. Does not include User's - * group permission. - * + * Returns the node responsible for that permission. Does not include User's group permission. + * * @param group * @param permission * @return the node if permission is found. if not found, return null */ - public PermissionCheckResult checkGroupOnlyPermission(Group group, String permission) { + public PermissionCheckResult checkGroupOnlyPermission(Group group, String permission) + { group.sortPermissions(); PermissionCheckResult result = new PermissionCheckResult(); result.owner = group; result.askedPermission = permission; - for (String access : group.getPermissionList()) { + for (String access : group.getPermissionList()) + { result.resultType = comparePermissionString(access, permission); - if (result.resultType != PermissionCheckResult.Type.NOTFOUND) { + if (result.resultType != PermissionCheckResult.Type.NOTFOUND) + { return result; } } @@ -738,15 +845,17 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * Check permissions, including it's group and inheritance. - * + * * @param user * @param permission * @return true if permission was found. false if not, or was negated. */ - public boolean checkUserPermission(User user, String permission) { + public boolean checkUserPermission(User user, String permission) + { PermissionCheckResult result = checkFullGMPermission(user, permission, true); - if (result.resultType == PermissionCheckResult.Type.EXCEPTION || result.resultType == PermissionCheckResult.Type.FOUND) { + if (result.resultType == PermissionCheckResult.Type.EXCEPTION || result.resultType == PermissionCheckResult.Type.FOUND) + { return true; } @@ -754,43 +863,46 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Do what checkUserPermission did before. But now returning a - * PermissionCheckResult. - * + * Do what checkUserPermission did before. But now returning a PermissionCheckResult. + * * @param user * @param targetPermission * @return PermissionCheckResult */ - public PermissionCheckResult checkFullUserPermission(User user, String targetPermission) { + public PermissionCheckResult checkFullUserPermission(User user, String targetPermission) + { return checkFullGMPermission(user, targetPermission, true); } /** - * Check user and groups with inheritance and Bukkit if bukkit = true return - * a PermissionCheckResult. - * + * Check user and groups with inheritance and Bukkit if bukkit = true return a PermissionCheckResult. + * * @param user * @param targetPermission * @param checkBukkit * @return PermissionCheckResult */ - public PermissionCheckResult checkFullGMPermission(User user, String targetPermission, Boolean checkBukkit) { + public PermissionCheckResult checkFullGMPermission(User user, String targetPermission, Boolean checkBukkit) + { PermissionCheckResult result = new PermissionCheckResult(); result.accessLevel = targetPermission; result.resultType = PermissionCheckResult.Type.NOTFOUND; - if (user == null || targetPermission == null || targetPermission.isEmpty()) { + if (user == null || targetPermission == null || targetPermission.isEmpty()) + { return result; } - if (checkBukkit) { + if (checkBukkit) + { // Check Bukkit perms to support plugins which add perms via code // (Heroes). final Player player = user.getBukkitPlayer(); //final Permission bukkitPerm = Bukkit.getPluginManager().getPermission(targetPermission); - if ((player != null) && player.hasPermission(targetPermission)) { + if ((player != null) && player.hasPermission(targetPermission)) + { result.resultType = PermissionCheckResult.Type.FOUND; result.owner = user; return result; @@ -798,22 +910,26 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } PermissionCheckResult resultUser = checkUserOnlyPermission(user, targetPermission); - if (resultUser.resultType != PermissionCheckResult.Type.NOTFOUND) { + if (resultUser.resultType != PermissionCheckResult.Type.NOTFOUND) + { resultUser.accessLevel = targetPermission; return resultUser; } // IT ONLY CHECKS GROUPS PERMISSIONS IF RESULT FOR USER IS NOT FOUND PermissionCheckResult resultGroup = checkGroupPermissionWithInheritance(user.getGroup(), targetPermission); - if (resultGroup.resultType != PermissionCheckResult.Type.NOTFOUND) { + if (resultGroup.resultType != PermissionCheckResult.Type.NOTFOUND) + { resultGroup.accessLevel = targetPermission; return resultGroup; } // SUBGROUPS CHECK - for (Group subGroup : user.subGroupListCopy()) { + for (Group subGroup : user.subGroupListCopy()) + { PermissionCheckResult resultSubGroup = checkGroupPermissionWithInheritance(subGroup, targetPermission); - if (resultSubGroup.resultType != PermissionCheckResult.Type.NOTFOUND) { + if (resultSubGroup.resultType != PermissionCheckResult.Type.NOTFOUND) + { resultSubGroup.accessLevel = targetPermission; return resultSubGroup; } @@ -824,32 +940,37 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Returns the next group, including inheritance, which contains that - * variable name. - * + * Returns the next group, including inheritance, which contains that variable name. + * * It does Breadth-first search - * + * * @param start the starting group to look for * @param targetVariable the variable name * @return The group if found. Null if not. */ - public Group nextGroupWithVariable(Group start, String targetVariable) { + public Group nextGroupWithVariable(Group start, String targetVariable) + { - if (start == null || targetVariable == null) { + if (start == null || targetVariable == null) + { return null; } LinkedList stack = new LinkedList(); ArrayList alreadyVisited = new ArrayList(); stack.push(start); alreadyVisited.add(start); - while (!stack.isEmpty()) { + while (!stack.isEmpty()) + { Group now = stack.pop(); - if (now.getVariables().hasVar(targetVariable)) { + if (now.getVariables().hasVar(targetVariable)) + { return now; } - for (String sonName : now.getInherits()) { + for (String sonName : now.getInherits()) + { Group son = ph.getGroup(sonName); - if (son != null && !alreadyVisited.contains(son)) { + if (son != null && !alreadyVisited.contains(son)) + { stack.push(son); alreadyVisited.add(son); } @@ -858,33 +979,38 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { return null; } - /** * Check if given group inherits another group. - * + * * It does Breadth-first search - * + * * @param start The group to start the search. * @param askedGroup Name of the group you're looking for * @return true if it inherits the group. */ - public boolean hasGroupInInheritance(Group start, String askedGroup) { + public boolean hasGroupInInheritance(Group start, String askedGroup) + { - if (start == null || askedGroup == null) { + if (start == null || askedGroup == null) + { return false; } LinkedList stack = new LinkedList(); ArrayList alreadyVisited = new ArrayList(); stack.push(start); alreadyVisited.add(start); - while (!stack.isEmpty()) { + while (!stack.isEmpty()) + { Group now = stack.pop(); - if (now.getName().equalsIgnoreCase(askedGroup)) { + if (now.getName().equalsIgnoreCase(askedGroup)) + { return true; } - for (String sonName : now.getInherits()) { + for (String sonName : now.getInherits()) + { Group son = ph.getGroup(sonName); - if (son != null && !alreadyVisited.contains(son)) { + if (son != null && !alreadyVisited.contains(son)) + { stack.push(son); alreadyVisited.add(son); } @@ -894,37 +1020,41 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Returns the result of permission check. Including inheritance. If found - * anything, the PermissionCheckResult that retuns will include the Group - * name, and the result type. Result types will be EXCEPTION, NEGATION, - * FOUND. - * + * Returns the result of permission check. Including inheritance. If found anything, the PermissionCheckResult that + * retuns will include the Group name, and the result type. Result types will be EXCEPTION, NEGATION, FOUND. + * * If returned type NOTFOUND, the owner will be null, and ownerType too. - * + * * It does Breadth-first search - * + * * @param start * @param targetPermission * @return PermissionCheckResult */ - public PermissionCheckResult checkGroupPermissionWithInheritance(Group start, String targetPermission) { + public PermissionCheckResult checkGroupPermissionWithInheritance(Group start, String targetPermission) + { - if (start == null || targetPermission == null) { + if (start == null || targetPermission == null) + { return null; } LinkedList stack = new LinkedList(); List alreadyVisited = new ArrayList(); stack.push(start); alreadyVisited.add(start); - while (!stack.isEmpty()) { + while (!stack.isEmpty()) + { Group now = stack.pop(); PermissionCheckResult resultNow = checkGroupOnlyPermission(now, targetPermission); - if (!resultNow.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) { + if (!resultNow.resultType.equals(PermissionCheckResult.Type.NOTFOUND)) + { return resultNow; } - for (String sonName : now.getInherits()) { + for (String sonName : now.getInherits()) + { Group son = ph.getGroup(sonName); - if (son != null && !alreadyVisited.contains(son)) { + if (son != null && !alreadyVisited.contains(son)) + { // Add rather than push to retain inheritance order. stack.add(son); alreadyVisited.add(son); @@ -938,28 +1068,32 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Return whole list of names of groups in a inheritance chain. Including a - * starting group. - * + * Return whole list of names of groups in a inheritance chain. Including a starting group. + * * It does Breadth-first search. So closer groups will appear first in list. - * + * * @param start * @return the group that passed on test. null if no group passed. */ - public ArrayList listAllGroupsInherited(Group start) { + public ArrayList listAllGroupsInherited(Group start) + { - if (start == null) { + if (start == null) + { return null; } LinkedList stack = new LinkedList(); ArrayList alreadyVisited = new ArrayList(); stack.push(start); alreadyVisited.add(start.getName()); - while (!stack.isEmpty()) { + while (!stack.isEmpty()) + { Group now = stack.pop(); - for (String sonName : now.getInherits()) { + for (String sonName : now.getInherits()) + { Group son = ph.getGroup(sonName); - if (son != null && !alreadyVisited.contains(son.getName())) { + if (son != null && !alreadyVisited.contains(son.getName())) + { stack.push(son); alreadyVisited.add(son.getName()); } @@ -969,69 +1103,79 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } /** - * Compare a user permission like 'myplugin.*' against a full plugin - * permission name, like 'myplugin.dosomething'. As the example above, will - * return true. - * - * Please sort permissions before sending them here. So negative tokens get - * priority. - * - * You must test if it start with negative outside this method. It will only - * tell if the nodes are matching or not. - * - * Every '-' or '+' in the beginning is ignored. It will match only node - * names. - * + * Compare a user permission like 'myplugin.*' against a full plugin permission name, like 'myplugin.dosomething'. + * As the example above, will return true. + * + * Please sort permissions before sending them here. So negative tokens get priority. + * + * You must test if it start with negative outside this method. It will only tell if the nodes are matching or not. + * + * Every '-' or '+' in the beginning is ignored. It will match only node names. + * * @param userAccessLevel * @param fullPermissionName * @return PermissionCheckResult.Type */ - public PermissionCheckResult.Type comparePermissionString(String userAccessLevel, String fullPermissionName) { + public PermissionCheckResult.Type comparePermissionString(String userAccessLevel, String fullPermissionName) + { int userAccessLevelLength; - if (userAccessLevel == null || fullPermissionName == null || fullPermissionName.length() == 0 || (userAccessLevelLength = userAccessLevel.length()) == 0) { + if (userAccessLevel == null || fullPermissionName == null || fullPermissionName.length() == 0 || (userAccessLevelLength = userAccessLevel.length()) == 0) + { return PermissionCheckResult.Type.NOTFOUND; } PermissionCheckResult.Type result = PermissionCheckResult.Type.FOUND; int userAccessLevelOffset = 0; - if (userAccessLevel.charAt(0) == '+') { + if (userAccessLevel.charAt(0) == '+') + { userAccessLevelOffset = 1; result = PermissionCheckResult.Type.EXCEPTION; - } else if (userAccessLevel.charAt(0) == '-') { + } + else if (userAccessLevel.charAt(0) == '-') + { userAccessLevelOffset = 1; result = PermissionCheckResult.Type.NEGATION; } - if ("*".regionMatches(0, userAccessLevel, userAccessLevelOffset, userAccessLevelLength - userAccessLevelOffset)) { + if ("*".regionMatches(0, userAccessLevel, userAccessLevelOffset, userAccessLevelLength - userAccessLevelOffset)) + { return result; } int fullPermissionNameOffset; - if (fullPermissionName.charAt(0) == '+' || fullPermissionName.charAt(0) == '-') { + if (fullPermissionName.charAt(0) == '+' || fullPermissionName.charAt(0) == '-') + { fullPermissionNameOffset = 1; - } else { + } + else + { fullPermissionNameOffset = 0; } - if (userAccessLevel.charAt(userAccessLevel.length() - 1) == '*') { + if (userAccessLevel.charAt(userAccessLevel.length() - 1) == '*') + { return userAccessLevel.regionMatches(true, userAccessLevelOffset, fullPermissionName, fullPermissionNameOffset, userAccessLevelLength - userAccessLevelOffset - 1) ? result : PermissionCheckResult.Type.NOTFOUND; - } else { + } + else + { return userAccessLevel.regionMatches(true, userAccessLevelOffset, fullPermissionName, fullPermissionNameOffset, Math.max(userAccessLevelLength - userAccessLevelOffset, fullPermissionName.length() - fullPermissionNameOffset)) ? result : PermissionCheckResult.Type.NOTFOUND; } } /** * Returns a list of all groups. - * + * * Including subgroups. - * + * * @param userName * @return String[] of all group names. */ @Override - public String[] getGroups(String userName) { + public String[] getGroups(String userName) + { ArrayList allGroups = listAllGroupsInherited(ph.getUser(userName).getGroup()); - for (Group subg : ph.getUser(userName).subGroupListCopy()) { + for (Group subg : ph.getUser(userName).subGroupListCopy()) + { allGroups.addAll(listAllGroupsInherited(subg)); } @@ -1041,36 +1185,42 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * A Breadth-first search thru inheritance model. - * - * Just a model to copy and paste. This will guarantee the closer groups - * will be checked first. - * + * + * Just a model to copy and paste. This will guarantee the closer groups will be checked first. + * * @param start * @param targerPermission * @return */ @SuppressWarnings("unused") - private Group breadthFirstSearch(Group start, String targerPermission) { + private Group breadthFirstSearch(Group start, String targerPermission) + { - if (start == null || targerPermission == null) { + if (start == null || targerPermission == null) + { return null; } LinkedList stack = new LinkedList(); ArrayList alreadyVisited = new ArrayList(); stack.push(start); alreadyVisited.add(start); - while (!stack.isEmpty()) { + while (!stack.isEmpty()) + { Group now = stack.pop(); PermissionCheckResult resultNow = checkGroupOnlyPermission(now, targerPermission); - if (resultNow.resultType.equals(PermissionCheckResult.Type.EXCEPTION) || resultNow.resultType.equals(PermissionCheckResult.Type.FOUND)) { + if (resultNow.resultType.equals(PermissionCheckResult.Type.EXCEPTION) || resultNow.resultType.equals(PermissionCheckResult.Type.FOUND)) + { return now; } - if (resultNow.resultType.equals(PermissionCheckResult.Type.NEGATION)) { + if (resultNow.resultType.equals(PermissionCheckResult.Type.NEGATION)) + { return null; } - for (String sonName : now.getInherits()) { + for (String sonName : now.getInherits()) + { Group son = ph.getGroup(sonName); - if (son != null && !alreadyVisited.contains(son)) { + if (son != null && !alreadyVisited.contains(son)) + { stack.push(son); alreadyVisited.add(son); } @@ -1080,23 +1230,30 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } @Override - public Group getDefaultGroup() { + public Group getDefaultGroup() + { return ph.getDefaultGroup(); } @Override - public String getInfoString(String entryName, String path, boolean isGroup) { + public String getInfoString(String entryName, String path, boolean isGroup) + { - if (isGroup) { + if (isGroup) + { Group data = ph.getGroup(entryName); - if (data == null) { + if (data == null) + { return null; } return data.getVariables().getVarString(path); - } else { + } + else + { User data = ph.getUser(entryName); - if (data == null) { + if (data == null) + { return null; } return data.getVariables().getVarString(path); @@ -1104,17 +1261,23 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } @Override - public int getInfoInteger(String entryName, String path, boolean isGroup) { + public int getInfoInteger(String entryName, String path, boolean isGroup) + { - if (isGroup) { + if (isGroup) + { Group data = ph.getGroup(entryName); - if (data == null) { + if (data == null) + { return -1; } return data.getVariables().getVarInteger(path); - } else { + } + else + { User data = ph.getUser(entryName); - if (data == null) { + if (data == null) + { return -1; } return data.getVariables().getVarInteger(path); @@ -1122,17 +1285,23 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } @Override - public double getInfoDouble(String entryName, String path, boolean isGroup) { + public double getInfoDouble(String entryName, String path, boolean isGroup) + { - if (isGroup) { + if (isGroup) + { Group data = ph.getGroup(entryName); - if (data == null) { + if (data == null) + { return -1; } return data.getVariables().getVarDouble(path); - } else { + } + else + { User data = ph.getUser(entryName); - if (data == null) { + if (data == null) + { return -1; } return data.getVariables().getVarDouble(path); @@ -1141,17 +1310,23 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } @Override - public boolean getInfoBoolean(String entryName, String path, boolean isGroup) { + public boolean getInfoBoolean(String entryName, String path, boolean isGroup) + { - if (isGroup) { + if (isGroup) + { Group data = ph.getGroup(entryName); - if (data == null) { + if (data == null) + { return false; } return data.getVariables().getVarBoolean(path); - } else { + } + else + { User data = ph.getUser(entryName); - if (data == null) { + if (data == null) + { return false; } return data.getVariables().getVarBoolean(path); @@ -1159,25 +1334,29 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } @Override - public void addUserInfo(String name, String path, Object data) { + public void addUserInfo(String name, String path, Object data) + { ph.getUser(name).getVariables().addVar(path, data); } @Override - public void removeUserInfo(String name, String path) { + public void removeUserInfo(String name, String path) + { ph.getUser(name).getVariables().removeVar(path); } @Override - public void addGroupInfo(String name, String path, Object data) { + public void addGroupInfo(String name, String path, Object data) + { ph.getGroup(name).getVariables().addVar(path, data); } @Override - public void removeGroupInfo(String name, String path) { + public void removeGroupInfo(String name, String path) + { ph.getGroup(name).getVariables().removeVar(path); } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index fb14c39f6..74fbd4541 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -14,7 +14,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, * USA. */ - package org.anjocaido.groupmanager.permissions; import java.lang.reflect.Field; @@ -49,14 +48,15 @@ import org.bukkit.permissions.PermissionAttachment; import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.plugin.PluginManager; + /** - * + * * BukkitPermissions overrides to force GM reponses to Superperms - * + * * @author ElgarL */ -public class BukkitPermissions { - +public class BukkitPermissions +{ protected WeakHashMap attachments = new WeakHashMap(); protected LinkedHashMap registeredPermissions = new LinkedHashMap(); protected GroupManager plugin; @@ -67,7 +67,8 @@ public class BukkitPermissions { /** * @return the player_join */ - public boolean isPlayer_join() { + public boolean isPlayer_join() + { return player_join; } @@ -75,41 +76,50 @@ public class BukkitPermissions { /** * @param player_join the player_join to set */ - public void setPlayer_join(boolean player_join) { + public void setPlayer_join(boolean player_join) + { this.player_join = player_join; } - private static Field permissions; // Setup reflection (Thanks to Codename_B for the reflection source) - static { - try { + static + { + try + { permissions = PermissionAttachment.class.getDeclaredField("permissions"); permissions.setAccessible(true); - } catch (SecurityException e) { + } + catch (SecurityException e) + { e.printStackTrace(); - } catch (NoSuchFieldException e) { + } + catch (NoSuchFieldException e) + { e.printStackTrace(); } } - public BukkitPermissions(GroupManager plugin) { + public BukkitPermissions(GroupManager plugin) + { this.plugin = plugin; this.reset(); this.registerEvents(); - + GroupManager.logger.info("Superperms support enabled."); } - - public void reset() { + + public void reset() + { this.collectPermissions(); this.updateAllPlayers(); } - private void registerEvents() { + private void registerEvents() + { PluginManager manager = plugin.getServer().getPluginManager(); @@ -117,51 +127,61 @@ public class BukkitPermissions { manager.registerEvents(new BukkitEvents(), plugin); } - public void collectPermissions() { + public void collectPermissions() + { registeredPermissions.clear(); - for (Permission perm : Bukkit.getPluginManager().getPermissions()) { + for (Permission perm : Bukkit.getPluginManager().getPermissions()) + { registeredPermissions.put(perm.getName().toLowerCase(), perm); } } - public void updatePermissions(Player player) { + public void updatePermissions(Player player) + { this.updatePermissions(player, null); } /** - * Push all permissions which are registered with GM for this player, on - * this world to Bukkit - * and make it update for the child nodes. - * + * Push all permissions which are registered with GM for this player, on this world to Bukkit and make it update for + * the child nodes. + * * @param player * @param world */ - public void updatePermissions(Player player, String world) { + public void updatePermissions(Player player, String world) + { - if (player == null || !GroupManager.isLoaded()) { + if (player == null || !GroupManager.isLoaded()) + { return; } - + // Reset the User objects player reference. User user = plugin.getWorldsHolder().getWorldData(player.getWorld().getName()).getUser(player.getName()); if (user != null) + { user.updatePlayer(player); + } PermissionAttachment attachment; // Find the players current attachment, or add a new one. - if (this.attachments.containsKey(player)) { + if (this.attachments.containsKey(player)) + { attachment = this.attachments.get(player); - } else { + } + else + { attachment = player.addAttachment(plugin); this.attachments.put(player, attachment); } - if (world == null) { + if (world == null) + { world = player.getWorld().getName(); } @@ -174,19 +194,20 @@ public class BukkitPermissions { playerPermArray = sort(playerPermArray); Boolean value = false; - for (String permission : playerPermArray) { + for (String permission : playerPermArray) + { value = (!permission.startsWith("-")); newPerms.put((value ? permission : permission.substring(1)), value); } /** - * This is put in place until such a time as Bukkit pull 466 is - * implemented + * This is put in place until such a time as Bukkit pull 466 is implemented * https://github.com/Bukkit/Bukkit/pull/466 */ - try { // Codename_B source + try + { // Codename_B source @SuppressWarnings("unchecked") - Map orig = (Map) permissions.get(attachment); + Map orig = (Map)permissions.get(attachment); // Clear the map (faster than removing the attachment and recalculating) orig.clear(); // Then whack our map into there @@ -194,36 +215,45 @@ public class BukkitPermissions { // That's all folks! //attachment.getPermissible().recalculatePermissions(); player.recalculatePermissions(); - } catch (IllegalArgumentException e) { + } + catch (IllegalArgumentException e) + { e.printStackTrace(); - } catch (IllegalAccessException e) { + } + catch (IllegalAccessException e) + { e.printStackTrace(); } } /** * Sort a permission node list by parent/child - * + * * @param permList * @return List sorted for priority */ - private List sort(List permList) { + private List sort(List permList) + { List result = new ArrayList(); - for (String key : permList) { + for (String key : permList) + { String a = key.charAt(0) == '-' ? key.substring(1) : key; Map allchildren = GroupManager.BukkitPermissions.getAllChildren(a, new HashSet()); - if (allchildren != null) { + if (allchildren != null) + { ListIterator itr = result.listIterator(); - while (itr.hasNext()) { - String node = (String) itr.next(); + while (itr.hasNext()) + { + String node = (String)itr.next(); String b = node.charAt(0) == '-' ? node.substring(1) : node; // Insert the parent node before the child - if (allchildren.containsKey(b)) { + if (allchildren.containsKey(b)) + { itr.set(key); itr.add(node); break; @@ -231,33 +261,43 @@ public class BukkitPermissions { } } if (!result.contains(key)) + { result.add(key); + } } return result; } /** - * Fetch all permissions which are registered with superperms. - * {can include child nodes) - * + * Fetch all permissions which are registered with superperms. {can include child nodes) + * * @param includeChildren * @return List of all permission nodes */ - public List getAllRegisteredPermissions(boolean includeChildren) { + public List getAllRegisteredPermissions(boolean includeChildren) + { List perms = new ArrayList(); - for (String key : registeredPermissions.keySet()) { - if (!perms.contains(key)) { + for (String key : registeredPermissions.keySet()) + { + if (!perms.contains(key)) + { perms.add(key); - if (includeChildren) { + if (includeChildren) + { Map children = getAllChildren(key, new HashSet()); - if (children != null) { + if (children != null) + { for (String node : children.keySet()) + { if (!perms.contains(node)) + { perms.add(node); + } + } } } } @@ -267,29 +307,32 @@ public class BukkitPermissions { } /** - * Returns a map of ALL child permissions registered with bukkit - * null is empty - * + * Returns a map of ALL child permissions registered with bukkit null is empty + * * @param node - * @param playerPermArray current list of perms to check against for - * negations + * @param playerPermArray current list of perms to check against for negations * @return Map of child permissions */ - public Map getAllChildren(String node, Set playerPermArray) { + public Map getAllChildren(String node, Set playerPermArray) + { LinkedList stack = new LinkedList(); Map alreadyVisited = new HashMap(); stack.push(node); alreadyVisited.put(node, true); - while (!stack.isEmpty()) { + while (!stack.isEmpty()) + { String now = stack.pop(); Map children = getChildren(now); - if ((children != null) && (!playerPermArray.contains("-" + now))) { - for (String childName : children.keySet()) { - if (!alreadyVisited.containsKey(childName)) { + if ((children != null) && (!playerPermArray.contains("-" + now))) + { + for (String childName : children.keySet()) + { + if (!alreadyVisited.containsKey(childName)) + { stack.push(childName); alreadyVisited.put(childName, children.get(childName)); } @@ -298,24 +341,27 @@ public class BukkitPermissions { } alreadyVisited.remove(node); if (!alreadyVisited.isEmpty()) + { return alreadyVisited; + } return null; } /** - * Returns a map of the child permissions (1 node deep) as registered with - * Bukkit. - * null is empty - * + * Returns a map of the child permissions (1 node deep) as registered with Bukkit. null is empty + * * @param node * @return Map of child permissions */ - public Map getChildren(String node) { + public Map getChildren(String node) + { Permission perm = registeredPermissions.get(node.toLowerCase()); if (perm == null) + { return null; + } return perm.getChildren(); @@ -323,11 +369,12 @@ public class BukkitPermissions { /** * List all effective permissions for this player. - * + * * @param player * @return List of permissions */ - public List listPerms(Player player) { + public List listPerms(Player player) + { List perms = new ArrayList(); @@ -342,9 +389,12 @@ public class BukkitPermissions { */ perms.add("Effective Permissions:"); - for (PermissionAttachmentInfo info : player.getEffectivePermissions()) { + for (PermissionAttachmentInfo info : player.getEffectivePermissions()) + { if (info.getValue() == true) + { perms.add(" " + info.getPermission() + " = " + info.getValue()); + } } return perms; } @@ -352,9 +402,11 @@ public class BukkitPermissions { /** * force Bukkit to update every OnlinePlayers permissions. */ - public void updateAllPlayers() { + public void updateAllPlayers() + { - for (Player player : Bukkit.getServer().getOnlinePlayers()) { + for (Player player : Bukkit.getServer().getOnlinePlayers()) + { updatePermissions(player); } } @@ -362,23 +414,31 @@ public class BukkitPermissions { /** * force Bukkit to update this Players permissions. */ - public void updatePlayer(Player player) { + public void updatePlayer(Player player) + { if (player != null) + { this.updatePermissions(player, null); + } } /** * Force remove any attachments - * + * * @param player */ - private void removeAttachment(Player player) { + private void removeAttachment(Player player) + { - if (attachments.containsKey(player)) { - try { + if (attachments.containsKey(player)) + { + try + { player.removeAttachment(attachments.get(player)); - } catch (IllegalArgumentException e) { + } + catch (IllegalArgumentException e) + { /* * Failed to remove attachment * This usually means Bukkit no longer knows of it. @@ -391,15 +451,20 @@ public class BukkitPermissions { /** * Remove all attachments in case of a restart or reload. */ - public void removeAllAttachments() { + public void removeAllAttachments() + { Iterator itr = attachments.keySet().iterator(); - while (itr.hasNext()) { + while (itr.hasNext()) + { Player player = itr.next(); - try { + try + { player.removeAttachment(attachments.get(player)); - } catch (IllegalArgumentException e) { + } + catch (IllegalArgumentException e) + { /* * Failed to remove attachment * This usually means Bukkit no longer knows of it. @@ -409,16 +474,18 @@ public class BukkitPermissions { attachments.clear(); } + /** * Player events tracked to cause Superperms updates - * + * * @author ElgarL - * + * */ - protected class PlayerEvents implements Listener { - + protected class PlayerEvents implements Listener + { @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerJoin(PlayerJoinEvent event) { + public void onPlayerJoin(PlayerJoinEvent event) + { setPlayer_join(true); Player player = event.getPlayer(); @@ -429,7 +496,8 @@ public class BukkitPermissions { removeAttachment(player); // force GM to create the player if they are not already listed. - if (plugin.getWorldsHolder().getWorldData(player.getWorld().getName()).getUser(player.getName()) != null) { + if (plugin.getWorldsHolder().getWorldData(player.getWorld().getName()).getUser(player.getName()) != null) + { setPlayer_join(false); updatePermissions(event.getPlayer()); } @@ -437,16 +505,18 @@ public class BukkitPermissions { } @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerChangeWorld(PlayerChangedWorldEvent event) { // has changed worlds + public void onPlayerChangeWorld(PlayerChangedWorldEvent event) + { // has changed worlds updatePermissions(event.getPlayer(), event.getPlayer().getWorld().getName()); } @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerKick(PlayerKickEvent event) { + public void onPlayerKick(PlayerKickEvent event) + { Player player = event.getPlayer(); - + /* * force remove any attachments as bukkit may not */ @@ -454,10 +524,13 @@ public class BukkitPermissions { } @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerQuit(PlayerQuitEvent event) { + public void onPlayerQuit(PlayerQuitEvent event) + { if (!GroupManager.isLoaded()) + { return; + } Player player = event.getPlayer(); @@ -468,24 +541,28 @@ public class BukkitPermissions { } } - protected class BukkitEvents implements Listener { + protected class BukkitEvents implements Listener + { @EventHandler(priority = EventPriority.NORMAL) - public void onPluginEnable(PluginEnableEvent event) { + public void onPluginEnable(PluginEnableEvent event) + { if (!GroupManager.isLoaded()) + { return; + } collectPermissions(); updateAllPlayers(); } @EventHandler(priority = EventPriority.NORMAL) - public void onPluginDisable(PluginDisableEvent event) { + public void onPluginDisable(PluginDisableEvent event) + { collectPermissions(); // updateAllPlayers(); } } - } \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java index 69f098949..7c6e51367 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/PermissionsReaderInterface.java @@ -10,19 +10,20 @@ import org.anjocaido.groupmanager.data.Group; //import org.anjocaido.groupmanager.data.User; import org.bukkit.entity.Player; + /** * Made by Nijikokun. Changed by Gabriel Couto - * + * * This class is intended to *read* permissions from a single world. - * + * * @author Nijikokun * @author Gabriel Couto * @author ElgarL */ -public abstract class PermissionsReaderInterface { - +public abstract class PermissionsReaderInterface +{ /** - * + * * @param player * @param string * @return true if has permission @@ -30,7 +31,7 @@ public abstract class PermissionsReaderInterface { public abstract boolean has(Player player, String string); /** - * + * * @param player * @param string * @return true if has permission @@ -38,14 +39,14 @@ public abstract class PermissionsReaderInterface { public abstract boolean permission(Player player, String string); /** - * + * * @param userName * @return group name for this player. */ public abstract String getGroup(String userName); /** - * + * * @param userName * @param groupName * @return true if in group @@ -53,28 +54,28 @@ public abstract class PermissionsReaderInterface { public abstract boolean inGroup(String userName, String groupName); /** - * + * * @param groupName * @return String of prefix */ public abstract String getGroupPrefix(String groupName); /** - * + * * @param groupName * @return String of suffix */ public abstract String getGroupSuffix(String groupName); /** - * + * * @param groupName * @return true if can build */ public abstract boolean canGroupBuild(String groupName); /** - * + * * @param groupName * @param node * @return String value @@ -82,7 +83,7 @@ public abstract class PermissionsReaderInterface { public abstract String getGroupPermissionString(String groupName, String node); /** - * + * * @param groupName * @param node * @return integer value @@ -90,7 +91,7 @@ public abstract class PermissionsReaderInterface { public abstract int getGroupPermissionInteger(String groupName, String node); /** - * + * * @param groupName * @param node * @return boolean value @@ -98,7 +99,7 @@ public abstract class PermissionsReaderInterface { public abstract boolean getGroupPermissionBoolean(String groupName, String node); /** - * + * * @param groupName * @param node * @return double value @@ -106,7 +107,7 @@ public abstract class PermissionsReaderInterface { public abstract double getGroupPermissionDouble(String groupName, String node); /** - * + * * @param userName * @param node * @return String value @@ -114,7 +115,7 @@ public abstract class PermissionsReaderInterface { public abstract String getUserPermissionString(String userName, String node); /** - * + * * @param userName * @param node * @return integer value @@ -122,7 +123,7 @@ public abstract class PermissionsReaderInterface { public abstract int getUserPermissionInteger(String userName, String node); /** - * + * * @param userName * @param node * @return boolean value @@ -130,7 +131,7 @@ public abstract class PermissionsReaderInterface { public abstract boolean getUserPermissionBoolean(String userName, String node); /** - * + * * @param userName * @param node * @return double value @@ -138,7 +139,7 @@ public abstract class PermissionsReaderInterface { public abstract double getUserPermissionDouble(String userName, String node); /** - * + * * @param userName * @param node * @return String value @@ -146,7 +147,7 @@ public abstract class PermissionsReaderInterface { public abstract String getPermissionString(String userName, String node); /** - * + * * @param userName * @param node * @return integer value @@ -154,7 +155,7 @@ public abstract class PermissionsReaderInterface { public abstract int getPermissionInteger(String userName, String node); /** - * + * * @param userName * @param node * @return boolean value @@ -162,7 +163,7 @@ public abstract class PermissionsReaderInterface { public abstract boolean getPermissionBoolean(String userName, String node); /** - * + * * @param userName * @param node * @return double value @@ -171,58 +172,50 @@ public abstract class PermissionsReaderInterface { ///////////////////////////// /** - * Gets the appropriate prefix for the user. - * This method is a utility method for chat plugins to get the user's prefix - * without having to look at every one of the user's ancestors. - * Returns an empty string if user has no parent groups. - * + * Gets the appropriate prefix for the user. This method is a utility method for chat plugins to get the user's + * prefix without having to look at every one of the user's ancestors. Returns an empty string if user has no parent + * groups. + * * @param user Player's name * @return Player's prefix */ public abstract String getUserPrefix(String user); /** - * Gets the appropriate suffix for the user. - * This method is a utility method for chat plugins to get the user's suffix - * without having to look at every one of the user's ancestors. - * Returns an empty string if user has no parent groups. - * + * Gets the appropriate suffix for the user. This method is a utility method for chat plugins to get the user's + * suffix without having to look at every one of the user's ancestors. Returns an empty string if user has no parent + * groups. + * * @param user Player's name * @return Player's suffix */ public abstract String getUserSuffix(String user); /** - * Returns the group object representing the default group of the given - * world. - * This method will return null if the object does not exist or the world - * has no default group. - * - * @return Group object representing default world, or null if it doesn't - * exist or is not defined. + * Returns the group object representing the default group of the given world. This method will return null if the + * object does not exist or the world has no default group. + * + * @return Group object representing default world, or null if it doesn't exist or is not defined. */ public abstract Group getDefaultGroup(); /** * Gets a array of the names of all parent groups in the same world. - * + * * @param name Target user's name - * @return An array containing the names of all parent groups (including - * ancestors) that are in the same world + * @return An array containing the names of all parent groups (including ancestors) that are in the same world */ public abstract String[] getGroups(String name); public abstract String getInfoString(String entryName, String path, boolean isGroup); //public abstract String getInfoString(String entryName, String path, boolean isGroup, Comparator comparator); - public abstract int getInfoInteger(String entryName, String path, boolean isGroup); //public abstract int getInfoInteger(String entryName, String path, boolean isGroup, Comparator comparator); - /** * Gets a double from the Info node without inheritance. - * + * * @param entryName * @param path * @param isGroup @@ -231,11 +224,9 @@ public abstract class PermissionsReaderInterface { public abstract double getInfoDouble(String entryName, String path, boolean isGroup); //public abstract double getInfoDouble(String entryName, String path, boolean isGroup, Comparator comparator); - public abstract boolean getInfoBoolean(String entryName, String path, boolean isGroup); //public abstract boolean getInfoBoolean(String entryName, String path, boolean isGroup, Comparator comparator); - public abstract void addUserInfo(String name, String path, Object data); public abstract void removeUserInfo(String name, String path); @@ -245,7 +236,6 @@ public abstract class PermissionsReaderInterface { public abstract void removeGroupInfo(String name, String path); ////////////////////////////// - public abstract List getAllPlayersPermissions(String userName); public abstract Set getAllPlayersPermissions(String userName, Boolean includeChildren); -- cgit v1.2.3