aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorhristoterezov <hristo@jitsi.org>2013-08-27 16:23:26 +0300
committerhristoterezov <hristo@jitsi.org>2013-08-27 16:23:26 +0300
commit24983e118de2684f562a5fa63d43e171a1d1a600 (patch)
tree4e75d020b3c26129047b1932ad005226829bbc1f /src
parent687be4f5b21d7eab4bc02a50b5fd8c1aef005fd6 (diff)
downloadjitsi-24983e118de2684f562a5fa63d43e171a1d1a600.zip
jitsi-24983e118de2684f562a5fa63d43e171a1d1a600.tar.gz
jitsi-24983e118de2684f562a5fa63d43e171a1d1a600.tar.bz2
Adds synchronized to members property.
Diffstat (limited to 'src')
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java94
1 files changed, 60 insertions, 34 deletions
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java
index ff05562..cb043e9 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java
@@ -384,7 +384,10 @@ public class ChatRoomJabberImpl
*/
public List<ChatRoomMember> getMembers()
{
- return new LinkedList<ChatRoomMember>(members.values());
+ synchronized (members)
+ {
+ return new LinkedList<ChatRoomMember>(members.values());
+ }
}
/**
@@ -543,8 +546,10 @@ public class ChatRoomJabberImpl
nickname,
provider.getAccountID()
.getAccountAddress());
-
- members.put(nickname, member);
+ synchronized (members)
+ {
+ members.put(nickname, member);
+ }
// We don't specify a reason.
opSetMuc.fireLocalUserPresenceEvent(this,
@@ -729,18 +734,20 @@ public class ChatRoomJabberImpl
public ChatRoomMemberJabberImpl smackParticipantToScMember(String participant)
{
String participantName = StringUtils.parseResource(participant);
-
- Iterator<ChatRoomMemberJabberImpl> chatRoomMembers =
- this.members.values().iterator();
-
- while(chatRoomMembers.hasNext())
+ synchronized (members)
{
- ChatRoomMemberJabberImpl member = chatRoomMembers.next();
-
- if(participantName.equals(member.getName())
- || participant.equals(member.getContactAddress())
- || participantName.equals(member.getContactAddress()))
- return member;
+ Iterator<ChatRoomMemberJabberImpl> chatRoomMembers =
+ this.members.values().iterator();
+
+ while(chatRoomMembers.hasNext())
+ {
+ ChatRoomMemberJabberImpl member = chatRoomMembers.next();
+
+ if(participantName.equals(member.getName())
+ || participant.equals(member.getContactAddress())
+ || participantName.equals(member.getContactAddress()))
+ return member;
+ }
}
return null;
}
@@ -765,14 +772,20 @@ public class ChatRoomJabberImpl
}
// FIXME Do we have to do the following when we leave the room?
- for (ChatRoomMember member : members.values())
- fireMemberPresenceEvent(
- member,
- ChatRoomMemberPresenceChangeEvent.MEMBER_LEFT,
- "Local user has left the chat room.");
+ synchronized (members)
+ {
+ for (ChatRoomMember member : members.values())
+ fireMemberPresenceEvent(
+ member,
+ ChatRoomMemberPresenceChangeEvent.MEMBER_LEFT,
+ "Local user has left the chat room.");
+
+ // Delete the list of members
+ members.clear();
+ }
+
- // Delete the list of members
- members.clear();
+
// connection can be null if we are leaving cause connection failed
if(connection != null)
@@ -928,9 +941,12 @@ public class ChatRoomJabberImpl
return;
String participantName = StringUtils.parseResource(participant);
-
- members.remove(participantName);
-
+
+ synchronized (members)
+ {
+ members.remove(participantName);
+ }
+
banList.put(participant, member);
fireMemberRoleEvent(member, member.getCurrentRole(),
@@ -1043,8 +1059,10 @@ public class ChatRoomJabberImpl
return;
String participantName = StringUtils.parseResource(participant);
-
- members.remove(participantName);
+ synchronized (members)
+ {
+ members.remove(participantName);
+ }
fireMemberPresenceEvent(member,
ChatRoomMemberPresenceChangeEvent.MEMBER_LEFT, null);
@@ -1072,11 +1090,14 @@ public class ChatRoomJabberImpl
((ChatRoomMemberJabberImpl) member).setName(newNickname);
String participantName = StringUtils.parseResource(participant);
-
- // chnage the member key
- ChatRoomMemberJabberImpl mem = members.remove(participantName);
- members.put(newNickname, mem);
-
+
+ synchronized (members)
+ {
+ // chnage the member key
+ ChatRoomMemberJabberImpl mem = members.remove(participantName);
+ members.put(newNickname, mem);
+ }
+
ChatRoomMemberPropertyChangeEvent evt
= new ChatRoomMemberPropertyChangeEvent(
member,
@@ -1132,8 +1153,10 @@ public class ChatRoomJabberImpl
return;
String participantName = StringUtils.parseResource(participant);
-
- members.remove(participantName);
+ synchronized (members)
+ {
+ members.remove(participantName);
+ }
fireMemberPresenceEvent(member, actorMember,
ChatRoomMemberPresenceChangeEvent.MEMBER_KICKED, reason);
@@ -2179,7 +2202,10 @@ public class ChatRoomJabberImpl
*/
public ChatRoomMemberJabberImpl findMemberForNickName(String jabberID)
{
- return members.get(jabberID);
+ synchronized (members)
+ {
+ return members.get(jabberID);
+ }
}
/**