From 1cf0ebbd7f120c0b8d421cc459f2d5a1386d82dc Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 10 Sep 2012 20:49:07 +0200 Subject: Thread safety for GM --- .../org/anjocaido/groupmanager/GlobalGroups.java | 23 ++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java') diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java index d0f5fed8b..d4871b286 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java @@ -8,6 +8,7 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -35,7 +36,7 @@ public class GlobalGroups { private GroupManager plugin; //private Yaml GGroups; - private Map groups; + private final Map groups = Collections.synchronizedMap(new HashMap()); protected long timeStampGroups = 0; protected boolean haveGroupsChanged = false; @@ -55,11 +56,13 @@ public class GlobalGroups { if (this.haveGroupsChanged) { return true; } + synchronized(groups) { for (Group g : groups.values()) { if (g.isChanged()) { return true; } } + } return false; } @@ -227,6 +230,7 @@ public class GlobalGroups { Map groupsMap = new HashMap(); root.put("groups", groupsMap); + synchronized(groups) { for (String groupKey : groups.keySet()) { Group group = groups.get(groupKey); @@ -245,6 +249,7 @@ public class GlobalGroups { // Permission nodes aGroupMap.put("permissions", group.getPermissionList()); } + } if (!root.isEmpty()) { DumperOptions opt = new DumperOptions(); @@ -418,26 +423,26 @@ public class GlobalGroups { * * @return Set containing all group names. */ - public Set getGlobalGroups() { + /*public Set getGlobalGroups() { return groups.keySet(); - } + }*/ /** * Resets GlobalGroups. */ public void resetGlobalGroups() { - - this.groups = new HashMap(); + this.groups.clear(); } /** * * @return a collection of the groups */ - public Collection getGroupList() { - - return groups.values(); + public Group[] getGroupList() { + synchronized(groups) { + return groups.values().toArray(new Group[0]); + } } /** @@ -469,9 +474,11 @@ public class GlobalGroups { public void removeGroupsChangedFlag() { setGroupsChanged(false); + synchronized(groups) { for (Group g : groups.values()) { g.flagAsSaved(); } + } } } \ No newline at end of file -- cgit v1.2.3 From 75f7b06a23e8bed40d30068542b97959663c75e8 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Tue, 11 Sep 2012 11:12:19 +0100 Subject: Remove unused imports. --- EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java | 2 -- 1 file changed, 2 deletions(-) (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java') diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java index d4871b286..ae6ba501b 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java @@ -7,13 +7,11 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; -import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.logging.Level; import org.anjocaido.groupmanager.data.Group; -- cgit v1.2.3