aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java67
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomMemberJabberImpl.java14
-rw-r--r--test/net/java/sip/communicator/slick/protocol/jabber/TestOperationSetMultiUserChat2.java10
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);