From db41fa2525d504ee927c203b5c2a203872a3b7cf Mon Sep 17 00:00:00 2001 From: Danny van Heumen Date: Thu, 18 Dec 2014 00:28:46 +0100 Subject: [PATCH] Work-in-progress on MUC member presence. --- .../impl/gui/main/chat/ChatPanel.java | 21 ++-- .../conference/ChatContactCellRenderer.java | 13 +- .../main/contactlist/DefaultContactList.java | 3 + .../msghistory/MessageHistoryServiceImpl.java | 13 +- .../impl/protocol/irc/ChannelManager.java | 112 ++++++++++++++++-- .../protocol/irc/ChatRoomMemberIrcImpl.java | 37 +++++- .../irc/OperationSetMultiUserChatIrcImpl.java | 2 +- .../jabber/ChatRoomMemberJabberImpl.java | 14 +++ .../protocol/mock/MockChatRoomMember.java | 10 ++ .../service/protocol/ChatRoomMember.java | 11 ++ .../ChatRoomMemberPropertyChangeEvent.java | 5 + .../irc/ChatRoomMemberIrcImplTest.java | 78 ++++++------ 12 files changed, 261 insertions(+), 58 deletions(-) diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/ChatPanel.java b/src/net/java/sip/communicator/impl/gui/main/chat/ChatPanel.java index 77718d8b0..3d08edf5b 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/ChatPanel.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/ChatPanel.java @@ -3059,17 +3059,20 @@ public void loadSkin() */ public void chatRoomPropertyChanged(ChatRoomMemberPropertyChangeEvent event) { - String message = GuiActivator.getResources().getI18NString( - "service.gui.CHAT_NICKNAME_CHANGE", - new String[]{ - (String) event.getOldValue(), - (String) event.getNewValue() - }); - this.conversationPanel - .appendMessageToEnd( + if (ChatRoomMemberPropertyChangeEvent.MEMBER_NICKNAME.equals(event + .getPropertyName())) + { + String message = + GuiActivator.getResources().getI18NString( + "service.gui.CHAT_NICKNAME_CHANGE", + new String[] + { (String) event.getOldValue(), + (String) event.getNewValue() }); + this.conversationPanel.appendMessageToEnd( "
" - + StringEscapeUtils.escapeHtml4(message) + "
", + + StringEscapeUtils.escapeHtml4(message) + "", ChatHtmlUtils.HTML_CONTENT_TYPE); + } } /** diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatContactCellRenderer.java b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatContactCellRenderer.java index 936c05ecc..7264b6b1b 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatContactCellRenderer.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatContactCellRenderer.java @@ -91,9 +91,18 @@ public Component getListCellRendererComponent( JList list, if(memberRole != null) this.nameLabel.setIcon( ChatContactRoleIcon.getRoleIcon(memberRole)); - } - if (contactForegroundColor != null) + // FIXME Make solution more generic by querying color from presence + // status instance. + final int presenceStatus = member.getPresenceStatus().getStatus(); + if (presenceStatus >= PresenceStatus.AVAILABLE_THRESHOLD) { + this.nameLabel.setForeground(Color.BLACK); + } + else if (presenceStatus >= PresenceStatus.AWAY_THRESHOLD) { + this.nameLabel.setForeground(Color.GRAY); + } + } + else if (contactForegroundColor != null) this.nameLabel.setForeground(contactForegroundColor); this.setBorder(BorderFactory.createEmptyBorder(1, 5, 1, 1)); diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/DefaultContactList.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/DefaultContactList.java index 41d858be3..98a0a9389 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/DefaultContactList.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/DefaultContactList.java @@ -197,6 +197,9 @@ else if (element instanceof ChatContact) tip.addLine(ChatContactRoleIcon.getRoleIcon(member.getRole()), roleName); + // FIXME Needs i18n status name + PresenceStatus status = member.getPresenceStatus(); + tip.addLine(null, status.getStatusName()); } } diff --git a/src/net/java/sip/communicator/impl/msghistory/MessageHistoryServiceImpl.java b/src/net/java/sip/communicator/impl/msghistory/MessageHistoryServiceImpl.java index 1b7354792..605b5dbf6 100644 --- a/src/net/java/sip/communicator/impl/msghistory/MessageHistoryServiceImpl.java +++ b/src/net/java/sip/communicator/impl/msghistory/MessageHistoryServiceImpl.java @@ -6,8 +6,7 @@ */ package net.java.sip.communicator.impl.msghistory; -import static - net.java.sip.communicator.service.history.HistoryService.DATE_FORMAT; +import static net.java.sip.communicator.service.history.HistoryService.*; import java.beans.*; import java.io.*; @@ -24,9 +23,10 @@ import net.java.sip.communicator.service.msghistory.event.*; import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.service.protocol.event.*; +import net.java.sip.communicator.service.protocol.globalstatus.*; import net.java.sip.communicator.util.*; - import net.java.sip.communicator.util.account.*; + import org.jitsi.service.configuration.*; import org.osgi.framework.*; @@ -2720,6 +2720,13 @@ public void setConferenceDescription(ConferenceDescription cd) { return; } + + @Override + public PresenceStatus getPresenceStatus() + { + // FIXME is this correct response? + return GlobalStatusEnum.ONLINE; + } } /** diff --git a/src/net/java/sip/communicator/impl/protocol/irc/ChannelManager.java b/src/net/java/sip/communicator/impl/protocol/irc/ChannelManager.java index 8ca037431..168b92c3b 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/ChannelManager.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/ChannelManager.java @@ -451,7 +451,7 @@ private void prepareChatRoom(final ChatRoomIrcImpl chatRoom, final ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(this.provider, chatRoom, user.getNick(), user.getIdent(), user.getHostname(), - ChatRoomMemberRole.SILENT_MEMBER); + ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); ChatRoomMemberRole role; for (final IRCUserStatus status : channel.getStatusesForUser(user)) { @@ -790,11 +790,26 @@ private final class ChatRoomListener */ private static final int IRC_ERR_NOTONCHANNEL = 442; + /** + * IRC reply code for WHO reply entry for an individual user. + */ + private static final int IRC_RPL_WHOREPLY = 352; + + /** + * IRC reply code for end of WHO reply list. + */ + private static final int IRC_RPL_ENDOFWHO = 315; + /** * Chat room for which this listener is working. */ private final ChatRoomIrcImpl chatroom; + /** + * Periodic task timer. + */ + private final Timer presenceTaskTimer; + /** * Constructor. Instantiate listener for the provided chat room. * @@ -808,6 +823,27 @@ private ChatRoomListener(final ChatRoomIrcImpl chatroom) throw new IllegalArgumentException("chatroom cannot be null"); } this.chatroom = chatroom; + this.presenceTaskTimer = createPeriodicPresenceWatcher(); + } + + /** + * Create periodic task for updating channel presence statuses. + */ + private Timer createPeriodicPresenceWatcher() { + final Timer presence = new Timer(); + final TimerTask task = new TimerTask() + { + @Override + public void run() + { + irc.rawMessage("WHO " + chatroom.getIdentifier()); + } + }; + // FIXME create constants + presence.schedule(task, 1000L, 60000L); + LOGGER.debug("Scheduled periodic task for querying member presence " + + "for channel " + this.chatroom.getIdentifier()); + return presence; } /** @@ -858,7 +894,7 @@ public void onChannelJoin(final ChanJoinMessage msg) final ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(ChannelManager.this.provider, this.chatroom, user, ident, host, - ChatRoomMemberRole.SILENT_MEMBER); + ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); this.chatroom.fireMemberPresenceEvent(member, null, ChatRoomMemberPresenceChangeEvent.MEMBER_JOINED, null); } @@ -951,11 +987,48 @@ public void onServerNumericMessage(final ServerNumericMessage msg) } break; + case IRC_RPL_WHOREPLY: + // FIXME filter out replies not for this channel + final String[] messageComponents = msg.getText().split(" "); + final String nick = messageComponents[4]; + final ChatRoomMemberIrcImpl member = + (ChatRoomMemberIrcImpl) this.chatroom + .getChatRoomMember(nick); + if (member != null) + { + final IrcStatusEnum status = + determineStatus(messageComponents[5]); + final IrcStatusEnum previous = + member.setPresenceStatus(status); + final ChatRoomMemberPropertyChangeEvent presenceEvent = + new ChatRoomMemberPropertyChangeEvent(member, + this.chatroom, + ChatRoomMemberPropertyChangeEvent.MEMBER_PRESENCE, + previous, status); + this.chatroom.fireMemberPropertyChangeEvent(presenceEvent); + } + break; + default: break; } } + /** + * Determine the presence status by the code in the IRC WHO reply. + * + * @param presenceReply presence code + * @return returns corresponding IrcStatusEnum instance + */ + private IrcStatusEnum determineStatus(final String presenceReply) + { + if (presenceReply != null && presenceReply.startsWith("G")) + { + return IrcStatusEnum.AWAY; + } + return IrcStatusEnum.ONLINE; + } + /** * Event in case of channel kick. * @@ -1009,9 +1082,12 @@ public void onChannelKick(final ChannelKick msg) @Override public void onUserQuit(final QuitMessage msg) { - String user = msg.getSource().getNick(); - super.onUserQuit(msg); - if (!localUser(user)) + final String user = msg.getSource().getNick(); + if (localUser(user)) + { + this.presenceTaskTimer.cancel(); + } + else { final ChatRoomMember member = this.chatroom.getChatRoomMember(user); @@ -1022,6 +1098,18 @@ public void onUserQuit(final QuitMessage msg) msg.getQuitMsg()); } } + super.onUserQuit(msg); + } + + /** + * Event in case of error. Cancel running timer then do the regular + * onError stuff. + */ + @Override + public void onError(ErrorMessage msg) + { + this.presenceTaskTimer.cancel(); + super.onError(msg); } /** @@ -1071,11 +1159,12 @@ public void onChannelMessage(final ChannelPrivMsg msg) final MessageIrcImpl message = MessageIrcImpl.newMessageFromIRC(msg.getText()); + // FIXME why create a new instance? final ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(ChannelManager.this.provider, this.chatroom, msg.getSource().getNick(), msg.getSource() .getIdent(), msg.getSource().getHostname(), - ChatRoomMemberRole.MEMBER); + ChatRoomMemberRole.MEMBER, IrcStatusEnum.ONLINE); this.chatroom.fireMessageReceivedEvent(message, member, new Date(), ChatRoomMessageReceivedEvent.CONVERSATION_MESSAGE_RECEIVED); } @@ -1094,10 +1183,12 @@ public void onChannelAction(final ChannelActionMsg msg) } String userNick = msg.getSource().getNick(); + // FIXME why create a new instance? ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(ChannelManager.this.provider, this.chatroom, userNick, msg.getSource().getIdent(), msg - .getSource().getHostname(), ChatRoomMemberRole.MEMBER); + .getSource().getHostname(), ChatRoomMemberRole.MEMBER, + IrcStatusEnum.ONLINE); MessageIrcImpl message = MessageIrcImpl.newActionFromIRC(msg.getText()); this.chatroom.fireMessageReceivedEvent(message, member, new Date(), @@ -1118,10 +1209,12 @@ public void onChannelNotice(final ChannelNotice msg) } final String userNick = msg.getSource().getNick(); + // FIXME why create a new instance? final ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(ChannelManager.this.provider, this.chatroom, userNick, msg.getSource().getIdent(), msg - .getSource().getHostname(), ChatRoomMemberRole.MEMBER); + .getSource().getHostname(), ChatRoomMemberRole.MEMBER, + IrcStatusEnum.ONLINE); final MessageIrcImpl message = MessageIrcImpl.newNoticeFromIRC(member, msg.getText()); this.chatroom.fireMessageReceivedEvent(message, member, new Date(), @@ -1133,6 +1226,7 @@ public void onChannelNotice(final ChannelNotice msg) */ private void leaveChatRoom() { + this.presenceTaskTimer.cancel(); this.irc.deleteListener(this); ChannelManager.this.joined.remove(this.chatroom.getIdentifier()); LOGGER.debug("Leaving chat room " + this.chatroom.getIdentifier() @@ -1348,7 +1442,7 @@ private ChatRoomMemberIrcImpl extractChatRoomMember( member = new ChatRoomMemberIrcImpl(ChannelManager.this.provider, this.chatroom, "", "", "", - ChatRoomMemberRole.ADMINISTRATOR); + ChatRoomMemberRole.ADMINISTRATOR, IrcStatusEnum.ONLINE); } else if (source instanceof IRCUser) { diff --git a/src/net/java/sip/communicator/impl/protocol/irc/ChatRoomMemberIrcImpl.java b/src/net/java/sip/communicator/impl/protocol/irc/ChatRoomMemberIrcImpl.java index 19a9472f8..66f9bd879 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/ChatRoomMemberIrcImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/ChatRoomMemberIrcImpl.java @@ -58,6 +58,11 @@ public class ChatRoomMemberIrcImpl private final SortedSet roles = new TreeSet(); + /** + * Member's presence status in the chat room. + */ + private IrcStatusEnum status; + /** * Creates an instance of ChatRoomMemberIrcImpl, by specifying the * protocol provider, the corresponding chat room, where this member is @@ -71,12 +76,14 @@ public class ChatRoomMemberIrcImpl * @param ident ident of member * @param hostname host name of member * @param chatRoomMemberRole the role that this member has in the + * @param status current presence status * corresponding chat room */ public ChatRoomMemberIrcImpl( final ProtocolProviderServiceIrcImpl parentProvider, final ChatRoom chatRoom, final String contactID, final String ident, - final String hostname, final ChatRoomMemberRole chatRoomMemberRole) + final String hostname, final ChatRoomMemberRole chatRoomMemberRole, + final IrcStatusEnum status) { if (parentProvider == null) { @@ -110,6 +117,11 @@ public ChatRoomMemberIrcImpl( throw new IllegalArgumentException("member role cannot be null"); } this.roles.add(chatRoomMemberRole); + if (status == null) + { + throw new IllegalArgumentException("status cannot be null"); + } + this.status = status; } /** @@ -298,4 +310,27 @@ public boolean equals(final Object obj) return false; return true; } + + /** + * Return the chat room member's most recent presence status. + * + * @return returns the most recent presence status + */ + @Override + public PresenceStatus getPresenceStatus() + { + return this.status; + } + + /** + * Set a new presence status. + * + * @param status the new presence status + */ + IrcStatusEnum setPresenceStatus(final IrcStatusEnum status) + { + final IrcStatusEnum previous = this.status; + this.status = status; + return previous; + } } diff --git a/src/net/java/sip/communicator/impl/protocol/irc/OperationSetMultiUserChatIrcImpl.java b/src/net/java/sip/communicator/impl/protocol/irc/OperationSetMultiUserChatIrcImpl.java index 4ee475548..8fc7c1919 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/OperationSetMultiUserChatIrcImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/OperationSetMultiUserChatIrcImpl.java @@ -362,7 +362,7 @@ protected ChatRoomMemberIrcImpl findSystemMember() return new ChatRoomMemberIrcImpl(ircProvider, serverChatRoom, ircProvider.getAccountID().getService(), "", ircProvider .getAccountID().getServerAddress(), - ChatRoomMemberRole.GUEST); + ChatRoomMemberRole.GUEST, IrcStatusEnum.ONLINE); } } 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 22916c51c..ca91a4df5 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomMemberJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomMemberJabberImpl.java @@ -8,6 +8,7 @@ import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.service.protocol.jabber.*; +import net.java.sip.communicator.service.protocol.jabberconstants.*; import org.jivesoftware.smack.util.*; import org.jivesoftware.smackx.muc.*; @@ -250,4 +251,17 @@ public void setContact(Contact contact) { this.contact = contact; } + + /** + * Current presence status of chat room member. + * + * @return returns current presence status + */ + @Override + public PresenceStatus getPresenceStatus() + { + // FIXME implement accurate status for chat room member + return ((ProtocolProviderServiceJabberImpl) getProtocolProvider()) + .getJabberStatusEnum().getStatus(JabberStatusEnum.AVAILABLE); + } } diff --git a/src/net/java/sip/communicator/impl/protocol/mock/MockChatRoomMember.java b/src/net/java/sip/communicator/impl/protocol/mock/MockChatRoomMember.java index cba9dbe1f..4c45603f4 100644 --- a/src/net/java/sip/communicator/impl/protocol/mock/MockChatRoomMember.java +++ b/src/net/java/sip/communicator/impl/protocol/mock/MockChatRoomMember.java @@ -134,4 +134,14 @@ public Contact getContact() { return contact; } + + /** + * Returns status for fully available mock chat room member. + */ + @Override + public PresenceStatus getPresenceStatus() + { + // mock fully available + return MockStatusEnum.MOCK_STATUS_100; + } } diff --git a/src/net/java/sip/communicator/service/protocol/ChatRoomMember.java b/src/net/java/sip/communicator/service/protocol/ChatRoomMember.java index 82fac370a..991f4bed9 100644 --- a/src/net/java/sip/communicator/service/protocol/ChatRoomMember.java +++ b/src/net/java/sip/communicator/service/protocol/ChatRoomMember.java @@ -89,4 +89,15 @@ public interface ChatRoomMember * to set for this member in its containing chat room. */ public void setRole(ChatRoomMemberRole role); + + /** + * Returns the status of the chat room member as per the last status update + * we've received for it. Note that this method is not to perform any + * network operations and will simply return the status received in the last + * status update message. + * + * @return the PresenceStatus that we've received in the last status update + * pertaining to this contact. + */ + public PresenceStatus getPresenceStatus(); } diff --git a/src/net/java/sip/communicator/service/protocol/event/ChatRoomMemberPropertyChangeEvent.java b/src/net/java/sip/communicator/service/protocol/event/ChatRoomMemberPropertyChangeEvent.java index f42924d84..456ec4484 100644 --- a/src/net/java/sip/communicator/service/protocol/event/ChatRoomMemberPropertyChangeEvent.java +++ b/src/net/java/sip/communicator/service/protocol/event/ChatRoomMemberPropertyChangeEvent.java @@ -30,6 +30,11 @@ public class ChatRoomMemberPropertyChangeEvent */ public static final String MEMBER_NICKNAME = "MemberNickname"; + /** + * The presence status of the ChatRoomMember property. + */ + public static final String MEMBER_PRESENCE = "MemberPresence"; + /** * The ChatRoom, to which the corresponding member belongs. */ diff --git a/test/net/java/sip/communicator/impl/protocol/irc/ChatRoomMemberIrcImplTest.java b/test/net/java/sip/communicator/impl/protocol/irc/ChatRoomMemberIrcImplTest.java index 39af2d922..110a8f21f 100644 --- a/test/net/java/sip/communicator/impl/protocol/irc/ChatRoomMemberIrcImplTest.java +++ b/test/net/java/sip/communicator/impl/protocol/irc/ChatRoomMemberIrcImplTest.java @@ -20,7 +20,8 @@ public void testConstructorNullProvider() try { new ChatRoomMemberIrcImpl(null, chatroom, "user", "user", - "host.name", ChatRoomMemberRole.SILENT_MEMBER); + "host.name", ChatRoomMemberRole.SILENT_MEMBER, + IrcStatusEnum.ONLINE); Assert.fail("should throw IAE for parent provider instance"); } catch (IllegalArgumentException e) @@ -36,7 +37,8 @@ public void testConstructorNullChatRoom() try { new ChatRoomMemberIrcImpl(provider, null, "user", "user", - "host.name", ChatRoomMemberRole.SILENT_MEMBER); + "host.name", ChatRoomMemberRole.SILENT_MEMBER, + IrcStatusEnum.ONLINE); Assert.fail("should throw IAE for ChatRoom instance"); } catch (IllegalArgumentException e) @@ -53,7 +55,8 @@ public void testConstructorNullContactId() try { new ChatRoomMemberIrcImpl(provider, chatroom, null, "user", - "host.name", ChatRoomMemberRole.SILENT_MEMBER); + "host.name", ChatRoomMemberRole.SILENT_MEMBER, + IrcStatusEnum.ONLINE); Assert.fail("should throw IAE for ChatRoom instance"); } catch (IllegalArgumentException e) @@ -70,7 +73,8 @@ public void testConstructorNullIdent() try { new ChatRoomMemberIrcImpl(provider, chatroom, "user", null, - "host.name", ChatRoomMemberRole.SILENT_MEMBER); + "host.name", ChatRoomMemberRole.SILENT_MEMBER, + IrcStatusEnum.ONLINE); Assert.fail("should throw IAE for ChatRoom instance"); } catch (IllegalArgumentException e) @@ -87,7 +91,7 @@ public void testConstructorNullHostname() try { new ChatRoomMemberIrcImpl(provider, chatroom, "user", "user", null, - ChatRoomMemberRole.SILENT_MEMBER); + ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); Assert.fail("should throw IAE for ChatRoom instance"); } catch (IllegalArgumentException e) @@ -104,7 +108,7 @@ public void testConstructorNullRole() try { new ChatRoomMemberIrcImpl(provider, chatroom, "user", "user", - "host.name", null); + "host.name", null, IrcStatusEnum.ONLINE); Assert.fail("should throw IAE for ChatRoom instance"); } catch (IllegalArgumentException e) @@ -119,7 +123,8 @@ public void testConstructorSuccessful() ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); Assert.assertNotNull(new ChatRoomMemberIrcImpl(provider, chatroom, - "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER)); + "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER, + IrcStatusEnum.ONLINE)); } public void testCheckGetters() @@ -127,8 +132,10 @@ public void testCheckGetters() ChatRoom chatroom = EasyMock.createMock(ChatRoom.class); ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); - ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, - "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER); + ChatRoomMemberIrcImpl member = + new ChatRoomMemberIrcImpl(provider, chatroom, "user", "user", + "host.name", ChatRoomMemberRole.SILENT_MEMBER, + IrcStatusEnum.ONLINE); Assert.assertEquals(provider, member.getProtocolProvider()); Assert.assertEquals(chatroom, member.getChatRoom()); Assert.assertEquals("user", member.getContactAddress()); @@ -143,7 +150,8 @@ public void testNameNull() EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, "user", "user", - "host.name", ChatRoomMemberRole.SILENT_MEMBER); + "host.name", ChatRoomMemberRole.SILENT_MEMBER, + IrcStatusEnum.ONLINE); Assert.assertEquals("user", member.getContactAddress()); Assert.assertEquals("user", member.getName()); try @@ -162,8 +170,10 @@ public void testNameChange() ChatRoom chatroom = EasyMock.createMock(ChatRoom.class); ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); - ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, - "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER); + ChatRoomMemberIrcImpl member = + new ChatRoomMemberIrcImpl(provider, chatroom, "user", "user", + "host.name", ChatRoomMemberRole.SILENT_MEMBER, + IrcStatusEnum.ONLINE); Assert.assertEquals("user", member.getContactAddress()); Assert.assertEquals("user", member.getName()); member.setName("myNewName"); @@ -178,7 +188,7 @@ public void testRoleNull() EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, "user", "user", "host.name", - ChatRoomMemberRole.SILENT_MEMBER); + ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); member.setRole(null); } @@ -187,8 +197,10 @@ public void testRoleUnchange() ChatRoom chatroom = EasyMock.createMock(ChatRoom.class); ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); - ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, - "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER); + ChatRoomMemberIrcImpl member = + new ChatRoomMemberIrcImpl(provider, chatroom, "user", "user", + "host.name", ChatRoomMemberRole.SILENT_MEMBER, + IrcStatusEnum.ONLINE); Assert.assertSame(ChatRoomMemberRole.SILENT_MEMBER, member.getRole()); member.setRole(ChatRoomMemberRole.ADMINISTRATOR); Assert.assertSame(ChatRoomMemberRole.SILENT_MEMBER, member.getRole()); @@ -201,7 +213,7 @@ public void testAddSignificantRole() EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, "user", "user", "host.name", - ChatRoomMemberRole.SILENT_MEMBER); + ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); Assert.assertSame(ChatRoomMemberRole.SILENT_MEMBER, member.getRole()); member.addRole(ChatRoomMemberRole.ADMINISTRATOR); Assert.assertSame(ChatRoomMemberRole.ADMINISTRATOR, member.getRole()); @@ -214,7 +226,7 @@ public void testRemoveSignificantRole() EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, "user", "user", "host.name", - ChatRoomMemberRole.SILENT_MEMBER); + ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); member.addRole(ChatRoomMemberRole.ADMINISTRATOR); Assert.assertSame(ChatRoomMemberRole.ADMINISTRATOR, member.getRole()); member.removeRole(ChatRoomMemberRole.ADMINISTRATOR); @@ -228,7 +240,7 @@ public void testAddInsignificantRole() EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, "user", "user", "host.name", - ChatRoomMemberRole.ADMINISTRATOR); + ChatRoomMemberRole.ADMINISTRATOR, IrcStatusEnum.ONLINE); Assert.assertSame(ChatRoomMemberRole.ADMINISTRATOR, member.getRole()); member.addRole(ChatRoomMemberRole.MEMBER); Assert.assertSame(ChatRoomMemberRole.ADMINISTRATOR, member.getRole()); @@ -241,7 +253,7 @@ public void testRemoveInsignificantRole() EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, "user", "user", "host.name", - ChatRoomMemberRole.ADMINISTRATOR); + ChatRoomMemberRole.ADMINISTRATOR, IrcStatusEnum.ONLINE); member.addRole(ChatRoomMemberRole.MEMBER); Assert.assertSame(ChatRoomMemberRole.ADMINISTRATOR, member.getRole()); member.removeRole(ChatRoomMemberRole.MEMBER); @@ -259,7 +271,7 @@ public void testGetContact() EasyMock.replay(provider); ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, "user", "user", "host.name", - ChatRoomMemberRole.SILENT_MEMBER); + ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); Assert.assertNull(member.getContact()); } @@ -270,7 +282,7 @@ public void testGetAvatar() EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, "user", "user", "host.name", - ChatRoomMemberRole.SILENT_MEMBER); + ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); Assert.assertNull(member.getAvatar()); } @@ -280,7 +292,7 @@ public void testEqualsSame() ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, - "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER); + "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); Assert.assertTrue(member.equals(member)); } @@ -290,7 +302,7 @@ public void testEqualsNull() ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, - "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER); + "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); Assert.assertFalse(member.equals(null)); } @@ -300,7 +312,7 @@ public void testEqualsObject() ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, - "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER); + "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); Assert.assertFalse(member.equals(new Object())); } @@ -310,11 +322,11 @@ public void testEqualsSameUserDifferentProvider() ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member1 = new ChatRoomMemberIrcImpl(provider, chatroom, - "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER); + "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); ProtocolProviderServiceIrcImpl provider2 = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member2 = new ChatRoomMemberIrcImpl(provider2, chatroom, - "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER); + "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); Assert.assertFalse(member1.equals(member2)); } @@ -324,9 +336,9 @@ public void testEqualsSameProviderDifferentUser() ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member1 = new ChatRoomMemberIrcImpl(provider, chatroom, - "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER); + "user", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); ChatRoomMemberIrcImpl member2 = new ChatRoomMemberIrcImpl(provider, chatroom, - "susy", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER); + "susy", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); Assert.assertFalse(member1.equals(member2)); } @@ -336,9 +348,9 @@ public void testEqualsTrue() ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member1 = new ChatRoomMemberIrcImpl(provider, chatroom, - "susy", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER); + "susy", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); ChatRoomMemberIrcImpl member2 = new ChatRoomMemberIrcImpl(provider, chatroom, - "susy", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER); + "susy", "user", "host.name", ChatRoomMemberRole.SILENT_MEMBER, IrcStatusEnum.ONLINE); Assert.assertTrue(member1.equals(member2)); } @@ -349,7 +361,7 @@ public void testHashcodeNotFailing() EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, "ET", "user", "host.name", - ChatRoomMemberRole.ADMINISTRATOR); + ChatRoomMemberRole.ADMINISTRATOR, IrcStatusEnum.ONLINE); member.hashCode(); } @@ -360,7 +372,7 @@ public void testGetIdent() EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, "ET", "user", "host.name", - ChatRoomMemberRole.ADMINISTRATOR); + ChatRoomMemberRole.ADMINISTRATOR, IrcStatusEnum.ONLINE); Assert.assertEquals("user", member.getIdent()); } @@ -371,7 +383,7 @@ public void testGetHostname() EasyMock.createMock(ProtocolProviderServiceIrcImpl.class); ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom, "ET", "user", "host.name", - ChatRoomMemberRole.ADMINISTRATOR); + ChatRoomMemberRole.ADMINISTRATOR, IrcStatusEnum.ONLINE); Assert.assertEquals("host.name", member.getHostname()); } }