diff options
author | Lyubomir Marinov <lyubomir.marinov@jitsi.org> | 2009-04-28 20:51:30 +0000 |
---|---|---|
committer | Lyubomir Marinov <lyubomir.marinov@jitsi.org> | 2009-04-28 20:51:30 +0000 |
commit | f0d6c90e72b8bdd3473d17ab8de4289da3bb8cd3 (patch) | |
tree | a313f0499fbd75d54890c7149abb25231bf3b654 /src/net/java/sip | |
parent | 2d35a92e12a442852ab3d50dbfb028c39b3b9781 (diff) | |
download | jitsi-f0d6c90e72b8bdd3473d17ab8de4289da3bb8cd3.zip jitsi-f0d6c90e72b8bdd3473d17ab8de4289da3bb8cd3.tar.gz jitsi-f0d6c90e72b8bdd3473d17ab8de4289da3bb8cd3.tar.bz2 |
Fixes the following defect: after an account is deleted, it can still be seen in 'My chat rooms...' and the other join-related dialogs.
Diffstat (limited to 'src/net/java/sip')
5 files changed, 73 insertions, 92 deletions
diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatRoomProviderWrapper.java b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatRoomProviderWrapper.java index cb59a13..9d10d17 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatRoomProviderWrapper.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ChatRoomProviderWrapper.java @@ -14,18 +14,18 @@ import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.util.*; /** - * * @author Yana Stamcheva */ public class ChatRoomProviderWrapper { - private Logger logger = Logger.getLogger(ChatRoomProviderWrapper.class); + private static final Logger logger + = Logger.getLogger(ChatRoomProviderWrapper.class); - private ProtocolProviderService protocolProvider; + private final ProtocolProviderService protocolProvider; - private ChatRoomWrapper systemRoomWrapper; + private final ChatRoomWrapper systemRoomWrapper; - private List<ChatRoomWrapper> chatRoomsOrderedCopy + private final List<ChatRoomWrapper> chatRoomsOrderedCopy = new LinkedList<ChatRoomWrapper>(); /** @@ -39,11 +39,10 @@ public class ChatRoomProviderWrapper ProtocolProviderService protocolProvider) { this.protocolProvider = protocolProvider; + + String accountIdService = protocolProvider.getAccountID().getService(); this.systemRoomWrapper - = new ChatRoomWrapper( - this, - protocolProvider.getAccountID().getService(), - protocolProvider.getAccountID().getService()); + = new ChatRoomWrapper(this, accountIdService, accountIdService); } /** @@ -200,7 +199,7 @@ public class ChatRoomProviderWrapper * * @param protocolProvider the protocol provider for the account to * synchronize - * @param opSet the multi user chat operation set, which give us access to + * @param opSet the multi-user chat operation set, which give us access to * chat room server */ public void synchronizeProvider() diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java index 2f82d64..92b71e8 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java @@ -962,13 +962,7 @@ public class ConferenceChatManager } else if (event.getType() == ServiceEvent.UNREGISTERING) { - ChatRoomProviderWrapper chatRoomProvider - = chatRoomList.findServerWrapperFromProvider(protocolProvider); - - if (chatRoomProvider != null) - { - chatRoomList.removeChatProvider(chatRoomProvider); - } + chatRoomList.removeChatProvider(protocolProvider); } } diff --git a/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomList.java b/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomList.java index d4cfb7d..c61ff03 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomList.java +++ b/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomList.java @@ -29,7 +29,7 @@ public class ChatRoomList /** * The list containing all chat servers and rooms. */ - private final Vector<ChatRoomProviderWrapper> providersList + private final List<ChatRoomProviderWrapper> providersList = new Vector<ChatRoomProviderWrapper>(); /** @@ -48,13 +48,11 @@ public class ChatRoomList if (serRefs == null) return; - for (int i = 0; i < serRefs.length; i ++) + for (ServiceReference serRef : serRefs) { - ServiceReference protocolProviderRef = serRefs[i]; - ProtocolProviderService protocolProvider - = (ProtocolProviderService) GuiActivator - .bundleContext.getService(protocolProviderRef); + = (ProtocolProviderService) + GuiActivator.bundleContext.getService(serRef); Object multiUserChatOpSet = protocolProvider @@ -130,38 +128,49 @@ public class ChatRoomList * list. * * @param pps the <tt>ProtocolProviderService</tt> corresponding to the - * server to remove + * server to remove */ - public void removeChatProvider(ChatRoomProviderWrapper chatRoomProvider) + public void removeChatProvider(ProtocolProviderService pps) { + ChatRoomProviderWrapper wrapper = findServerWrapperFromProvider(pps); + + if (wrapper != null) + removeChatProvider(wrapper); + } + + /** + * Removes the corresponding server and all related chat rooms from this + * list. + * + * @param chatRoomProvider the <tt>ChatRoomProviderWrapper</tt> + * corresponding to the server to remove + */ + private void removeChatProvider(ChatRoomProviderWrapper chatRoomProvider) + { + providersList.remove(chatRoomProvider); + ConfigurationService configService = GuiActivator.getConfigurationService(); - String prefix = "net.java.sip.communicator.impl.gui.accounts"; + String providerAccountUID + = chatRoomProvider + .getProtocolProvider().getAccountID().getAccountUniqueID(); - Iterator<String> accountsIter = configService - .getPropertyNamesByPrefix(prefix, true).iterator(); - - while(accountsIter.hasNext()) + for (String accountRootPropName + : configService.getPropertyNamesByPrefix(prefix, true)) { - String accountRootPropName = accountsIter.next(); - String accountUID = configService.getString(accountRootPropName); - if(accountUID.equals(chatRoomProvider.getProtocolProvider() - .getAccountID().getAccountUniqueID())) + if(accountUID.equals(providerAccountUID)) { - List<String> chatRooms = configService - .getPropertyNamesByPrefix( - accountRootPropName + ".chatRooms", true); - - Iterator<String> chatRoomsIter = chatRooms.iterator(); + List<String> chatRooms + = configService.getPropertyNamesByPrefix( + accountRootPropName + ".chatRooms", + true); - while(chatRoomsIter.hasNext()) + for (String chatRoomPropName : chatRooms) { - String chatRoomPropName = chatRoomsIter.next(); - configService.setProperty( chatRoomPropName + ".chatRoomName", null); @@ -234,9 +243,9 @@ public class ChatRoomList for (ChatRoomProviderWrapper provider : providersList) { ChatRoomWrapper systemRoomWrapper = provider.getSystemRoomWrapper(); + ChatRoom systemRoom = systemRoomWrapper.getChatRoom(); - if (systemRoomWrapper.getChatRoom() != null - && systemRoomWrapper.getChatRoom().equals(chatRoom)) + if ((systemRoom != null) && systemRoom.equals(chatRoom)) { return systemRoomWrapper; } @@ -248,7 +257,8 @@ public class ChatRoomList if (chatRoomWrapper != null) { // stored chatrooms has no chatroom, but their - // id is the same as the chatroom we are searching wrapper for + // id is the same as the chatroom we are searching wrapper + // for if(chatRoomWrapper.getChatRoom() == null) { chatRoomWrapper.setChatRoom(chatRoom); diff --git a/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomListModel.java b/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomListModel.java index 1db6d9b..bf0ec64 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomListModel.java +++ b/src/net/java/sip/communicator/impl/gui/main/chatroomslist/ChatRoomListModel.java @@ -4,7 +4,6 @@ * Distributable under LGPL license. * See terms of license at gnu.org. */ - package net.java.sip.communicator.impl.gui.main.chatroomslist; import java.util.*; @@ -15,12 +14,12 @@ import net.java.sip.communicator.impl.gui.*; import net.java.sip.communicator.impl.gui.main.chat.conference.*; /** - * * @author Yana Stamcheva */ -public class ChatRoomListModel extends AbstractListModel +public class ChatRoomListModel + extends AbstractListModel { - private ChatRoomList chatRoomList; + private final ChatRoomList chatRoomList; public ChatRoomListModel() { diff --git a/src/net/java/sip/communicator/impl/gui/main/login/LoginManager.java b/src/net/java/sip/communicator/impl/gui/main/login/LoginManager.java index ff4bfb6..7b15dee 100644 --- a/src/net/java/sip/communicator/impl/gui/main/login/LoginManager.java +++ b/src/net/java/sip/communicator/impl/gui/main/login/LoginManager.java @@ -35,9 +35,9 @@ public class LoginManager implements ServiceListener, RegistrationStateChangeListener { - private Logger logger = Logger.getLogger(LoginManager.class.getName()); + private final Logger logger = Logger.getLogger(LoginManager.class); - private MainFrame mainFrame; + private final MainFrame mainFrame; private boolean manuallyDisconnected = false; @@ -127,21 +127,20 @@ public class LoginManager */ public void registrationStateChanged(RegistrationStateChangeEvent evt) { + RegistrationState newState = evt.getNewState(); ProtocolProviderService protocolProvider = evt.getProvider(); - AccountID accountID = protocolProvider.getAccountID(); logger.trace("Protocol provider: " + protocolProvider + " changed its state to: " + evt.getNewState().getStateName()); - OperationSetPresence presence = mainFrame - .getProtocolPresenceOpSet(protocolProvider); - - OperationSetMultiUserChat multiUserChat = mainFrame - .getMultiUserChatOpSet(protocolProvider); - - if (evt.getNewState().equals(RegistrationState.REGISTERED)) + if (newState.equals(RegistrationState.REGISTERED)) { + OperationSetPresence presence = mainFrame + .getProtocolPresenceOpSet(protocolProvider); + OperationSetMultiUserChat multiUserChat = mainFrame + .getMultiUserChatOpSet(protocolProvider); + if (presence != null) { presence.setAuthorizationHandler(new AuthorizationHandlerImpl( @@ -155,8 +154,7 @@ public class LoginManager protocolProvider, multiUserChat); } } - else if (evt.getNewState().equals( - RegistrationState.AUTHENTICATION_FAILED)) + else if (newState.equals(RegistrationState.AUTHENTICATION_FAILED)) { if (evt.getReasonCode() == RegistrationStateChangeEvent .REASON_RECONNECTION_RATE_LIMIT_EXCEEDED) @@ -188,7 +186,7 @@ public class LoginManager logger.trace(evt.getReason()); } - else if (evt.getNewState().equals(RegistrationState.CONNECTION_FAILED)) + else if (newState.equals(RegistrationState.CONNECTION_FAILED)) { String msgText = GuiActivator.getResources().getI18NString( "service.gui.CONNECTION_FAILED_MSG", @@ -210,7 +208,7 @@ public class LoginManager logger.trace(evt.getReason()); } - else if (evt.getNewState().equals(RegistrationState.EXPIRED)) + else if (newState.equals(RegistrationState.EXPIRED)) { String msgText = GuiActivator.getResources().getI18NString( "service.gui.CONNECTION_EXPIRED_MSG", @@ -223,7 +221,7 @@ public class LoginManager logger.error(evt.getReason()); } - else if (evt.getNewState().equals(RegistrationState.UNREGISTERED)) + else if (newState.equals(RegistrationState.UNREGISTERED)) { if (!manuallyDisconnected) { @@ -274,26 +272,6 @@ public class LoginManager } /** - * Returns the MainFrame. - * - * @return The MainFrame. - */ - public MainFrame getMainFrame() - { - return mainFrame; - } - - /** - * Sets the MainFrame. - * - * @param mainFrame The main frame. - */ - public void setMainFrame(MainFrame mainFrame) - { - this.mainFrame = mainFrame; - } - - /** * Implements the <tt>ServiceListener</tt> method. Verifies whether the * passed event concerns a <tt>ProtocolProviderService</tt> and adds the * corresponding UI controls. @@ -302,16 +280,16 @@ public class LoginManager */ public void serviceChanged(ServiceEvent event) { + ServiceReference serviceRef = event.getServiceReference(); + // if the event is caused by a bundle being stopped, we don't want to // know - if (event.getServiceReference().getBundle().getState() - == Bundle.STOPPING) + if (serviceRef.getBundle().getState() == Bundle.STOPPING) { return; } - Object service = GuiActivator.bundleContext.getService(event - .getServiceReference()); + Object service = GuiActivator.bundleContext.getService(serviceRef); // we don't care if the source service is not a protocol provider if (!(service instanceof ProtocolProviderService)) @@ -319,13 +297,14 @@ public class LoginManager return; } - if (event.getType() == ServiceEvent.REGISTERED) + switch (event.getType()) { + case ServiceEvent.REGISTERED: this.handleProviderAdded((ProtocolProviderService) service); - } - else if (event.getType() == ServiceEvent.UNREGISTERING) - { + break; + case ServiceEvent.UNREGISTERING: this.handleProviderRemoved((ProtocolProviderService) service); + break; } } |