diff --git a/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderFactoryIcqImpl.java b/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderFactoryIcqImpl.java index fb00f3f9e..84b9f402e 100644 --- a/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderFactoryIcqImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderFactoryIcqImpl.java @@ -8,8 +8,10 @@ import java.util.*; -import org.osgi.framework.*; import net.java.sip.communicator.service.protocol.*; +import net.java.sip.communicator.util.*; + +import org.osgi.framework.*; /** * The ICQ implementation of the ProtocolProviderFactory. @@ -17,7 +19,10 @@ */ public class ProtocolProviderFactoryIcqImpl extends ProtocolProviderFactory -{ +{ + private Logger logger = Logger.getLogger( + ProtocolProviderFactoryIcqImpl.class); + /** * The table that we store our accounts in. */ @@ -164,6 +169,21 @@ public AccountID loadAccount( Map accountProperties) */ public boolean uninstallAccount(AccountID accountID) { + //unregister the protocol provider + ServiceReference serRef = getProviderForAccount(accountID); + + ProtocolProviderService protocolProvider + = (ProtocolProviderService) IcqActivator.getBundleContext() + .getService(serRef); + + try { + protocolProvider.unregister(); + } + catch (OperationFailedException e) { + logger.error("Failed to unregister protocol provider for account : " + + accountID + " caused by : " + e); + } + ServiceRegistration registration = (ServiceRegistration)registeredAccounts.remove(accountID); diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderFactoryJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderFactoryJabberImpl.java index b3cf2633d..caed97919 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderFactoryJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderFactoryJabberImpl.java @@ -8,9 +8,11 @@ import java.util.*; +import net.java.sip.communicator.service.protocol.*; +import net.java.sip.communicator.util.*; + import org.jivesoftware.smack.util.*; import org.osgi.framework.*; -import net.java.sip.communicator.service.protocol.*; /** * The Jabber implementation of the ProtocolProviderFactory. @@ -19,6 +21,9 @@ public class ProtocolProviderFactoryJabberImpl extends ProtocolProviderFactory { + private Logger logger = Logger.getLogger( + ProtocolProviderFactoryJabberImpl.class); + /** * The table that we store our accounts in. */ @@ -179,6 +184,21 @@ public AccountID loadAccount( Map accountProperties) */ public boolean uninstallAccount(AccountID accountID) { + //unregister the protocol provider + ServiceReference serRef = getProviderForAccount(accountID); + + ProtocolProviderService protocolProvider + = (ProtocolProviderService) JabberActivator.getBundleContext() + .getService(serRef); + + try { + protocolProvider.unregister(); + } + catch (OperationFailedException e) { + logger.error("Failed to unregister protocol provider for account : " + + accountID + " caused by : " + e); + } + ServiceRegistration registration = (ServiceRegistration)registeredAccounts.remove(accountID); diff --git a/src/net/java/sip/communicator/impl/protocol/sip/ProtocolProviderFactorySipImpl.java b/src/net/java/sip/communicator/impl/protocol/sip/ProtocolProviderFactorySipImpl.java index d931dfa83..94910f8de 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/ProtocolProviderFactorySipImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/ProtocolProviderFactorySipImpl.java @@ -2,10 +2,11 @@ import java.util.*; -import org.osgi.framework.*; import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.util.*; +import org.osgi.framework.*; + /** * A SIP implementation of the protocol provider factory interface. * @@ -213,6 +214,21 @@ public void loadStoredAccounts() */ public boolean uninstallAccount(AccountID accountID) { + //unregister the protocol provider + ServiceReference serRef = getProviderForAccount(accountID); + + ProtocolProviderService protocolProvider + = (ProtocolProviderService) SipActivator.getBundleContext() + .getService(serRef); + + try { + protocolProvider.unregister(); + } + catch (OperationFailedException e) { + logger.error("Failed to unregister protocol provider for account : " + + accountID + " caused by : " + e); + } + ServiceRegistration registration = (ServiceRegistration) registeredAccounts.remove(accountID);