From 96ab1b4533b62464b8325373e677209290bced3e Mon Sep 17 00:00:00 2001 From: ElgarL Date: Mon, 10 Sep 2012 00:15:42 +0100 Subject: Change to Hashtables to reduce the chance of a ConcurrentModificationException pulling group/user data in an Async thread. --- .../src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java | 6 +++--- 1 file changed, 3 insertions(+), 3 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..ed6a985ed 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java @@ -1,7 +1,7 @@ package org.anjocaido.groupmanager.dataholder; import java.io.File; -import java.util.HashMap; +import java.util.Hashtable; import java.util.Map; import org.anjocaido.groupmanager.data.Group; @@ -23,7 +23,7 @@ public class GroupsDataHolder { /** * The actual groups holder */ - private Map groups = new HashMap(); + private Hashtable groups = new Hashtable(); /** * Constructor @@ -69,7 +69,7 @@ public class GroupsDataHolder { */ public void setGroups(Map groups) { - this.groups = groups; + this.groups = (Hashtable) groups; } /** -- cgit v1.2.3 From 736a6d273abb000c81b17d0142ce358d2225f873 Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 10 Sep 2012 19:06:17 +0200 Subject: Revert bad synchronization This reverts commit 96ab1b4533b62464b8325373e677209290bced3e. --- .../src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java | 6 +++--- 1 file changed, 3 insertions(+), 3 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 ed6a985ed..eaaaace74 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java @@ -1,7 +1,7 @@ package org.anjocaido.groupmanager.dataholder; import java.io.File; -import java.util.Hashtable; +import java.util.HashMap; import java.util.Map; import org.anjocaido.groupmanager.data.Group; @@ -23,7 +23,7 @@ public class GroupsDataHolder { /** * The actual groups holder */ - private Hashtable groups = new Hashtable(); + private Map groups = new HashMap(); /** * Constructor @@ -69,7 +69,7 @@ public class GroupsDataHolder { */ public void setGroups(Map groups) { - this.groups = (Hashtable) groups; + this.groups = groups; } /** -- cgit v1.2.3 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 --- .../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