diff options
author | md_5 <md_5@bigpond.com> | 2012-09-16 23:02:56 +1000 |
---|---|---|
committer | md_5 <md_5@bigpond.com> | 2012-09-16 23:02:56 +1000 |
commit | fd61cd17502eae4097df692063f9e76ea647226c (patch) | |
tree | 4c850d22c45f180d670bca0663c35dbf00bc2f2d /EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java | |
parent | e7ae8bcc4756fd8306814565ded2ec4a06897bf9 (diff) | |
parent | 75f7b06a23e8bed40d30068542b97959663c75e8 (diff) | |
download | Essentials-fd61cd17502eae4097df692063f9e76ea647226c.tar Essentials-fd61cd17502eae4097df692063f9e76ea647226c.tar.gz Essentials-fd61cd17502eae4097df692063f9e76ea647226c.tar.lz Essentials-fd61cd17502eae4097df692063f9e76ea647226c.tar.xz Essentials-fd61cd17502eae4097df692063f9e76ea647226c.zip |
Merge remote-tracking branch 'origin/groupmanager' into 2.9
Diffstat (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java')
-rw-r--r-- | EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java index 751dc8fd6..8da6ba85a 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java @@ -23,7 +23,7 @@ public class Group extends DataUnit implements Cloneable { /** * The group it inherits DIRECTLY! */ - private ArrayList<String> inherits = new ArrayList<String>(); + private List<String> inherits = Collections.unmodifiableList(Collections.<String>emptyList()); /** * This one holds the fields in INFO node. * like prefix = 'c' @@ -75,7 +75,9 @@ public class Group extends DataUnit implements Cloneable { clone = new Group(this.getName()); } else { clone = new Group(getDataSource(), this.getName()); - clone.inherits = new ArrayList<String>(this.getInherits()); + clone.inherits = this.getInherits().isEmpty() ? + Collections.unmodifiableList(Collections.<String>emptyList()) + : Collections.unmodifiableList(new ArrayList<String>(this.getInherits())); } for (String perm : this.getPermissionList()) { @@ -102,7 +104,9 @@ public class Group extends DataUnit implements Cloneable { // Don't add inheritance for GlobalGroups if (!isGlobal()) { - clone.inherits = new ArrayList<String>(this.getInherits()); + clone.inherits = this.getInherits().isEmpty() ? + Collections.unmodifiableList(Collections.<String>emptyList()) + : Collections.unmodifiableList(new ArrayList<String>(this.getInherits())); } for (String perm : this.getPermissionList()) { clone.addPermission(perm); @@ -120,8 +124,7 @@ public class Group extends DataUnit implements Cloneable { * @return the inherits */ public List<String> getInherits() { - - return Collections.unmodifiableList(inherits); + return inherits; } /** @@ -134,7 +137,9 @@ public class Group extends DataUnit implements Cloneable { getDataSource().addGroup(inherit); } if (!inherits.contains(inherit.getName().toLowerCase())) { - inherits.add(inherit.getName().toLowerCase()); + List<String> clone = new ArrayList<String>(inherits); + clone.add(inherit.getName().toLowerCase()); + inherits = Collections.unmodifiableList(clone); } flagAsChanged(); if (GroupManager.isLoaded()) { @@ -148,7 +153,9 @@ public class Group extends DataUnit implements Cloneable { if (!isGlobal()) { if (this.inherits.contains(inherit.toLowerCase())) { - this.inherits.remove(inherit.toLowerCase()); + List<String> clone = new ArrayList<String>(inherits); + clone.remove(inherit.toLowerCase()); + inherits = Collections.unmodifiableList(clone); flagAsChanged(); GroupManagerEventHandler.callEvent(this, Action.GROUP_INHERITANCE_CHANGED); return true; |