Fixes the following defect: after an account is deleted, it can still be seen in 'My chat rooms...' and the other join-related dialogs.

cusax-fix
Lyubomir Marinov 17 years ago
parent 2d35a92e12
commit f0d6c90e72

@ -14,18 +14,18 @@
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 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 int indexOf(ChatRoomWrapper chatRoomWrapper)
*
* @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()

@ -962,13 +962,7 @@ public void serviceChanged(ServiceEvent event)
}
else if (event.getType() == ServiceEvent.UNREGISTERING)
{
ChatRoomProviderWrapper chatRoomProvider
= chatRoomList.findServerWrapperFromProvider(protocolProvider);
if (chatRoomProvider != null)
{
chatRoomList.removeChatProvider(chatRoomProvider);
}
chatRoomList.removeChatProvider(protocolProvider);
}
}

@ -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 void loadList()
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 void addChatProvider(ProtocolProviderService pps)
* 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 ChatRoomWrapper findChatRoomWrapperFromChatRoom(ChatRoom chatRoom)
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 ChatRoomWrapper findChatRoomWrapperFromChatRoom(ChatRoom chatRoom)
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);

@ -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.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()
{

@ -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 void runLogin(MainFrame parent)
*/
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 void registrationStateChanged(RegistrationStateChangeEvent evt)
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 @@ else if (evt.getReasonCode() == RegistrationStateChangeEvent
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 @@ else if (evt.getNewState().equals(RegistrationState.CONNECTION_FAILED))
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 @@ else if (evt.getNewState().equals(RegistrationState.EXPIRED))
logger.error(evt.getReason());
}
else if (evt.getNewState().equals(RegistrationState.UNREGISTERED))
else if (newState.equals(RegistrationState.UNREGISTERED))
{
if (!manuallyDisconnected)
{
@ -273,26 +271,6 @@ else if (evt.getReasonCode() == RegistrationStateChangeEvent
}
}
/**
* 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
@ -302,16 +280,16 @@ public void setMainFrame(MainFrame mainFrame)
*/
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 void serviceChanged(ServiceEvent event)
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;
}
}

Loading…
Cancel
Save