summaryrefslogtreecommitdiffstats
path: root/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java
diff options
context:
space:
mode:
Diffstat (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java')
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java25
1 files changed, 15 insertions, 10 deletions
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java
index d0f5fed8b..ae6ba501b 100644
--- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java
+++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java
@@ -7,12 +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;
@@ -35,7 +34,7 @@ public class GlobalGroups {
private GroupManager plugin;
//private Yaml GGroups;
- private Map<String, Group> groups;
+ private final Map<String, Group> groups = Collections.synchronizedMap(new HashMap<String, Group>());
protected long timeStampGroups = 0;
protected boolean haveGroupsChanged = false;
@@ -55,11 +54,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 +228,7 @@ public class GlobalGroups {
Map<String, Object> groupsMap = new HashMap<String, Object>();
root.put("groups", groupsMap);
+ synchronized(groups) {
for (String groupKey : groups.keySet()) {
Group group = groups.get(groupKey);
@@ -245,6 +247,7 @@ public class GlobalGroups {
// Permission nodes
aGroupMap.put("permissions", group.getPermissionList());
}
+ }
if (!root.isEmpty()) {
DumperOptions opt = new DumperOptions();
@@ -418,26 +421,26 @@ public class GlobalGroups {
*
* @return Set containing all group names.
*/
- public Set<String> getGlobalGroups() {
+ /*public Set<String> getGlobalGroups() {
return groups.keySet();
- }
+ }*/
/**
* Resets GlobalGroups.
*/
public void resetGlobalGroups() {
-
- this.groups = new HashMap<String, Group>();
+ this.groups.clear();
}
/**
*
* @return a collection of the groups
*/
- public Collection<Group> getGroupList() {
-
- return groups.values();
+ public Group[] getGroupList() {
+ synchronized(groups) {
+ return groups.values().toArray(new Group[0]);
+ }
}
/**
@@ -469,9 +472,11 @@ public class GlobalGroups {
public void removeGroupsChangedFlag() {
setGroupsChanged(false);
+ synchronized(groups) {
for (Group g : groups.values()) {
g.flagAsSaved();
}
+ }
}
} \ No newline at end of file