diff options
3 files changed, 61 insertions, 30 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 7b2aadd..490a016 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java @@ -101,8 +101,8 @@ public class ChatRoomJabberImpl /** * The list of members of this chat room. */ - private final Hashtable<String, ChatRoomMember> members - = new Hashtable<String, ChatRoomMember>(); + private final Hashtable<String, ChatRoomMemberJabberImpl> members + = new Hashtable<String, ChatRoomMemberJabberImpl>(); /** * The list of banned members of this chat room. @@ -622,16 +622,16 @@ public class ChatRoomJabberImpl * @return the <tt>ChatRoomMember</tt> corresponding to the given smack * participant */ - public ChatRoomMember smackParticipantToScMember(String participant) + public ChatRoomMemberJabberImpl smackParticipantToScMember(String participant) { String participantName = StringUtils.parseResource(participant); - Iterator<ChatRoomMember> chatRoomMembers = + Iterator<ChatRoomMemberJabberImpl> chatRoomMembers = this.members.values().iterator(); while(chatRoomMembers.hasNext()) { - ChatRoomMember member = chatRoomMembers.next(); + ChatRoomMemberJabberImpl member = chatRoomMembers.next(); if(participantName.equals(member.getName()) || participant.equals(member.getContactAddress())) @@ -807,7 +807,8 @@ public class ChatRoomJabberImpl logger.info(participant + " has been banned from " + getName() + " chat room."); - ChatRoomMember member = smackParticipantToScMember(participant); + ChatRoomMemberJabberImpl member = + smackParticipantToScMember(participant); if(member == null) return; @@ -818,7 +819,7 @@ public class ChatRoomJabberImpl banList.put(participant, member); - fireMemberRoleEvent(member, member.getRole(), + fireMemberRoleEvent(member, member.getCurrentRole(), ChatRoomMemberRole.OUTCAST); } @@ -832,12 +833,13 @@ public class ChatRoomJabberImpl */ public void adminGranted(String participant) { - ChatRoomMember member = smackParticipantToScMember(participant); + ChatRoomMemberJabberImpl member = + smackParticipantToScMember(participant); if(member == null) return; - fireMemberRoleEvent(member, member.getRole(), + fireMemberRoleEvent(member, member.getCurrentRole(), ChatRoomMemberRole.ADMINISTRATOR); } @@ -852,12 +854,13 @@ public class ChatRoomJabberImpl */ public void adminRevoked(String participant) { - ChatRoomMember member = smackParticipantToScMember(participant); + ChatRoomMemberJabberImpl member = + smackParticipantToScMember(participant); if(member == null) return; - fireMemberRoleEvent(member, member.getRole(), + fireMemberRoleEvent(member, member.getCurrentRole(), ChatRoomMemberRole.MEMBER); } @@ -957,7 +960,7 @@ public class ChatRoomJabberImpl String participantName = StringUtils.parseResource(participant); // chnage the member key - ChatRoomMember mem = members.remove(participantName); + ChatRoomMemberJabberImpl mem = members.remove(participantName); members.put(newNickname, mem); ChatRoomMemberPropertyChangeEvent evt @@ -981,12 +984,13 @@ public class ChatRoomJabberImpl */ public void ownershipRevoked(String participant) { - ChatRoomMember member = smackParticipantToScMember(participant); + ChatRoomMemberJabberImpl member = + smackParticipantToScMember(participant); if(member == null) return; - fireMemberRoleEvent(member, member.getRole(), + fireMemberRoleEvent(member, member.getCurrentRole(), ChatRoomMemberRole.MEMBER); } @@ -1032,12 +1036,13 @@ public class ChatRoomJabberImpl */ public void moderatorGranted(String participant) { - ChatRoomMember member = smackParticipantToScMember(participant); + ChatRoomMemberJabberImpl member = + smackParticipantToScMember(participant); if(member == null) return; - fireMemberRoleEvent(member, member.getRole(), + fireMemberRoleEvent(member, member.getCurrentRole(), ChatRoomMemberRole.MODERATOR); } @@ -1051,12 +1056,13 @@ public class ChatRoomJabberImpl */ public void voiceRevoked(String participant) { - ChatRoomMember member = smackParticipantToScMember(participant); + ChatRoomMemberJabberImpl member = + smackParticipantToScMember(participant); if(member == null) return; - fireMemberRoleEvent(member, member.getRole(), + fireMemberRoleEvent(member, member.getCurrentRole(), ChatRoomMemberRole.SILENT_MEMBER); } @@ -1069,12 +1075,13 @@ public class ChatRoomJabberImpl */ public void membershipGranted(String participant) { - ChatRoomMember member = smackParticipantToScMember(participant); + ChatRoomMemberJabberImpl member = + smackParticipantToScMember(participant); if(member == null) return; - fireMemberRoleEvent(member, member.getRole(), + fireMemberRoleEvent(member, member.getCurrentRole(), ChatRoomMemberRole.MEMBER); } @@ -1089,12 +1096,13 @@ public class ChatRoomJabberImpl */ public void moderatorRevoked(String participant) { - ChatRoomMember member = smackParticipantToScMember(participant); + ChatRoomMemberJabberImpl member = + smackParticipantToScMember(participant); if(member == null) return; - fireMemberRoleEvent(member, member.getRole(), + fireMemberRoleEvent(member, member.getCurrentRole(), ChatRoomMemberRole.MEMBER); } @@ -1108,12 +1116,13 @@ public class ChatRoomJabberImpl */ public void voiceGranted(String participant) { - ChatRoomMember member = smackParticipantToScMember(participant); + ChatRoomMemberJabberImpl member = + smackParticipantToScMember(participant); if(member == null) return; - fireMemberRoleEvent(member, member.getRole(), + fireMemberRoleEvent(member, member.getCurrentRole(), ChatRoomMemberRole.MEMBER); } @@ -1128,12 +1137,13 @@ public class ChatRoomJabberImpl */ public void membershipRevoked(String participant) { - ChatRoomMember member = smackParticipantToScMember(participant); + ChatRoomMemberJabberImpl member = + smackParticipantToScMember(participant); if(member == null) return; - fireMemberRoleEvent(member, member.getRole(), + fireMemberRoleEvent(member, member.getCurrentRole(), ChatRoomMemberRole.GUEST); } @@ -1147,12 +1157,13 @@ public class ChatRoomJabberImpl */ public void ownershipGranted(String participant) { - ChatRoomMember member = smackParticipantToScMember(participant); + ChatRoomMemberJabberImpl member = + smackParticipantToScMember(participant); if(member == null) return; - fireMemberRoleEvent(member, member.getRole(), + fireMemberRoleEvent(member, member.getCurrentRole(), ChatRoomMemberRole.OWNER); } } diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomMemberJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomMemberJabberImpl.java index 8c85296..55624cc 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomMemberJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomMemberJabberImpl.java @@ -80,6 +80,9 @@ public class ChatRoomMemberJabberImpl // If we have found a contact we set also its avatar. if (contact != null) this.avatar = contact.getImage(); + + // just query the stack for role, if its present will be set + getRole(); } /** * Returns the chat room that this member is participating in. @@ -165,6 +168,17 @@ public class ChatRoomMemberJabberImpl } /** + * Returns the current role without trying to query it in the stack. + * Mostly used for event creating on member role change. + * + * @return the current role of this member. + */ + ChatRoomMemberRole getCurrentRole() + { + return this.role; + } + + /** * Sets the role of this member. * @param role the role to set */ diff --git a/test/net/java/sip/communicator/slick/protocol/jabber/TestOperationSetMultiUserChat2.java b/test/net/java/sip/communicator/slick/protocol/jabber/TestOperationSetMultiUserChat2.java index 23d70e3..cd763d1 100644 --- a/test/net/java/sip/communicator/slick/protocol/jabber/TestOperationSetMultiUserChat2.java +++ b/test/net/java/sip/communicator/slick/protocol/jabber/TestOperationSetMultiUserChat2.java @@ -378,9 +378,9 @@ public class TestOperationSetMultiUserChat2 // new TestOperationSetMultiUserChat2("testGrantMembership")); suite.addTest(new TestOperationSetMultiUserChat2("testGrantModerator")); - + suite.addTest(new TestOperationSetMultiUserChat2("testRevokeVoice")); - + suite.addTest(new TestOperationSetMultiUserChat2("testGrantVoice")); suite.addTest( @@ -1378,6 +1378,8 @@ public class TestOperationSetMultiUserChat2 public void testGrantModerator() throws OperationFailedException, OperationNotSupportedException { + logger.info("---= Start test for GrantModerator =---"); + String roomName = testRoomBaseName + roomID; ChatRoom roomUser1 = opSetMUC1.findRoom(roomName); assertNotNull("The room can't be retrieved on user1's side", roomUser1); @@ -1442,6 +1444,8 @@ public class TestOperationSetMultiUserChat2 public void testRevokeVoice() throws OperationFailedException, OperationNotSupportedException { + logger.info("---= Start test for RevokeVoice =---"); + String roomName = testRoomBaseName + roomID; ChatRoom roomUser1 = opSetMUC1.findRoom(roomName); assertNotNull("The room can't be retrieved on user1's side", roomUser1); @@ -1510,6 +1514,8 @@ public class TestOperationSetMultiUserChat2 public void testGrantVoice() throws OperationFailedException, OperationNotSupportedException { + logger.info("---= Start test for GrantVoice =---"); + String roomName = testRoomBaseName + roomID; ChatRoom roomUser1 = opSetMUC1.findRoom(roomName); assertNotNull("The room can't be retrieved on user1's side", roomUser1); |