summaryrefslogtreecommitdiffstats
path: root/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java
diff options
context:
space:
mode:
authormd_5 <md_5@bigpond.com>2012-09-16 23:02:56 +1000
committermd_5 <md_5@bigpond.com>2012-09-16 23:02:56 +1000
commitfd61cd17502eae4097df692063f9e76ea647226c (patch)
tree4c850d22c45f180d670bca0663c35dbf00bc2f2d /EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java
parente7ae8bcc4756fd8306814565ded2ec4a06897bf9 (diff)
parent75f7b06a23e8bed40d30068542b97959663c75e8 (diff)
downloadEssentials-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.java21
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;