summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorDinnerbone <dinnerbone@dinnerbone.com>2011-09-04 00:23:50 +0100
committerDinnerbone <dinnerbone@dinnerbone.com>2011-09-04 00:23:50 +0100
commit11ac7cd36647db05bd70ae0afc9574b44865451d (patch)
tree6f04f9ee0fc2f659de22da8e39cf9d47c660d610 /src/main
parent36995a46d1059a8a2e33d9a97731cedabe60ae02 (diff)
downloadbukkit-11ac7cd36647db05bd70ae0afc9574b44865451d.tar
bukkit-11ac7cd36647db05bd70ae0afc9574b44865451d.tar.gz
bukkit-11ac7cd36647db05bd70ae0afc9574b44865451d.tar.lz
bukkit-11ac7cd36647db05bd70ae0afc9574b44865451d.tar.xz
bukkit-11ac7cd36647db05bd70ae0afc9574b44865451d.zip
Don't lazy-load in PermissibleBase. This'll be a performance hit, but it's causing subscription issues.
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/bukkit/permissions/PermissibleBase.java43
1 files changed, 14 insertions, 29 deletions
diff --git a/src/main/java/org/bukkit/permissions/PermissibleBase.java b/src/main/java/org/bukkit/permissions/PermissibleBase.java
index ec6fb6ca..6bf0e510 100644
--- a/src/main/java/org/bukkit/permissions/PermissibleBase.java
+++ b/src/main/java/org/bukkit/permissions/PermissibleBase.java
@@ -18,7 +18,6 @@ public class PermissibleBase implements Permissible {
private Permissible parent = this;
private final List<PermissionAttachment> attachments = new LinkedList<PermissionAttachment>();
private final Map<String, PermissionAttachmentInfo> permissions = new HashMap<String, PermissionAttachmentInfo>();
- private boolean dirtyPermissions = true;
public PermissibleBase(ServerOperator opable) {
this.opable = opable;
@@ -27,7 +26,7 @@ public class PermissibleBase implements Permissible {
this.parent = (Permissible)opable;
}
- calculatePermissions();
+ recalculatePermissions();
}
public boolean isOp() {
@@ -51,8 +50,6 @@ public class PermissibleBase implements Permissible {
throw new IllegalArgumentException("Permission name cannot be null");
}
- calculatePermissions();
-
return permissions.containsKey(name.toLowerCase());
}
@@ -69,8 +66,6 @@ public class PermissibleBase implements Permissible {
throw new IllegalArgumentException("Permission name cannot be null");
}
- calculatePermissions();
-
String name = inName.toLowerCase();
if (isPermissionSet(name)) {
@@ -91,8 +86,6 @@ public class PermissibleBase implements Permissible {
throw new IllegalArgumentException("Permission cannot be null");
}
- calculatePermissions();
-
String name = perm.getName().toLowerCase();
if (isPermissionSet(name)) {
@@ -156,27 +149,19 @@ public class PermissibleBase implements Permissible {
}
public void recalculatePermissions() {
- dirtyPermissions = true;
- }
+ clearPermissions();
+ Set<Permission> defaults = Bukkit.getServer().getPluginManager().getDefaultPermissions(isOp());
+ Bukkit.getServer().getPluginManager().subscribeToDefaultPerms(isOp(), parent);
- public synchronized void calculatePermissions() {
- if (dirtyPermissions) {
- clearPermissions();
- Set<Permission> defaults = Bukkit.getServer().getPluginManager().getDefaultPermissions(isOp());
- Bukkit.getServer().getPluginManager().subscribeToDefaultPerms(isOp(), parent);
-
- for (Permission perm : defaults) {
- String name = perm.getName().toLowerCase();
- permissions.put(name, new PermissionAttachmentInfo(parent, name, null, true));
- Bukkit.getServer().getPluginManager().subscribeToPermission(name, parent);
- calculateChildPermissions(perm.getChildren(), false, null);
- }
-
- for (PermissionAttachment attachment : attachments) {
- calculateChildPermissions(attachment.getPermissions(), false, attachment);
- }
+ for (Permission perm : defaults) {
+ String name = perm.getName().toLowerCase();
+ permissions.put(name, new PermissionAttachmentInfo(parent, name, null, true));
+ Bukkit.getServer().getPluginManager().subscribeToPermission(name, parent);
+ calculateChildPermissions(perm.getChildren(), false, null);
+ }
- dirtyPermissions = false;
+ for (PermissionAttachment attachment : attachments) {
+ calculateChildPermissions(attachment.getPermissions(), false, attachment);
}
}
@@ -187,7 +172,8 @@ public class PermissibleBase implements Permissible {
Bukkit.getServer().getPluginManager().unsubscribeFromPermission(name, parent);
}
- Bukkit.getServer().getPluginManager().unsubscribeFromDefaultPerms(isOp(), parent);
+ Bukkit.getServer().getPluginManager().unsubscribeFromDefaultPerms(false, parent);
+ Bukkit.getServer().getPluginManager().unsubscribeFromDefaultPerms(true, parent);
permissions.clear();
}
@@ -246,7 +232,6 @@ public class PermissibleBase implements Permissible {
}
public Set<PermissionAttachmentInfo> getEffectivePermissions() {
- calculatePermissions();
return new HashSet<PermissionAttachmentInfo>(permissions.values());
}