From f07c89803f9ae9b2c1780037e458dbb526c11ee3 Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 10 Sep 2012 20:49:07 +0200 Subject: Thread safety for GM --- .../anjocaido/groupmanager/dataholder/GroupsDataHolder.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java') diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java index eaaaace74..fdd099c87 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java @@ -1,6 +1,7 @@ package org.anjocaido.groupmanager.dataholder; import java.io.File; +import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -23,7 +24,7 @@ public class GroupsDataHolder { /** * The actual groups holder */ - private Map groups = new HashMap(); + private final Map groups = Collections.synchronizedMap(new HashMap()); /** * Constructor @@ -36,8 +37,10 @@ public class GroupsDataHolder { this.dataSource = dataSource; //push this data source to the users, so they pull the correct groups data. + synchronized(groups) { for (Group group : groups.values()) group.setDataSource(this.dataSource); + } } /** @@ -57,6 +60,7 @@ public class GroupsDataHolder { } /** + * Note: Iteration over this object has to be synchronized! * @return the groups */ public Map getGroups() { @@ -67,9 +71,8 @@ public class GroupsDataHolder { /** * @param groups the groups to set */ - public void setGroups(Map groups) { - - this.groups = groups; + public void resetGroups() { + this.groups.clear(); } /** -- cgit v1.2.3