From 3563fa97f679c2f8b29f2d2eb74fc0bbcaa698ab Mon Sep 17 00:00:00 2001 From: Lyubomir Marinov Date: Wed, 10 Jun 2009 08:42:11 +0000 Subject: [PATCH] Commits into trunk the changes of r5345, r5346 and r5352 which fix warnings in branches/1.0. --- ...perationSetPersistentPresenceDictImpl.java | 140 ---------- ...ionSetPersistentPresenceGibberishImpl.java | 140 ---------- ...OperationSetPersistentPresenceIcqImpl.java | 119 +------- ...ionSetBasicInstantMessagingJabberImpl.java | 12 +- ...rationSetPersistentPresenceJabberImpl.java | 139 ++-------- .../ProtocolProviderServiceJabberImpl.java | 6 +- .../MockPersistentPresenceOperationSet.java | 139 ---------- ...OperationSetPersistentPresenceMsnImpl.java | 119 +------- ...OperationSetPersistentPresenceRssImpl.java | 142 +--------- .../impl/protocol/sip/CallSipImpl.java | 7 +- .../OperationSetBasicTelephonySipImpl.java | 2 +- .../sip/OperationSetPresenceSipImpl.java | 178 +----------- ...OperationSetPersistentPresenceSSHImpl.java | 145 ---------- ...erationSetPersistentPresenceYahooImpl.java | 128 ++------- .../ProtocolProviderServiceYahooImpl.java | 2 +- ...tionSetPersistentPresenceZeroconfImpl.java | 142 ---------- ...bstractOperationSetPersistentPresence.java | 262 ++++++++++++++++-- .../protocol/event/SubscriptionAdapter.java | 69 +++++ .../gibberish/TestOperationSetPresence.java | 42 --- .../icq/TestOperationSetPresence.java | 14 +- .../msn/TestOperationSetPresence.java | 42 --- .../sip/TestOperationSetPresence.java | 81 ++---- .../yahoo/TestOperationSetPresence.java | 42 --- 23 files changed, 409 insertions(+), 1703 deletions(-) create mode 100644 src/net/java/sip/communicator/service/protocol/event/SubscriptionAdapter.java diff --git a/src/net/java/sip/communicator/impl/protocol/dict/OperationSetPersistentPresenceDictImpl.java b/src/net/java/sip/communicator/impl/protocol/dict/OperationSetPersistentPresenceDictImpl.java index b21b04a01..a77b74705 100644 --- a/src/net/java/sip/communicator/impl/protocol/dict/OperationSetPersistentPresenceDictImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/dict/OperationSetPersistentPresenceDictImpl.java @@ -30,19 +30,6 @@ public class OperationSetPersistentPresenceDictImpl private static final Logger logger = Logger.getLogger(OperationSetPersistentPresenceDictImpl.class); - /** - * A list of listeners registered for ServerStoredGroupChangeEvents. - */ - private Vector serverStoredGroupListeners = - new Vector(); - - /** - * A list of listeners registered for - * ProviderPresenceStatusChangeEvents. - */ - private Vector providerPresenceStatusListeners = - new Vector(); - /** * The root of the dict contact list. */ @@ -82,102 +69,6 @@ public OperationSetPersistentPresenceDictImpl( new UnregistrationListener()); } - /** - * Notifies all registered listeners of the new event. - * - * @param source the contact that has caused the event. - * @param eventID an identifier of the event to dispatch. - */ - public void fireServerStoredGroupEvent(ContactGroupDictImpl source, - int eventID) - { - ServerStoredGroupEvent evt = new ServerStoredGroupEvent( - source, eventID, source.getParentContactGroup() - , this.parentProvider, this); - - Iterator listeners = null; - synchronized (serverStoredGroupListeners) - { - listeners = new ArrayList(serverStoredGroupListeners).iterator(); - } - - while (listeners.hasNext()) - { - ServerStoredGroupListener listener = listeners.next(); - - if(eventID == ServerStoredGroupEvent.GROUP_CREATED_EVENT) - { - listener.groupCreated(evt); - } - else if(eventID == ServerStoredGroupEvent.GROUP_RENAMED_EVENT) - { - listener.groupNameChanged(evt); - } - else if(eventID == ServerStoredGroupEvent.GROUP_REMOVED_EVENT) - { - listener.groupRemoved(evt); - } - } - } - - /** - * Notifies all registered listeners of the new event. - * - * @param oldValue the presence status we were in before the change. - */ - public void fireProviderStatusChangeEvent(PresenceStatus oldValue) - { - ProviderPresenceStatusChangeEvent evt - = new ProviderPresenceStatusChangeEvent(this.parentProvider, - oldValue, this.getPresenceStatus()); - - Iterator listeners = null; - synchronized (providerPresenceStatusListeners) - { - listeners = new ArrayList(providerPresenceStatusListeners).iterator(); - } - - while (listeners.hasNext()) - { - ProviderPresenceStatusListener listener = listeners.next(); - - listener.providerStatusChanged(evt); - } - } - - /** - * Dict implementation of the corresponding ProtocolProviderService - * method. - * - * @param listener a dummy param. - */ - public void addProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners) - { - if (!providerPresenceStatusListeners.contains(listener)) - this.providerPresenceStatusListeners.add(listener); - } - } - - /** - * Registers a listener that would receive events upon changes in server - * stored groups. - * - * @param listener a ServerStoredGroupChangeListener impl that would - * receive events upong group changes. - */ - public void addServerStoredGroupChangeListener(ServerStoredGroupListener - listener) - { - synchronized(serverStoredGroupListeners) - { - if (!serverStoredGroupListeners.contains(listener)) - serverStoredGroupListeners.add(listener); - } - } - /** * Creates a group with the specified name and parent in the server * stored contact list. @@ -500,21 +391,6 @@ private void changePresenceStatusForAllContacts(ContactGroup parent, } } - /** - * Unregisters the specified listener so that it does not receive further - * events upon changes in local presence status. - * - * @param listener ProviderPresenceStatusListener - */ - public void removeProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners) - { - this.providerPresenceStatusListeners.remove(listener); - } - } - /** * Returns the group that is parent of the specified dictGroup or null * if no parent was found. @@ -571,22 +447,6 @@ public void removeServerStoredContactGroup(ContactGroup group) dictGroup, ServerStoredGroupEvent.GROUP_REMOVED_EVENT); } - - /** - * Removes the specified group change listener so that it won't receive - * any further events. - * - * @param listener the ServerStoredGroupChangeListener to remove - */ - public void removeServerStoredGroupChangeListener(ServerStoredGroupListener - listener) - { - synchronized(serverStoredGroupListeners) - { - serverStoredGroupListeners.remove(listener); - } - } - /** * Renames the specified group from the server stored contact list. * diff --git a/src/net/java/sip/communicator/impl/protocol/gibberish/OperationSetPersistentPresenceGibberishImpl.java b/src/net/java/sip/communicator/impl/protocol/gibberish/OperationSetPersistentPresenceGibberishImpl.java index ebc3bdb1e..06f13dc33 100644 --- a/src/net/java/sip/communicator/impl/protocol/gibberish/OperationSetPersistentPresenceGibberishImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/gibberish/OperationSetPersistentPresenceGibberishImpl.java @@ -29,17 +29,6 @@ public class OperationSetPersistentPresenceGibberishImpl private static final Logger logger = Logger.getLogger(OperationSetPersistentPresenceGibberishImpl.class); - /** - * A list of listeners registered for ServerStoredGroupChangeEvents. - */ - private Vector serverStoredGroupListeners = new Vector(); - - /** - * A list of listeners registered for - * ProviderPresenceStatusChangeEvents. - */ - private Vector providerPresenceStatusListeners = new Vector(); - /** * The root of the gibberish contact list. */ @@ -79,104 +68,6 @@ public OperationSetPersistentPresenceGibberishImpl( new UnregistrationListener()); } - /** - * Notifies all registered listeners of the new event. - * - * @param source the contact that has caused the event. - * @param eventID an identifier of the event to dispatch. - */ - public void fireServerStoredGroupEvent(ContactGroupGibberishImpl source, - int eventID) - { - ServerStoredGroupEvent evt = new ServerStoredGroupEvent( - source, eventID, (ContactGroupGibberishImpl)source.getParentContactGroup() - , this.parentProvider, this); - - Iterator listeners = null; - synchronized (serverStoredGroupListeners) - { - listeners = new ArrayList(serverStoredGroupListeners).iterator(); - } - - while (listeners.hasNext()) - { - ServerStoredGroupListener listener - = (ServerStoredGroupListener) listeners.next(); - - if(eventID == ServerStoredGroupEvent.GROUP_CREATED_EVENT) - { - listener.groupCreated(evt); - } - else if(eventID == ServerStoredGroupEvent.GROUP_RENAMED_EVENT) - { - listener.groupNameChanged(evt); - } - else if(eventID == ServerStoredGroupEvent.GROUP_REMOVED_EVENT) - { - listener.groupRemoved(evt); - } - } - } - - /** - * Notifies all registered listeners of the new event. - * - * @param oldValue the presence status we were in before the change. - */ - public void fireProviderStatusChangeEvent(PresenceStatus oldValue) - { - ProviderPresenceStatusChangeEvent evt - = new ProviderPresenceStatusChangeEvent(this.parentProvider, - oldValue, this.getPresenceStatus()); - - Iterator listeners = null; - synchronized (providerPresenceStatusListeners) - { - listeners = new ArrayList(providerPresenceStatusListeners).iterator(); - } - - while (listeners.hasNext()) - { - ProviderPresenceStatusListener listener - = (ProviderPresenceStatusListener) listeners.next(); - - listener.providerStatusChanged(evt); - } - } - - /** - * Gibberish implementation of the corresponding ProtocolProviderService - * method. - * - * @param listener a dummy param. - */ - public void addProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners) - { - if (!providerPresenceStatusListeners.contains(listener)) - this.providerPresenceStatusListeners.add(listener); - } - } - - /** - * Registers a listener that would receive events upon changes in server - * stored groups. - * - * @param listener a ServerStoredGroupChangeListener impl that would - * receive events upong group changes. - */ - public void addServerStoredGroupChangeListener(ServerStoredGroupListener - listener) - { - synchronized(serverStoredGroupListeners) - { - if (!serverStoredGroupListeners.contains(listener)) - serverStoredGroupListeners.add(listener); - } - } - /** * Creates a group with the specified name and parent in the server * stored contact list. @@ -499,21 +390,6 @@ private void changePresenceStatusForAllContacts(ContactGroup parent, } } - /** - * Unregisters the specified listener so that it does not receive further - * events upon changes in local presence status. - * - * @param listener ProviderPresenceStatusListener - */ - public void removeProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners) - { - this.providerPresenceStatusListeners.remove(listener); - } - } - /** * Returns the group that is parent of the specified gibberishGroup or null * if no parent was found. @@ -570,22 +446,6 @@ public void removeServerStoredContactGroup(ContactGroup group) gibberishGroup, ServerStoredGroupEvent.GROUP_REMOVED_EVENT); } - - /** - * Removes the specified group change listener so that it won't receive - * any further events. - * - * @param listener the ServerStoredGroupChangeListener to remove - */ - public void removeServerStoredGroupChangeListener(ServerStoredGroupListener - listener) - { - synchronized(serverStoredGroupListeners) - { - serverStoredGroupListeners.remove(listener); - } - } - /** * Renames the specified group from the server stored contact list. * diff --git a/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java b/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java index 78b8c0323..657c48d8d 100644 --- a/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java @@ -24,9 +24,9 @@ import net.kano.joustsim.oscar.*; import net.kano.joustsim.oscar.oscar.service.bos.*; import net.kano.joustsim.oscar.oscar.service.buddy.*; +import net.kano.joustsim.oscar.oscar.service.icon.*; import net.kano.joustsim.oscar.oscar.service.info.*; import net.kano.joustsim.oscar.oscar.service.ssi.*; -import net.kano.joustsim.oscar.oscar.service.icon.*; import net.kano.joustsim.trust.*; /** @@ -43,18 +43,6 @@ public class OperationSetPersistentPresenceIcqImpl private static final Logger logger = Logger.getLogger(OperationSetPersistentPresenceIcqImpl.class); - /** - * The list of listeners interested in receiving changes in our local - * presencestatus. - */ - private Vector providerPresenceStatusListeners = new Vector(); - - /** - * Listeners notified upon changes occurring with server stored contact - * groups. - */ - private Vector serverStoredGroupChangeListeners = new Vector(); - /** * This one should actually be in joscar. But since it isn't we might as * well define it here. @@ -974,35 +962,6 @@ private void assertConnected() throws IllegalStateException +"being able to communicate."); } - /** - * Adds a listener that would receive events upon changes of the provider - * presence status. - * @param listener the listener to register for changes in our PresenceStatus. - */ - public void addProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners) - { - if(!providerPresenceStatusListeners.contains(listener)) - providerPresenceStatusListeners.add(listener); - } - } - - /** - * Unregisters the specified listener so that it does not receive further - * events upon changes in local presence status. - * @param listener ProviderPresenceStatusListener - */ - public void removeProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners) - { - providerPresenceStatusListeners.remove(listener); - } - } - /** * Returns the root group of the server stored contact list. Most often this * would be a dummy group that user interface implementations may better not @@ -1040,75 +999,23 @@ public void removeServerStoredGroupChangeListener( /** * Notify all provider presence listeners of the corresponding event change - * @param oldStatusL the status our icq stack had so far - * @param newStatusL the status we have from now on + * + * @param oldStatusL + * the status our icq stack had so far + * @param newStatusL + * the status we have from now on */ - void fireProviderPresenceStatusChangeEvent( - long oldStatusL, long newStatusL) + void fireProviderPresenceStatusChangeEvent(long oldStatusL, long newStatusL) { PresenceStatus oldStatus = statusLongToPresenceStatus(oldStatusL); PresenceStatus newStatus = statusLongToPresenceStatus(newStatusL); - if(oldStatus.equals(newStatus)){ - logger.debug("Ignored prov stat. change evt. old==new = " - + oldStatus); - return; - } - - ProviderPresenceStatusChangeEvent evt = - new ProviderPresenceStatusChangeEvent( - parentProvider, oldStatus, newStatus); - - logger.debug("Dispatching Provider Status Change. Listeners=" - + providerPresenceStatusListeners.size() - + " evt=" + evt); - - Iterator listeners = null; - synchronized (providerPresenceStatusListeners) - { - listeners = new ArrayList(providerPresenceStatusListeners) - .iterator(); - } - - while (listeners.hasNext()) - { - ProviderPresenceStatusListener listener - = (ProviderPresenceStatusListener) listeners.next(); - - listener.providerStatusChanged(evt); - } - } - /** - * Notify all provider presence listeners that a new status message has - * been set. - * @param oldStatusMessage the status message our icq stack had so far - * @param newStatusMessage the status message we have from now on - */ - private void fireProviderStatusMessageChangeEvent( - String oldStatusMessage, String newStatusMessage) - { - - PropertyChangeEvent evt = new PropertyChangeEvent( - parentProvider, ProviderPresenceStatusListener.STATUS_MESSAGE, - oldStatusMessage, newStatusMessage); - - logger.debug("Dispatching stat. msg change. Listeners=" - + providerPresenceStatusListeners.size() - + " evt=" + evt); - - Iterator listeners = null; - synchronized (providerPresenceStatusListeners) - { - listeners = new ArrayList(providerPresenceStatusListeners).iterator(); - } - - while (listeners.hasNext()) - { - ProviderPresenceStatusListener listener - = (ProviderPresenceStatusListener) listeners.next(); - - listener.providerStatusMessageChanged(evt); - } + if (oldStatus.equals(newStatus)) + logger.debug( + "Ignored prov stat. change evt. old==new = " + + oldStatus); + else + fireProviderStatusChangeEvent(oldStatus, newStatus); } /** diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicInstantMessagingJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicInstantMessagingJabberImpl.java index ae89eefd9..0e92f65d1 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicInstantMessagingJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicInstantMessagingJabberImpl.java @@ -56,10 +56,12 @@ public class OperationSetBasicInstantMessagingJabberImpl * The timer executing tasks on specified intervals */ private Timer keepAliveTimer = new Timer(); + /** * The queue holding the received packets */ - private LinkedList receivedKeepAlivePackets = new LinkedList(); + private final LinkedList receivedKeepAlivePackets + = new LinkedList(); private int failedKeepalivePackets = 0; @@ -523,8 +525,7 @@ public void run() boolean checkFirstPacket() throws NoSuchElementException { - KeepAliveEvent receivedEvent = - (KeepAliveEvent)receivedKeepAlivePackets.removeLast(); + KeepAliveEvent receivedEvent = receivedKeepAlivePackets.removeLast(); if(jabberProvider.hashCode() != receivedEvent.getSrcProviderHash() || OperationSetBasicInstantMessagingJabberImpl.this.hashCode() != @@ -546,8 +547,9 @@ void fireUnregisterd() RegistrationState.CONNECTION_FAILED, RegistrationStateChangeEvent.REASON_INTERNAL_ERROR, null); - opSetPersPresence.fireProviderPresenceStatusChangeEvent( - opSetPersPresence.getPresenceStatus(), jabberProvider + opSetPersPresence.fireProviderStatusChangeEvent( + opSetPersPresence.getPresenceStatus(), + jabberProvider .getJabberStatusEnum().getStatus(JabberStatusEnum.OFFLINE)); } } diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java index 9d2ced68d..035aa9975 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java @@ -6,20 +6,19 @@ */ package net.java.sip.communicator.impl.protocol.jabber; -import java.beans.PropertyChangeEvent; import java.util.*; -import org.jivesoftware.smack.*; -import org.jivesoftware.smack.filter.*; -import org.jivesoftware.smack.packet.*; -import org.jivesoftware.smack.util.*; - import net.java.sip.communicator.impl.protocol.jabber.extensions.version.*; import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.service.protocol.event.*; import net.java.sip.communicator.service.protocol.jabberconstants.*; import net.java.sip.communicator.util.*; +import org.jivesoftware.smack.*; +import org.jivesoftware.smack.filter.*; +import org.jivesoftware.smack.packet.*; +import org.jivesoftware.smack.util.*; + /** * The Jabber implementation of a Persistent Presence Operation set. This class * manages our own presence status as well as subscriptions for the presence @@ -49,14 +48,6 @@ public class OperationSetPersistentPresenceJabberImpl */ private PresenceStatus currentStatus; - /** - * The list of listeners interested in receiving changes in our local - * presencestatus. - */ - private Vector - providerPresenceStatusListeners - = new Vector(); - /** * A map containing bindings between SIP Communicator's jabber presence status * instances and Jabber status codes @@ -99,21 +90,6 @@ public OperationSetPersistentPresenceJabberImpl( new RegistrationStateListener()); } - /** - * Adds a listener that would receive events upon changes of the provider - * presence status. - * - * @param listener the listener to register for changes in our - * PresenceStatus. - */ - public void addProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners){ - providerPresenceStatusListeners.add(listener); - } - } - /** * Registers a listener that would receive events upong changes in server * stored groups. @@ -371,15 +347,13 @@ public void publishPresenceStatus(PresenceStatus status, throw new IllegalArgumentException(status + " is not a valid Jabber status"); - Presence presence = null; if (status.equals(jabberStatusEnum.getStatus(JabberStatusEnum.OFFLINE))) { - presence = new Presence(Presence.Type.unavailable); parentProvider.unregister(); } else { - presence = new Presence(Presence.Type.available); + Presence presence = new Presence(Presence.Type.available); presence.setMode(presenceStatusToJabberMode(status)); presence.setPriority(resourcePriority); presence.setStatus(statusMessage); @@ -388,7 +362,7 @@ public void publishPresenceStatus(PresenceStatus status, parentProvider.getConnection().sendPacket(presence); } - fireProviderPresenceStatusChangeEvent(currentStatus, status); + fireProviderStatusChangeEvent(currentStatus, status); if(!getCurrentStatusMessage().equals(statusMessage)) { @@ -428,20 +402,6 @@ public PresenceStatus queryContactStatus(String contactIdentifier) throws JabberStatusEnum.OFFLINE); } - /** - * Unregisters the specified listener so that it does not receive further - * events upon changes in local presence status. - * - * @param listener ProviderPresenceStatusListener - */ - public void removeProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners){ - providerPresenceStatusListeners.remove(listener); - } - } - /** * Removes the specified group from the server stored contact list. * @@ -669,77 +629,15 @@ private void assertConnected() throws IllegalStateException +"being able to communicate."); } - /** - * Notify all provider presence listeners of the corresponding event change - * @param oldStatus the status our stack had so far - * @param newStatus the status we have from now on - */ - void fireProviderPresenceStatusChangeEvent( - PresenceStatus oldStatus, PresenceStatus newStatus) - { - if(oldStatus.equals(newStatus)){ - logger.debug("Ignored prov stat. change evt. old==new = " - + oldStatus); - return; - } - - ProviderPresenceStatusChangeEvent evt = - new ProviderPresenceStatusChangeEvent( - parentProvider, oldStatus, newStatus); - - currentStatus = newStatus; - - - logger.debug("Dispatching Provider Status Change. Listeners=" - + providerPresenceStatusListeners.size() - + " evt=" + evt); - - Iterator listeners = null; - synchronized (providerPresenceStatusListeners) - { - listeners = new ArrayList( - providerPresenceStatusListeners).iterator(); - } - - while (listeners.hasNext()) - { - ProviderPresenceStatusListener listener = listeners.next(); - - listener.providerStatusChanged(evt); - } - } - - /** - * Notify all provider presence listeners that a new status message has - * been set. - * @param oldStatusMessage the status message our stack had so far - * @param newStatusMessage the status message we have from now on - */ - private void fireProviderStatusMessageChangeEvent( - String oldStatusMessage, String newStatusMessage) + public void fireProviderStatusChangeEvent( + PresenceStatus oldStatus, + PresenceStatus newStatus) { - - PropertyChangeEvent evt = new PropertyChangeEvent( - parentProvider, ProviderPresenceStatusListener.STATUS_MESSAGE, - oldStatusMessage, newStatusMessage); - - logger.debug("Dispatching stat. msg change. Listeners=" - + providerPresenceStatusListeners.size() - + " evt=" + evt); - - Iterator listeners = null; - synchronized (providerPresenceStatusListeners) - { - listeners = new ArrayList( - providerPresenceStatusListeners).iterator(); - } - - while (listeners.hasNext()) + if (!oldStatus.equals(newStatus)) { - ProviderPresenceStatusListener listener = - (ProviderPresenceStatusListener) listeners.next(); + currentStatus = newStatus; - listener.providerStatusMessageChanged(evt); + super.fireProviderStatusChangeEvent(oldStatus, newStatus); } } @@ -768,9 +666,11 @@ public void registrationStateChanged(RegistrationStateChangeEvent evt) parentProvider.getConnection().getRoster().addRosterListener( new ContactChangesListener()); - fireProviderPresenceStatusChangeEvent(currentStatus, - parentProvider.getJabberStatusEnum().getStatus( - JabberStatusEnum.AVAILABLE)); + fireProviderStatusChangeEvent( + currentStatus, + parentProvider + .getJabberStatusEnum() + .getStatus(JabberStatusEnum.AVAILABLE)); // init ssList ssContactList.init(); @@ -789,8 +689,7 @@ else if(evt.getNewState() == RegistrationState.UNREGISTERED JabberStatusEnum.OFFLINE); currentStatus = offlineStatus; - fireProviderPresenceStatusChangeEvent(oldStatus, - currentStatus); + fireProviderStatusChangeEvent(oldStatus, currentStatus); //send event notifications saying that all our buddies are //offline. The protocol does not implement top level buddies diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderServiceJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderServiceJabberImpl.java index a6720100e..3c4c3bd58 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderServiceJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderServiceJabberImpl.java @@ -719,9 +719,9 @@ public void connectionClosed() OperationSetPersistentPresenceJabberImpl opSetPersPresence = (OperationSetPersistentPresenceJabberImpl) getOperationSet(OperationSetPersistentPresence.class); - opSetPersPresence.fireProviderPresenceStatusChangeEvent( - opSetPersPresence.getPresenceStatus(), getJabberStatusEnum() - .getStatus(JabberStatusEnum.OFFLINE)); + opSetPersPresence.fireProviderStatusChangeEvent( + opSetPersPresence.getPresenceStatus(), + getJabberStatusEnum().getStatus(JabberStatusEnum.OFFLINE)); } /** diff --git a/src/net/java/sip/communicator/impl/protocol/mock/MockPersistentPresenceOperationSet.java b/src/net/java/sip/communicator/impl/protocol/mock/MockPersistentPresenceOperationSet.java index 6dd96c824..f7c84f5b1 100644 --- a/src/net/java/sip/communicator/impl/protocol/mock/MockPersistentPresenceOperationSet.java +++ b/src/net/java/sip/communicator/impl/protocol/mock/MockPersistentPresenceOperationSet.java @@ -20,17 +20,6 @@ public class MockPersistentPresenceOperationSet extends AbstractOperationSetPersistentPresence { - /** - * A list of listeners registered for ServerStoredGroupChangeEvents. - */ - private Vector serverStoredGroupListeners = new Vector(); - - /** - * A list of listeners registered for - * ProviderPresenceStatusChangeEvents. - */ - private Vector providerPresenceStatusListeners = new Vector(); - /** * The root of the mock contact list. */ @@ -53,103 +42,6 @@ public MockPersistentPresenceOperationSet(MockProvider provider) contactListRoot = new MockContactGroup("RootMockGroup", provider); } - /** - * Notifies all registered listeners of the new event. - * - * @param source the contact that has caused the event. - * @param eventID an identifier of the event to dispatch. - */ - public void fireServerStoredGroupEvent(MockContactGroup source, - int eventID) - { - ServerStoredGroupEvent evt = new ServerStoredGroupEvent( - source, eventID, (MockContactGroup)source.getParentContactGroup() - , this.parentProvider, this); - - Iterator listeners = null; - synchronized (serverStoredGroupListeners) - { - listeners = new ArrayList(serverStoredGroupListeners).iterator(); - } - - while (listeners.hasNext()) - { - ServerStoredGroupListener listener - = (ServerStoredGroupListener) listeners.next(); - - if(eventID == ServerStoredGroupEvent.GROUP_CREATED_EVENT) - { - listener.groupCreated(evt); - } - else if(eventID == ServerStoredGroupEvent.GROUP_RENAMED_EVENT) - { - listener.groupNameChanged(evt); - } - else if(eventID == ServerStoredGroupEvent.GROUP_REMOVED_EVENT) - { - listener.groupRemoved(evt); - } - } - } - - /** - * Notifies all registered listeners of the new event. - * - * @param oldValue the presence status we were in before the change. - */ - public void fireProviderStatusChangeEvent(PresenceStatus oldValue) - { - ProviderPresenceStatusChangeEvent evt - = new ProviderPresenceStatusChangeEvent(this.parentProvider, - oldValue, this.getPresenceStatus()); - - Iterator listeners = null; - synchronized (providerPresenceStatusListeners) - { - listeners = new ArrayList(providerPresenceStatusListeners).iterator(); - } - - while (listeners.hasNext()) - { - ProviderPresenceStatusListener listener - = (ProviderPresenceStatusListener) listeners.next(); - - listener.providerStatusChanged(evt); - } - } - - /** - * Mock implementation of the corresponding ProtocolProviderService method. - * - * @param listener a dummy param. - */ - public void addProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners) - { - if (!providerPresenceStatusListeners.contains(listener)) - this.providerPresenceStatusListeners.add(listener); - } - } - - /** - * Registers a listener that would receive events upon changes in server - * stored groups. - * - * @param listener a ServerStoredGroupChangeListener impl that would - * receive events upong group changes. - */ - public void addServerStoredGroupChangeListener(ServerStoredGroupListener - listener) - { - synchronized(serverStoredGroupListeners) - { - if (!serverStoredGroupListeners.contains(listener)) - serverStoredGroupListeners.add(listener); - } - } - /** * Creates a group with the specified name and parent in the server * stored contact list. @@ -365,21 +257,6 @@ public void changePresenceStatusForContact(MockContact contact contact, findContactParent(contact), oldStatus); } - /** - * Unregisters the specified listener so that it does not receive further - * events upon changes in local presence status. - * - * @param listener ProviderPresenceStatusListener - */ - public void removeProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners) - { - this.providerPresenceStatusListeners.remove(listener); - } - } - /** * Returns the group that is parent of the specified mockGroup or null * if no parent was found. @@ -432,22 +309,6 @@ public void removeServerStoredContactGroup(ContactGroup group) mockGroup, ServerStoredGroupEvent.GROUP_REMOVED_EVENT); } - - /** - * Removes the specified group change listener so that it won't receive - * any further events. - * - * @param listener the ServerStoredGroupChangeListener to remove - */ - public void removeServerStoredGroupChangeListener(ServerStoredGroupListener - listener) - { - synchronized(serverStoredGroupListeners) - { - serverStoredGroupListeners.remove(listener); - } - } - /** * Renames the specified group from the server stored contact list. * diff --git a/src/net/java/sip/communicator/impl/protocol/msn/OperationSetPersistentPresenceMsnImpl.java b/src/net/java/sip/communicator/impl/protocol/msn/OperationSetPersistentPresenceMsnImpl.java index e915ccf7c..6123105e4 100644 --- a/src/net/java/sip/communicator/impl/protocol/msn/OperationSetPersistentPresenceMsnImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/msn/OperationSetPersistentPresenceMsnImpl.java @@ -6,7 +6,6 @@ */ package net.java.sip.communicator.impl.protocol.msn; -import java.beans.PropertyChangeEvent; import java.util.*; import net.java.sip.communicator.service.protocol.*; @@ -43,14 +42,6 @@ public class OperationSetPersistentPresenceMsnImpl */ private PresenceStatus currentStatus = MsnStatusEnum.OFFLINE; - /** - * The list of listeners interested in receiving changes in our local - * presence status. - */ - private Vector - providerPresenceStatusListeners - = new Vector(); - /** * Sometimes status changes are received before the contact list is inited * here we store such events so we can show them correctly @@ -122,21 +113,6 @@ public OperationSetPersistentPresenceMsnImpl( new RegistrationStateListener()); } - /** - * Adds a listener that would receive events upon changes of the provider - * presence status. - * - * @param listener the listener to register for changes in our - * PresenceStatus. - */ - public void addProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners){ - providerPresenceStatusListeners.add(listener); - } - } - /** * Registers a listener that would receive events upon changes in server * stored groups. @@ -427,20 +403,6 @@ public PresenceStatus queryContactStatus(String contactIdentifier) throws return msnStatusToPresenceStatus(contact.getSourceContact().getStatus()); } - /** - * Unregisters the specified listener so that it does not receive further - * events upon changes in local presence status. - * - * @param listener ProviderPresenceStatusListener - */ - public void removeProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners){ - providerPresenceStatusListeners.remove(listener); - } - } - /** * Removes the specified group from the server stored contact list. * @@ -638,74 +600,20 @@ private void assertConnected() throws IllegalStateException /** * Notify all provider presence listeners of the corresponding event change - * @param oldStatus the status our stack had so far - * @param newStatus the status we have from now on - */ - void fireProviderPresenceStatusChangeEvent( - PresenceStatus oldStatus, PresenceStatus newStatus) - { - if(oldStatus.equals(newStatus)){ - logger.debug("Ignored prov stat. change evt. old==new = " - + oldStatus); - return; - } - - ProviderPresenceStatusChangeEvent evt = - new ProviderPresenceStatusChangeEvent( - parentProvider, oldStatus, newStatus); - - currentStatus = newStatus; - - - logger.debug("Dispatching Provider Status Change. Listeners=" - + providerPresenceStatusListeners.size() - + " evt=" + evt); - - Iterator listeners = null; - synchronized (providerPresenceStatusListeners) - { - listeners = new ArrayList( - providerPresenceStatusListeners).iterator(); - } - - while (listeners.hasNext()) - { - ProviderPresenceStatusListener listener = listeners.next(); - - listener.providerStatusChanged(evt); - } - } - - /** - * Notify all provider presence listeners that a new status message has - * been set. - * @param oldStatusMessage the status message our stack had so far - * @param newStatusMessage the status message we have from now on + * + * @param oldStatus + * the status our stack had so far + * @param newStatus + * the status we have from now on */ - private void fireProviderStatusMessageChangeEvent( - String oldStatusMessage, String newStatusMessage) + protected void fireProviderStatusChangeEvent( + PresenceStatus oldStatus, + PresenceStatus newStatus) { + if (!oldStatus.equals(newStatus)) { + currentStatus = newStatus; - PropertyChangeEvent evt = new PropertyChangeEvent( - parentProvider, ProviderPresenceStatusListener.STATUS_MESSAGE, - oldStatusMessage, newStatusMessage); - - logger.debug("Dispatching stat. msg change. Listeners=" - + providerPresenceStatusListeners.size() - + " evt=" + evt); - - Iterator listeners = null; - synchronized (providerPresenceStatusListeners) - { - listeners = new ArrayList( - providerPresenceStatusListeners).iterator(); - } - - while (listeners.hasNext()) - { - ProviderPresenceStatusListener listener = listeners.next(); - - listener.providerStatusMessageChanged(evt); + super.fireProviderStatusChangeEvent(oldStatus, newStatus); } } @@ -745,8 +653,7 @@ else if(evt.getNewState() == RegistrationState.UNREGISTERED PresenceStatus oldStatus = currentStatus; currentStatus = MsnStatusEnum.OFFLINE; - fireProviderPresenceStatusChangeEvent(oldStatus, - currentStatus); + fireProviderStatusChangeEvent(oldStatus, currentStatus); //send event notifications saying that all our buddies are //offline. @@ -873,7 +780,7 @@ public void ownerStatusChanged(MsnMessenger messenger) PresenceStatus oldStatus = currentStatus; currentStatus = msnStatusToPresenceStatus(messenger.getOwner().getStatus()); - fireProviderPresenceStatusChangeEvent(oldStatus, currentStatus); + fireProviderStatusChangeEvent(oldStatus, currentStatus); } /** diff --git a/src/net/java/sip/communicator/impl/protocol/rss/OperationSetPersistentPresenceRssImpl.java b/src/net/java/sip/communicator/impl/protocol/rss/OperationSetPersistentPresenceRssImpl.java index ff5ae878a..81e9aa089 100644 --- a/src/net/java/sip/communicator/impl/protocol/rss/OperationSetPersistentPresenceRssImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/rss/OperationSetPersistentPresenceRssImpl.java @@ -30,17 +30,6 @@ public class OperationSetPersistentPresenceRssImpl private static final Logger logger = Logger.getLogger(OperationSetPersistentPresenceRssImpl.class); - /** - * A list of listeners registered for ServerStoredGroupChangeEvents. - */ - private Vector serverStoredGroupListeners = new Vector(); - - /** - * A list of listeners registered for - * ProviderPresenceStatusChangeEvents. - */ - private Vector providerPresenceStatusListeners = new Vector(); - /** * The root of the RSS contact list. */ @@ -89,102 +78,14 @@ public OperationSetPersistentPresenceRssImpl( imageRetriever.start(); } - /** - * Notifies all registered listeners of the new event. - * - * @param source the contact that has caused the event. - * @param eventID an identifier of the event to dispatch. - */ - public void fireServerStoredGroupEvent(ContactGroupRssImpl source, - int eventID) - { - ServerStoredGroupEvent evt = new ServerStoredGroupEvent( - source, eventID, (ContactGroupRssImpl)source.getParentContactGroup() - , this.parentProvider, this); - - Iterator listeners = null; - synchronized (serverStoredGroupListeners) - { - listeners = new ArrayList(serverStoredGroupListeners).iterator(); - } - - while (listeners.hasNext()) - { - ServerStoredGroupListener listener - = (ServerStoredGroupListener) listeners.next(); - - if(eventID == ServerStoredGroupEvent.GROUP_CREATED_EVENT) - { - listener.groupCreated(evt); - } - else if(eventID == ServerStoredGroupEvent.GROUP_RENAMED_EVENT) - { - listener.groupNameChanged(evt); - } - else if(eventID == ServerStoredGroupEvent.GROUP_REMOVED_EVENT) - { - listener.groupRemoved(evt); - } - } - } - - /** - * Notifies all registered listeners of the new event. - * - * @param oldValue the presence status we were in before the change. + /* + * Overrides + * AbstractOperationSetPersistentPresence#fireProviderStatusChangeEvent + * (PresenceStatus) to stop the firing of an event. */ - public void fireProviderStatusChangeEvent(PresenceStatus oldValue) + protected void fireProviderStatusChangeEvent(PresenceStatus oldValue) { - ProviderPresenceStatusChangeEvent evt - = new ProviderPresenceStatusChangeEvent(this.parentProvider, - oldValue, this.getPresenceStatus()); - - Iterator listeners = null; - synchronized (providerPresenceStatusListeners) - { - listeners = new ArrayList(providerPresenceStatusListeners).iterator(); - } - - while (listeners.hasNext()) - { - ProviderPresenceStatusListener listener - = (ProviderPresenceStatusListener) listeners.next(); - - //listener.providerStatusChanged(evt); - } - } - - /** - * RSS implementation of the corresponding ProtocolProviderService - * method. - * - * @param listener a dummy parameter. - */ - public void addProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners) - { - if (!providerPresenceStatusListeners.contains(listener)) - this.providerPresenceStatusListeners.add(listener); - } - } - - /** - * Registers a listener that would receive events upon changes in server - * stored groups. - * - * @param listener a ServerStoredGroupChangeListener implementation that - * would receive events upon group changes. - */ - public void addServerStoredGroupChangeListener(ServerStoredGroupListener - listener) - { - synchronized(serverStoredGroupListeners) - { - if (!serverStoredGroupListeners.contains(listener)) - serverStoredGroupListeners.add(listener); - } + // Override the super implementation and stop the firing of an event. } /** @@ -493,21 +394,6 @@ private void changePresenceStatusForAllContacts(ContactGroup parent, } } - /** - * Unregisters the specified listener so that it does not receive further - * events upon changes in local presence status. - * - * @param listener ProviderPresenceStatusListener - */ - public void removeProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners) - { - this.providerPresenceStatusListeners.remove(listener); - } - } - /** * Returns the group that is parent of the specified rssGroup or null * if no parent was found. @@ -560,22 +446,6 @@ public void removeServerStoredContactGroup(ContactGroup group) rssGroup, ServerStoredGroupEvent.GROUP_REMOVED_EVENT); } - - /** - * Removes the specified group change listener so that it won't receive - * any further events. - * - * @param listener the ServerStoredGroupChangeListener to remove - */ - public void removeServerStoredGroupChangeListener(ServerStoredGroupListener - listener) - { - synchronized(serverStoredGroupListeners) - { - serverStoredGroupListeners.remove(listener); - } - } - /** * Renames the specified group from the server stored contact list. * diff --git a/src/net/java/sip/communicator/impl/protocol/sip/CallSipImpl.java b/src/net/java/sip/communicator/impl/protocol/sip/CallSipImpl.java index c9f86ecf5..eb62b6595 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/CallSipImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/CallSipImpl.java @@ -7,12 +7,13 @@ package net.java.sip.communicator.impl.protocol.sip; import java.util.*; + import javax.sip.*; +import net.java.sip.communicator.service.media.*; import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.service.protocol.event.*; import net.java.sip.communicator.util.*; -import net.java.sip.communicator.service.media.*; /** * A SIP implementation of the Call abstract class encapsulating SIP dialogs. @@ -28,7 +29,7 @@ public class CallSipImpl /** * A list containing all CallParticipants of this call. */ - private Vector callParticipants = + private final List callParticipants = new Vector(); /** @@ -212,7 +213,7 @@ public boolean contains(Dialog dialog) */ public CallParticipantSipImpl findCallParticipant(Dialog dialog) { - Iterator callParticipants = this.getCallParticipants(); + Iterator callParticipants = this.getCallParticipants(); if (logger.isTraceEnabled()) { diff --git a/src/net/java/sip/communicator/impl/protocol/sip/OperationSetBasicTelephonySipImpl.java b/src/net/java/sip/communicator/impl/protocol/sip/OperationSetBasicTelephonySipImpl.java index 5e11ba9e9..47a0af0e0 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/OperationSetBasicTelephonySipImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/OperationSetBasicTelephonySipImpl.java @@ -1503,7 +1503,7 @@ private Header stripReplacesHeader(Address address) if (replacesHeaderValue != null) { - for (Iterator headerNameIter = sipURI.getHeaderNames(); + for (Iterator headerNameIter = sipURI.getHeaderNames(); headerNameIter.hasNext();) { if (ReplacesHeader.NAME.equals(headerNameIter.next())) diff --git a/src/net/java/sip/communicator/impl/protocol/sip/OperationSetPresenceSipImpl.java b/src/net/java/sip/communicator/impl/protocol/sip/OperationSetPresenceSipImpl.java index 1ab6f9a9a..c723350e4 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/OperationSetPresenceSipImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/OperationSetPresenceSipImpl.java @@ -6,7 +6,6 @@ */ package net.java.sip.communicator.impl.protocol.sip; -import java.beans.PropertyChangeEvent; import java.io.*; import java.text.*; import java.util.*; @@ -43,21 +42,6 @@ public class OperationSetPresenceSipImpl private static final Logger logger = Logger.getLogger(OperationSetPresenceSipImpl.class); - /** - * A list of listeners registered for - * ProviderPresenceStatusChangeEvents. - */ - private Vector - providerPresenceStatusListeners - = new Vector(); - - /** - * A list of listeners registered for - * ServerStoredGroupChangeEvents. - */ - private Vector serverStoredGroupListeners - = new Vector(); - /** * The root of the SIP contact list. */ @@ -321,46 +305,6 @@ public void setDistantPA(boolean useDistPA) this.useDistantPA = useDistPA; } - /** - * Notifies all registered listeners of the new event. - * - * @param source the contact that has caused the event. - * @param eventID an identifier of the event to dispatch. - */ - public void fireServerStoredGroupEvent(ContactGroupSipImpl source, - int eventID) - { - ServerStoredGroupEvent evt = new ServerStoredGroupEvent( - source, eventID, source.getParentContactGroup(), - this.parentProvider, this); - - Iterator listeners = null; - synchronized (this.serverStoredGroupListeners) - { - listeners = new ArrayList(this.serverStoredGroupListeners) - .iterator(); - } - - while (listeners.hasNext()) - { - ServerStoredGroupListener listener - = (ServerStoredGroupListener) listeners.next(); - - if(eventID == ServerStoredGroupEvent.GROUP_CREATED_EVENT) - { - listener.groupCreated(evt); - } - else if(eventID == ServerStoredGroupEvent.GROUP_RENAMED_EVENT) - { - listener.groupNameChanged(evt); - } - else if(eventID == ServerStoredGroupEvent.GROUP_REMOVED_EVENT) - { - listener.groupRemoved(evt); - } - } - } - /** * Returns the root group of the server stored contact list. * @@ -671,38 +615,6 @@ public void publishPresenceStatus(PresenceStatus status, this.fireProviderMsgStatusChangeEvent(oldMessage); } - /** - * Notifies all registered listeners of the new event. - * - * @param oldValue the presence status we were in before the change. - */ - private void fireProviderStatusChangeEvent(PresenceStatus oldValue) - { - ProviderPresenceStatusChangeEvent evt - = new ProviderPresenceStatusChangeEvent(this.parentProvider, - oldValue, this.getPresenceStatus()); - - logger.debug("Dispatching Provider Status Change. Listeners=" - + this.providerPresenceStatusListeners.size() - + " evt=" + evt); - - Iterator listeners = null; - synchronized (this.providerPresenceStatusListeners) - { - listeners = new ArrayList(this.providerPresenceStatusListeners) - .iterator(); - } - - while (listeners.hasNext()) - { - ProviderPresenceStatusListener listener - = (ProviderPresenceStatusListener) listeners.next(); - - listener.providerStatusChanged(evt); - } - logger.debug("status dispatching done."); - } - /** * Notifies all registered listeners of the new event. * @@ -710,31 +622,7 @@ private void fireProviderStatusChangeEvent(PresenceStatus oldValue) */ public void fireProviderMsgStatusChangeEvent(String oldValue) { - PropertyChangeEvent evt = new PropertyChangeEvent( - this.parentProvider, - ProviderPresenceStatusListener.STATUS_MESSAGE, - oldValue, - this.statusMessage); - - logger.debug("Dispatching stat. msg change. Listeners=" - + this.providerPresenceStatusListeners.size() - + " evt=" + evt); - - Iterator listeners = null; - synchronized (this.providerPresenceStatusListeners) - { - listeners = new ArrayList( - this.providerPresenceStatusListeners).iterator(); - } - - while (listeners.hasNext()) - { - ProviderPresenceStatusListener listener = - (ProviderPresenceStatusListener) listeners.next(); - - listener.providerStatusMessageChanged(evt); - } - logger.debug("status dispatching done."); + fireProviderStatusMessageChangeEvent(oldValue, this.statusMessage); } /** @@ -3348,70 +3236,6 @@ public void setAuthorizationHandler(AuthorizationHandler handler) // authorizations aren't supported by this implementation } - /** - * Adds a listener that would receive events upon changes of the provider - * presence status. - * - * @param listener the listener to register for changes in our - * PresenceStatus. - */ - public void addProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(this.providerPresenceStatusListeners) - { - if (!this.providerPresenceStatusListeners.contains(listener)) - this.providerPresenceStatusListeners.add(listener); - } - } - - /** - * Unregisters the specified listener so that it does not receive further - * events upon changes in local presence status. - * - * @param listener ProviderPresenceStatusListener - */ - public void removeProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(this.providerPresenceStatusListeners) - { - this.providerPresenceStatusListeners.remove(listener); - } - } - - /** - * Registers a listener that would receive events upon changes in server - * stored groups. - * - * @param listener a ServerStoredGroupChangeListener impl that would - * receive events upon group changes. - */ - public void addServerStoredGroupChangeListener(ServerStoredGroupListener - listener) - { - synchronized(this.serverStoredGroupListeners) - { - if (!this.serverStoredGroupListeners.contains(listener)) - this.serverStoredGroupListeners.add(listener); - } - } - - /** - * Removes the specified group change listener so that it won't receive - * any further events. - * - * @param listener the ServerStoredGroupChangeListener to remove - */ - public void removeServerStoredGroupChangeListener(ServerStoredGroupListener - listener) - { - synchronized(this.serverStoredGroupListeners) - { - this.serverStoredGroupListeners.remove(listener); - } - } - /** * Returns the status message that was confirmed by the server * diff --git a/src/net/java/sip/communicator/impl/protocol/ssh/OperationSetPersistentPresenceSSHImpl.java b/src/net/java/sip/communicator/impl/protocol/ssh/OperationSetPersistentPresenceSSHImpl.java index ef45c2690..4c9d94eee 100644 --- a/src/net/java/sip/communicator/impl/protocol/ssh/OperationSetPersistentPresenceSSHImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/ssh/OperationSetPersistentPresenceSSHImpl.java @@ -33,17 +33,6 @@ public class OperationSetPersistentPresenceSSHImpl { private static final Logger logger = Logger.getLogger(OperationSetPersistentPresenceSSHImpl.class); - - /** - * A list of listeners registered for ServerStoredGroupChangeEvents. - */ - private Vector serverStoredGroupListeners = new Vector(); - - /** - * A list of listeners registered for - * ProviderPresenceStatusChangeEvents. - */ - private Vector providerPresenceStatusListeners = new Vector(); /** * The root of the ssh contact list. @@ -98,109 +87,6 @@ public void changeContactPresenceStatus( fireProviderStatusChangeEvent(oldStatus); } - /** - * Notifies all registered listeners of the new event. - * - * @param source the contact that has caused the event. - * @param eventID an identifier of the event to dispatch. - */ - public void fireServerStoredGroupEvent( - ContactGroupSSHImpl source, - int eventID) - { - ServerStoredGroupEvent evt = new ServerStoredGroupEvent( - source, - eventID, - (ContactGroupSSHImpl)source.getParentContactGroup(), - this.parentProvider, - this); - - Iterator listeners = null; - synchronized (serverStoredGroupListeners) - { - listeners = new ArrayList(serverStoredGroupListeners).iterator(); - } - - while (listeners.hasNext()) - { - ServerStoredGroupListener listener - = (ServerStoredGroupListener) listeners.next(); - - if(eventID == ServerStoredGroupEvent.GROUP_CREATED_EVENT) - { - listener.groupCreated(evt); - } - else if(eventID == ServerStoredGroupEvent.GROUP_RENAMED_EVENT) - { - listener.groupNameChanged(evt); - } - else if(eventID == ServerStoredGroupEvent.GROUP_REMOVED_EVENT) - { - listener.groupRemoved(evt); - } - } - } - - /** - * Notifies all registered listeners of the new event. - * - * @param oldValue the presence status we were in before the change. - */ - public void fireProviderStatusChangeEvent(PresenceStatus oldValue) - { - ProviderPresenceStatusChangeEvent evt - = new ProviderPresenceStatusChangeEvent(this.parentProvider, - oldValue, this.getPresenceStatus()); - - Iterator listeners = null; - synchronized (providerPresenceStatusListeners) - { - listeners = new ArrayList(providerPresenceStatusListeners) - .iterator(); - } - - while (listeners.hasNext()) - { - ProviderPresenceStatusListener listener - = (ProviderPresenceStatusListener) listeners.next(); - - listener.providerStatusChanged(evt); - } - } - - /** - * SSH implementation of the corresponding ProtocolProviderService - * method. - * - * @param listener a dummy param. - */ - public void addProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners) - { - if (!providerPresenceStatusListeners.contains(listener)) - this.providerPresenceStatusListeners.add(listener); - } - } - - /** - * Registers a listener that would receive events upon changes in server - * stored groups. - * - * @param listener a ServerStoredGroupChangeListener impl that would - * receive events upong group changes. - */ - public void addServerStoredGroupChangeListener( - ServerStoredGroupListener listener) - { - synchronized(serverStoredGroupListeners) - { - if (!serverStoredGroupListeners.contains(listener)) - serverStoredGroupListeners.add(listener); - } - } - /** * Creates a group with the specified name and parent in the server * stored contact list. @@ -527,21 +413,6 @@ private void changePresenceStatusForAllContacts( } } - /** - * Unregisters the specified listener so that it does not receive further - * events upon changes in local presence status. - * - * @param listener ProviderPresenceStatusListener - */ - public void removeProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners) - { - this.providerPresenceStatusListeners.remove(listener); - } - } - /** * Returns the group that is parent of the specified sshGroup or null * if no parent was found. @@ -599,22 +470,6 @@ public void removeServerStoredContactGroup(ContactGroup group) this.fireServerStoredGroupEvent( sshGroup, ServerStoredGroupEvent.GROUP_REMOVED_EVENT); } - - - /** - * Removes the specified group change listener so that it won't receive - * any further events. - * - * @param listener the ServerStoredGroupChangeListener to remove - */ - public void removeServerStoredGroupChangeListener( - ServerStoredGroupListener listener) - { - synchronized(serverStoredGroupListeners) - { - serverStoredGroupListeners.remove(listener); - } - } /** * Renames the specified group from the server stored contact list. diff --git a/src/net/java/sip/communicator/impl/protocol/yahoo/OperationSetPersistentPresenceYahooImpl.java b/src/net/java/sip/communicator/impl/protocol/yahoo/OperationSetPersistentPresenceYahooImpl.java index dde17b8ec..59d7c53a9 100644 --- a/src/net/java/sip/communicator/impl/protocol/yahoo/OperationSetPersistentPresenceYahooImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/yahoo/OperationSetPersistentPresenceYahooImpl.java @@ -6,7 +6,6 @@ */ package net.java.sip.communicator.impl.protocol.yahoo; -import java.beans.PropertyChangeEvent; import java.io.*; import java.util.*; @@ -14,7 +13,6 @@ import net.java.sip.communicator.service.protocol.event.*; import net.java.sip.communicator.service.protocol.yahooconstants.*; import net.java.sip.communicator.util.*; - import ymsg.network.*; import ymsg.network.event.*; @@ -45,12 +43,6 @@ public class OperationSetPersistentPresenceYahooImpl */ private PresenceStatus currentStatus = YahooStatusEnum.OFFLINE; - /** - * The list of listeners interested in receiving changes in our local - * presencestatus. - */ - private Vector providerPresenceStatusListeners = new Vector(); - /** * Sometimes status changes are received before the contact list is inited * here we store such events so we can show them correctly @@ -143,21 +135,6 @@ public OperationSetPersistentPresenceYahooImpl( new RegistrationStateListener()); } - /** - * Adds a listener that would receive events upon changes of the provider - * presence status. - * - * @param listener the listener to register for changes in our - * PresenceStatus. - */ - public void addProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners){ - providerPresenceStatusListeners.add(listener); - } - } - /** * Registers a listener that would receive events upong changes in server * stored groups. @@ -425,7 +402,7 @@ public void publishPresenceStatus(PresenceStatus status, parentProvider.getYahooSession().setStatus( scToYahooModesMappings.get(status).longValue()); - fireProviderPresenceStatusChangeEvent(currentStatus, status); + fireProviderStatusChangeEvent(currentStatus, status); } catch(IOException ex) { @@ -464,20 +441,6 @@ public PresenceStatus queryContactStatus(String contactIdentifier) throws return yahooStatusToPresenceStatus(contact.getSourceContact().getStatus()); } - /** - * Unregisters the specified listener so that it does not receive further - * events upon changes in local presence status. - * - * @param listener ProviderPresenceStatusListener - */ - public void removeProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners){ - providerPresenceStatusListeners.remove(listener); - } - } - /** * Removes the specified group from the server stored contact list. * @@ -687,74 +650,21 @@ private void assertConnected() throws IllegalStateException /** * Notify all provider presence listeners of the corresponding event change - * @param oldStatus the status our stack had so far - * @param newStatus the status we have from now on + * + * @param oldStatus + * the status our stack had so far + * @param newStatus + * the status we have from now on */ - void fireProviderPresenceStatusChangeEvent( - PresenceStatus oldStatus, PresenceStatus newStatus) + protected void fireProviderStatusChangeEvent( + PresenceStatus oldStatus, + PresenceStatus newStatus) { - if(oldStatus.equals(newStatus)){ - logger.debug("Ignored prov stat. change evt. old==new = " - + oldStatus); - return; - } - - ProviderPresenceStatusChangeEvent evt = - new ProviderPresenceStatusChangeEvent( - parentProvider, oldStatus, newStatus); - - currentStatus = newStatus; - - - logger.debug("Dispatching Provider Status Change. Listeners=" - + providerPresenceStatusListeners.size() - + " evt=" + evt); - - Iterator listeners = null; - synchronized (providerPresenceStatusListeners) - { - listeners = new ArrayList(providerPresenceStatusListeners).iterator(); - } - - while (listeners.hasNext()) + if (!oldStatus.equals(newStatus)) { - ProviderPresenceStatusListener listener - = (ProviderPresenceStatusListener) listeners.next(); + currentStatus = newStatus; - listener.providerStatusChanged(evt); - } - } - - /** - * Notify all provider presence listeners that a new status message has - * been set. - * @param oldStatusMessage the status message our stack had so far - * @param newStatusMessage the status message we have from now on - */ - private void fireProviderStatusMessageChangeEvent( - String oldStatusMessage, String newStatusMessage) - { - - PropertyChangeEvent evt = new PropertyChangeEvent( - parentProvider, ProviderPresenceStatusListener.STATUS_MESSAGE, - oldStatusMessage, newStatusMessage); - - logger.debug("Dispatching stat. msg change. Listeners=" - + providerPresenceStatusListeners.size() - + " evt=" + evt); - - Iterator listeners = null; - synchronized (providerPresenceStatusListeners) - { - listeners = new ArrayList(providerPresenceStatusListeners).iterator(); - } - - while (listeners.hasNext()) - { - ProviderPresenceStatusListener listener = - (ProviderPresenceStatusListener) listeners.next(); - - listener.providerStatusMessageChanged(evt); + super.fireProviderStatusChangeEvent(oldStatus, newStatus); } } @@ -837,8 +747,7 @@ else if(evt.getNewState() == RegistrationState.UNREGISTERED PresenceStatus oldStatus = currentStatus; currentStatus = YahooStatusEnum.OFFLINE; - fireProviderPresenceStatusChangeEvent(oldStatus, - currentStatus); + fireProviderStatusChangeEvent(oldStatus, currentStatus); removeSubscriptionListener(statusUpdater); @@ -900,7 +809,7 @@ private void handleContactStatusChange(YahooUser yFriend) PresenceStatus oldStatus = currentStatus; currentStatus = yahooStatusToPresenceStatus(yFriend.getStatus()); - fireProviderPresenceStatusChangeEvent(oldStatus, currentStatus); + fireProviderStatusChangeEvent(oldStatus, currentStatus); return; } @@ -962,7 +871,8 @@ else if(evt.getFriends() != null) /** * Updates the statuses of newly created persistent contacts */ - private class StatusUpdater implements SubscriptionListener + private class StatusUpdater + extends SubscriptionAdapter { public void subscriptionCreated(SubscriptionEvent evt) { @@ -974,12 +884,6 @@ public void subscriptionCreated(SubscriptionEvent evt) handleContactStatusChange(contact, contact.getSourceContact()); } - - public void subscriptionFailed(SubscriptionEvent evt) {} - public void subscriptionRemoved(SubscriptionEvent evt) {} - public void subscriptionMoved(SubscriptionMovedEvent evt) {} - public void subscriptionResolved(SubscriptionEvent evt) {} - public void contactModified(ContactPropertyChangeEvent evt) {} } private class EarlyEventListener diff --git a/src/net/java/sip/communicator/impl/protocol/yahoo/ProtocolProviderServiceYahooImpl.java b/src/net/java/sip/communicator/impl/protocol/yahoo/ProtocolProviderServiceYahooImpl.java index a35cc1a61..c058ea035 100644 --- a/src/net/java/sip/communicator/impl/protocol/yahoo/ProtocolProviderServiceYahooImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/yahoo/ProtocolProviderServiceYahooImpl.java @@ -165,7 +165,7 @@ private void connectAndLogin( SecurityAuthority authority, if(yahooSession.getSessionStatus()==StatusConstants.MESSAGING) { - persistentPresence.fireProviderPresenceStatusChangeEvent( + persistentPresence.fireProviderStatusChangeEvent( persistentPresence.getPresenceStatus(), persistentPresence.yahooStatusToPresenceStatus( yahooSession.getStatus())); diff --git a/src/net/java/sip/communicator/impl/protocol/zeroconf/OperationSetPersistentPresenceZeroconfImpl.java b/src/net/java/sip/communicator/impl/protocol/zeroconf/OperationSetPersistentPresenceZeroconfImpl.java index 53645cf88..2c70cc658 100644 --- a/src/net/java/sip/communicator/impl/protocol/zeroconf/OperationSetPersistentPresenceZeroconfImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/zeroconf/OperationSetPersistentPresenceZeroconfImpl.java @@ -32,17 +32,6 @@ public class OperationSetPersistentPresenceZeroconfImpl private static final Logger logger = Logger.getLogger(OperationSetPersistentPresenceZeroconfImpl.class); - /** - * A list of listeners registered for ServerStoredGroupChangeEvents. - */ - private Vector serverStoredGroupListeners = new Vector(); - - /** - * A list of listeners registered for - * ProviderPresenceStatusChangeEvents. - */ - private Vector providerPresenceStatusListeners = new Vector(); - /** * The root of the zeroconf contact list. */ @@ -82,106 +71,6 @@ public OperationSetPersistentPresenceZeroconfImpl( new UnregistrationListener()); } - /** - * Notifies all registered listeners of the new event. - * - * @param source the contact that has caused the event. - * @param eventID an identifier of the event to dispatch. - */ - public void fireServerStoredGroupEvent(ContactGroupZeroconfImpl source, - int eventID) - { - ServerStoredGroupEvent evt = new ServerStoredGroupEvent( - source, eventID, (ContactGroupZeroconfImpl) - source.getParentContactGroup() - , this.parentProvider, this); - - Iterator listeners = null; - synchronized (serverStoredGroupListeners) - { - listeners = new ArrayList(serverStoredGroupListeners).iterator(); - } - - while (listeners.hasNext()) - { - ServerStoredGroupListener listener - = (ServerStoredGroupListener) listeners.next(); - - if(eventID == ServerStoredGroupEvent.GROUP_CREATED_EVENT) - { - listener.groupCreated(evt); - } - else if(eventID == ServerStoredGroupEvent.GROUP_RENAMED_EVENT) - { - listener.groupNameChanged(evt); - } - else if(eventID == ServerStoredGroupEvent.GROUP_REMOVED_EVENT) - { - listener.groupRemoved(evt); - } - } - } - - /** - * Notifies all registered listeners of the new event. - * - * @param oldValue the presence status we were in before the change. - */ - public void fireProviderStatusChangeEvent(PresenceStatus oldValue) - { - ProviderPresenceStatusChangeEvent evt - = new ProviderPresenceStatusChangeEvent(this.parentProvider, - oldValue, this.getPresenceStatus()); - - Iterator listeners = null; - synchronized (providerPresenceStatusListeners) - { - listeners = - new ArrayList(providerPresenceStatusListeners).iterator(); - } - - while (listeners.hasNext()) - { - ProviderPresenceStatusListener listener - = (ProviderPresenceStatusListener) listeners.next(); - - listener.providerStatusChanged(evt); - } - } - - /** - * Zeroconf implementation of the corresponding ProtocolProviderService - * method. - * - * @param listener a dummy param. - */ - public void addProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners) - { - if (!providerPresenceStatusListeners.contains(listener)) - this.providerPresenceStatusListeners.add(listener); - } - } - - /** - * Registers a listener that would receive events upon changes in server - * stored groups. - * - * @param listener a ServerStoredGroupChangeListener impl that would - * receive events upong group changes. - */ - public void addServerStoredGroupChangeListener(ServerStoredGroupListener - listener) - { - synchronized(serverStoredGroupListeners) - { - if (!serverStoredGroupListeners.contains(listener)) - serverStoredGroupListeners.add(listener); - } - } - /** * Creates a group with the specified name and parent in the server * stored contact list. @@ -470,21 +359,6 @@ protected void changePresenceStatusForAllContacts(ContactGroup parent, } } - /** - * Unregisters the specified listener so that it does not receive further - * events upon changes in local presence status. - * - * @param listener ProviderPresenceStatusListener - */ - public void removeProviderPresenceStatusListener( - ProviderPresenceStatusListener listener) - { - synchronized(providerPresenceStatusListeners) - { - this.providerPresenceStatusListeners.remove(listener); - } - } - /** * Returns the group that is parent of the specified zeroconfGroup or null * if no parent was found. @@ -541,22 +415,6 @@ public void removeServerStoredContactGroup(ContactGroup group) zeroconfGroup, ServerStoredGroupEvent.GROUP_REMOVED_EVENT); } - - /** - * Removes the specified group change listener so that it won't receive - * any further events. - * - * @param listener the ServerStoredGroupChangeListener to remove - */ - public void removeServerStoredGroupChangeListener(ServerStoredGroupListener - listener) - { - synchronized(serverStoredGroupListeners) - { - serverStoredGroupListeners.remove(listener); - } - } - /** * Renames the specified group from the server stored contact list. * diff --git a/src/net/java/sip/communicator/service/protocol/AbstractOperationSetPersistentPresence.java b/src/net/java/sip/communicator/service/protocol/AbstractOperationSetPersistentPresence.java index cbee1e5df..8033bab3a 100644 --- a/src/net/java/sip/communicator/service/protocol/AbstractOperationSetPersistentPresence.java +++ b/src/net/java/sip/communicator/service/protocol/AbstractOperationSetPersistentPresence.java @@ -5,6 +5,7 @@ */ package net.java.sip.communicator.service.protocol; +import java.beans.PropertyChangeEvent; import java.util.*; import net.java.sip.communicator.service.protocol.event.*; @@ -24,23 +25,36 @@ public abstract class AbstractOperationSetPersistentPresenceContactPresenceStatusChangeEvents. + */ + private final List contactPresenceStatusListeners + = new Vector(); + /** * The provider that created us. */ protected final T parentProvider; /** - * The list of listeners interested in SubscriptionEvents. + * A list of listeners registered for + * ProviderPresenceStatusChangeEvents. */ - private final List subscriptionListeners = - new Vector(); + private final List providerPresenceStatusListeners + = new Vector(); /** - * A list of listeners registered for - * ContactPresenceStatusChangeEvents. + * A list of listeners registered for ServerStoredGroupChangeEvents. */ - private final List contactPresenceStatusListeners - = new Vector(); + private final List serverStoredGroupListeners + = new Vector(); + + /** + * The list of listeners interested in SubscriptionEvents. + */ + private final List subscriptionListeners + = new Vector(); /** * Initializes a new AbstractOperationSetPersistentPresence @@ -70,6 +84,41 @@ public void addContactPresenceStatusListener( } } + /** + * Adds a listener that would receive events upon changes of the provider + * presence status. + * + * @param listener + * the listener to register for changes in our PresenceStatus. + */ + public void addProviderPresenceStatusListener( + ProviderPresenceStatusListener listener) + { + synchronized (providerPresenceStatusListeners) + { + if (!providerPresenceStatusListeners.contains(listener)) + providerPresenceStatusListeners.add(listener); + } + } + + /** + * Registers a listener that would receive events upon changes in server + * stored groups. + * + * @param listener + * a ServerStoredGroupChangeListener impl that would receive + * events upon group changes. + */ + public void addServerStoredGroupChangeListener( + ServerStoredGroupListener listener) + { + synchronized (serverStoredGroupListeners) + { + if (!serverStoredGroupListeners.contains(listener)) + serverStoredGroupListeners.add(listener); + } + } + public void addSubscriptionListener(SubscriptionListener listener) { synchronized (subscriptionListeners) @@ -119,7 +168,7 @@ public void fireContactPresenceStatusChangeEvent(Contact source, oldValue, newValue); - List listeners; + Collection listeners; synchronized (contactPresenceStatusListeners) { listeners = @@ -150,22 +199,151 @@ public void fireContactPresenceStatusChangeEvent(Contact source, public void fireContactPropertyChangeEvent(String eventID, Contact source, Object oldValue, Object newValue) { - ContactPropertyChangeEvent evt = - new ContactPropertyChangeEvent(source, eventID, oldValue, newValue); + ContactPropertyChangeEvent evt + = new ContactPropertyChangeEvent( + source, + eventID, + oldValue, + newValue); - List listeners; + Collection listeners; synchronized (subscriptionListeners) { - listeners = - new ArrayList(subscriptionListeners); + listeners + = new ArrayList(subscriptionListeners); } logger.debug("Dispatching a Contact Property Change Event to" + listeners.size() + " listeners. Evt=" + evt); - for (Iterator listenerIt = listeners.iterator(); listenerIt - .hasNext();) - listenerIt.next().contactModified(evt); + for (SubscriptionListener listener : listeners) + listener.contactModified(evt); + } + + /** + * Notifies all registered listeners of the new event. + * + * @param oldValue + * the presence status we were in before the change. + */ + protected void fireProviderStatusChangeEvent(PresenceStatus oldValue) + { + fireProviderStatusChangeEvent(oldValue, getPresenceStatus()); + } + + /** + * Notify all provider presence listeners of the corresponding event change + * + * @param oldStatus + * the status our stack had so far + * @param newStatus + * the status we have from now on + */ + protected void fireProviderStatusChangeEvent( + PresenceStatus oldValue, + PresenceStatus newValue) + { + ProviderPresenceStatusChangeEvent evt + = new ProviderPresenceStatusChangeEvent( + parentProvider, + oldValue, + newValue); + + Collection listeners; + synchronized (providerPresenceStatusListeners) + { + listeners + = new ArrayList( + providerPresenceStatusListeners); + } + + logger.debug( + "Dispatching Provider Status Change. Listeners=" + + listeners.size() + + " evt=" + evt); + + for (ProviderPresenceStatusListener listener : listeners) + listener.providerStatusChanged(evt); + + logger.debug("status dispatching done."); + } + + /** + * Notify all provider presence listeners that a new status message has been + * set. + * + * @param oldStatusMessage + * the status message our stack had so far + * @param newStatusMessage + * the status message we have from now on + */ + protected void fireProviderStatusMessageChangeEvent( + String oldStatusMessage, + String newStatusMessage) + { + PropertyChangeEvent evt + = new PropertyChangeEvent( + parentProvider, + ProviderPresenceStatusListener.STATUS_MESSAGE, + oldStatusMessage, + newStatusMessage); + + Collection listeners; + synchronized (providerPresenceStatusListeners) + { + listeners + = new ArrayList( + providerPresenceStatusListeners); + } + + logger.debug( + "Dispatching stat. msg change. Listeners=" + + listeners.size() + + " evt=" + evt); + + for (ProviderPresenceStatusListener listener : listeners) + listener.providerStatusMessageChanged(evt); + } + + /** + * Notifies all registered listeners of the new event. + * + * @param source the contact that has caused the event. + * @param eventID an identifier of the event to dispatch. + */ + protected void fireServerStoredGroupEvent( + ContactGroup source, + int eventID) + { + ServerStoredGroupEvent evt + = new ServerStoredGroupEvent( + source, + eventID, + source.getParentContactGroup(), + parentProvider, + this); + + Iterable listeners; + synchronized (serverStoredGroupListeners) + { + listeners + = new ArrayList( + serverStoredGroupListeners); + } + + for (ServerStoredGroupListener listener : listeners) + switch (eventID) + { + case ServerStoredGroupEvent.GROUP_CREATED_EVENT: + listener.groupCreated(evt); + break; + case ServerStoredGroupEvent.GROUP_RENAMED_EVENT: + listener.groupNameChanged(evt); + break; + case ServerStoredGroupEvent.GROUP_REMOVED_EVENT: + listener.groupRemoved(evt); + break; + } } /** @@ -185,11 +363,16 @@ public void fireSubscriptionEvent(Contact source, ContactGroup parentGroup, public void fireSubscriptionEvent(Contact source, ContactGroup parentGroup, int eventID, int errorCode, String errorReason) { - SubscriptionEvent evt = - new SubscriptionEvent(source, parentProvider, parentGroup, eventID, - errorCode, errorReason); + SubscriptionEvent evt + = new SubscriptionEvent( + source, + parentProvider, + parentGroup, + eventID, + errorCode, + errorReason); - List listeners; + Collection listeners; synchronized (subscriptionListeners) { listeners = @@ -200,7 +383,6 @@ public void fireSubscriptionEvent(Contact source, ContactGroup parentGroup, + " listeners. Evt=" + evt); for (SubscriptionListener listener : listeners) - { switch (eventID) { case SubscriptionEvent.SUBSCRIPTION_CREATED: @@ -216,7 +398,6 @@ public void fireSubscriptionEvent(Contact source, ContactGroup parentGroup, listener.subscriptionResolved(evt); break; } - } } /** @@ -234,11 +415,11 @@ public void fireSubscriptionMovedEvent(Contact source, new SubscriptionMovedEvent(source, parentProvider, oldParent, newParent); - List listeners; + Collection listeners; synchronized (subscriptionListeners) { - listeners = - new ArrayList(subscriptionListeners); + listeners + = new ArrayList(subscriptionListeners); } logger.debug("Dispatching a Subscription Event to" + listeners.size() @@ -263,6 +444,37 @@ public void removeContactPresenceStatusListener( } } + /** + * Unregisters the specified listener so that it does not receive further + * events upon changes in local presence status. + * + * @param listener + * ProviderPresenceStatusListener + */ + public void removeProviderPresenceStatusListener( + ProviderPresenceStatusListener listener) + { + synchronized (providerPresenceStatusListeners) + { + providerPresenceStatusListeners.remove(listener); + } + } + + /** + * Removes the specified group change listener so that it won't receive + * any further events. + * + * @param listener the ServerStoredGroupChangeListener to remove + */ + public void removeServerStoredGroupChangeListener( + ServerStoredGroupListener listener) + { + synchronized (serverStoredGroupListeners) + { + serverStoredGroupListeners.remove(listener); + } + } + /** * Removes the specified subscription listener. * diff --git a/src/net/java/sip/communicator/service/protocol/event/SubscriptionAdapter.java b/src/net/java/sip/communicator/service/protocol/event/SubscriptionAdapter.java new file mode 100644 index 000000000..c5cc4e840 --- /dev/null +++ b/src/net/java/sip/communicator/service/protocol/event/SubscriptionAdapter.java @@ -0,0 +1,69 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ +package net.java.sip.communicator.service.protocol.event; + +/** + * Represents a default implementation of SubscriptionListener + * which performs no processing of the received events and allows extenders to + * easily implement the interface in question by just overriding the methods + * they are interested in. + * + * @author Lubomir Marinov + */ +public class SubscriptionAdapter + implements SubscriptionListener +{ + + /* + * Implements + * SubscriptionListener#contactModified(ContactPropertyChangeEvent). Does + * nothing. + */ + public void contactModified(ContactPropertyChangeEvent evt) + { + } + + /* + * Implements SubscriptionListener#subscriptionCreated(SubscriptionEvent). + * Does nothing. + */ + public void subscriptionCreated(SubscriptionEvent evt) + { + } + + /* + * Implements SubscriptionListener#subscriptionFailed(SubscriptionEvent). + * Does nothing. + */ + public void subscriptionFailed(SubscriptionEvent evt) + { + } + + /* + * Implements SubscriptionListener#subscriptionMoved(SubscriptionMovedEvent). + * Does nothing. + */ + public void subscriptionMoved(SubscriptionMovedEvent evt) + { + } + + /* + * Implements SubscriptionListener#subscriptionRemoved(SubscriptionEvent). + * Does nothing. + */ + public void subscriptionRemoved(SubscriptionEvent evt) + { + } + + /* + * Implements SubscriptionListener#subscriptionResolved(SubscriptionEvent). + * Does nothing. + */ + public void subscriptionResolved(SubscriptionEvent evt) + { + } +} diff --git a/test/net/java/sip/communicator/slick/protocol/gibberish/TestOperationSetPresence.java b/test/net/java/sip/communicator/slick/protocol/gibberish/TestOperationSetPresence.java index 51a588492..ff1122134 100644 --- a/test/net/java/sip/communicator/slick/protocol/gibberish/TestOperationSetPresence.java +++ b/test/net/java/sip/communicator/slick/protocol/gibberish/TestOperationSetPresence.java @@ -1062,46 +1062,4 @@ public void waitForAuthRequest(long waitFor) } } } - - /** - * Used to wait till buddy is removed from our contact list. - * Used in the authorization process tests - */ - private class UnsubscribeWait implements SubscriptionListener - { - public void waitForUnsubscribre(long waitFor) - { - synchronized(this) - { - try{ - wait(waitFor); - } - catch (InterruptedException ex) - { - logger.debug( - "Interrupted while waiting for a subscription evt", ex); - } - } - } - - public void subscriptionRemoved(SubscriptionEvent evt) - { - synchronized(this) - { - logger.debug("Got subscriptionRemoved " + evt); - notifyAll(); - } - } - - public void subscriptionCreated(SubscriptionEvent evt) - {} - public void subscriptionFailed(SubscriptionEvent evt) - {} - public void subscriptionMoved(SubscriptionMovedEvent evt) - {} - public void subscriptionResolved(SubscriptionEvent evt) - {} - public void contactModified(ContactPropertyChangeEvent evt) - {} - } } diff --git a/test/net/java/sip/communicator/slick/protocol/icq/TestOperationSetPresence.java b/test/net/java/sip/communicator/slick/protocol/icq/TestOperationSetPresence.java index b6b212436..cb28d81c8 100644 --- a/test/net/java/sip/communicator/slick/protocol/icq/TestOperationSetPresence.java +++ b/test/net/java/sip/communicator/slick/protocol/icq/TestOperationSetPresence.java @@ -1256,7 +1256,8 @@ public void waitForAuthRequest(long waitFor) * Used to wait till buddy is removed from our contact list. * Used in the authorization process tests */ - private class UnsubscribeWait implements SubscriptionListener + private static class UnsubscribeWait + extends SubscriptionAdapter { public void waitForUnsubscribre(long waitFor) { @@ -1281,17 +1282,6 @@ public void subscriptionRemoved(SubscriptionEvent evt) notifyAll(); } } - - public void subscriptionCreated(SubscriptionEvent evt) - {} - public void subscriptionFailed(SubscriptionEvent evt) - {} - public void subscriptionMoved(SubscriptionMovedEvent evt) - {} - public void subscriptionResolved(SubscriptionEvent evt) - {} - public void contactModified(ContactPropertyChangeEvent evt) - {} } /** diff --git a/test/net/java/sip/communicator/slick/protocol/msn/TestOperationSetPresence.java b/test/net/java/sip/communicator/slick/protocol/msn/TestOperationSetPresence.java index 00c5df9da..8aab33c85 100644 --- a/test/net/java/sip/communicator/slick/protocol/msn/TestOperationSetPresence.java +++ b/test/net/java/sip/communicator/slick/protocol/msn/TestOperationSetPresence.java @@ -972,46 +972,4 @@ public void contactPresenceStatusChanged( } } } - - /** - * Used to wait till buddy is removed from our contact list. - * Used in the authorization process tests - */ - private class UnsubscribeWait implements SubscriptionListener - { - public void waitForUnsubscribre(long waitFor) - { - synchronized(this) - { - try{ - wait(waitFor); - } - catch (InterruptedException ex) - { - logger.debug( - "Interrupted while waiting for a subscription evt", ex); - } - } - } - - public void subscriptionRemoved(SubscriptionEvent evt) - { - synchronized(this) - { - logger.debug("Got subscriptionRemoved " + evt); - notifyAll(); - } - } - - public void subscriptionCreated(SubscriptionEvent evt) - {} - public void subscriptionFailed(SubscriptionEvent evt) - {} - public void subscriptionMoved(SubscriptionMovedEvent evt) - {} - public void subscriptionResolved(SubscriptionEvent evt) - {} - public void contactModified(ContactPropertyChangeEvent evt) - {} - } } diff --git a/test/net/java/sip/communicator/slick/protocol/sip/TestOperationSetPresence.java b/test/net/java/sip/communicator/slick/protocol/sip/TestOperationSetPresence.java index bfd51c2c7..15bb97ab7 100644 --- a/test/net/java/sip/communicator/slick/protocol/sip/TestOperationSetPresence.java +++ b/test/net/java/sip/communicator/slick/protocol/sip/TestOperationSetPresence.java @@ -10,6 +10,7 @@ import java.util.*; import junit.framework.*; + import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.service.protocol.event.*; import net.java.sip.communicator.util.*; @@ -97,7 +98,6 @@ protected void setUp() throws Exception + "implementation of at least the one of the Presence " + "Operation Sets"); } - } protected void tearDown() throws Exception @@ -154,13 +154,12 @@ public void testChangingState() throws Exception { //first create a local list containing the presence status instances //supported by the underlying implementation. - Iterator supportedStatusSetIter = + Iterator supportedStatusSetIter = this.operationSetPresence1.getSupportedStatusSet(); while (supportedStatusSetIter.hasNext()) { - PresenceStatus supportedStatus = - (PresenceStatus) supportedStatusSetIter.next(); + PresenceStatus supportedStatus = supportedStatusSetIter.next(); logger.trace("Will test a transition to " + supportedStatus.getStatusName()); @@ -291,25 +290,22 @@ private void pauseAfterStateChanges() * @throws java.lang.Exception if one of the transitions fails */ public void testQueryContactStatus() - throws Exception + throws Exception { //first create a local list containing the presence status instances //supported by the underlying implementation. - Iterator supportedStatusSetIter = + Iterator supportedStatusSetIter = operationSetPresence1.getSupportedStatusSet(); while (supportedStatusSetIter.hasNext()) { - PresenceStatus supportedStatus - = (PresenceStatus)supportedStatusSetIter.next(); - - + PresenceStatus supportedStatus = supportedStatusSetIter.next(); + logger.trace("Will test a transition to " + supportedStatus.getStatusName()); - + subtestQueryContactStatus(supportedStatus); } - } /** @@ -365,8 +361,8 @@ public void postTestSubscribe() = new SubscriptionEventCollector(); this.operationSetPresence1.addSubscriptionListener(subEvtCollector); - - synchronized (subEvtCollector){ + synchronized (subEvtCollector) + { this.operationSetPresence1.subscribe(this.fixture.userID2); //we may already have the event, but it won't hurt to check. subEvtCollector.waitForEvent(10000); @@ -390,7 +386,8 @@ public void postTestSubscribe() subEvtCollector.collectedEvents.clear(); // wait the resolution of the contact before continuing - synchronized (subEvtCollector){ + synchronized (subEvtCollector) + { subEvtCollector.waitForEvent(10000); this.operationSetPresence1 .removeSubscriptionListener(subEvtCollector); @@ -513,13 +510,12 @@ private PresenceStatus getSampleStatus1() PresenceStatus mostConnectedPresenceStatus = null; int mostConnectedPresenceStatusInt = Integer.MIN_VALUE; - Iterator supportedStatusSetIter = + Iterator supportedStatusSetIter = this.operationSetPresence1.getSupportedStatusSet(); while (supportedStatusSetIter.hasNext()) { - PresenceStatus supportedStatus - = (PresenceStatus)supportedStatusSetIter.next(); + PresenceStatus supportedStatus = supportedStatusSetIter.next(); if(supportedStatus.getStatus() > mostConnectedPresenceStatusInt) { @@ -546,13 +542,12 @@ private PresenceStatus getSampleStatus2() PresenceStatus secondMostConnectedPresenceStatus = null; int secondMostConnectedPresenceStatusInt = Integer.MIN_VALUE; - Iterator supportedStatusSetIter = + Iterator supportedStatusSetIter = this.operationSetPresence1.getSupportedStatusSet(); while (supportedStatusSetIter.hasNext()) { - PresenceStatus supportedStatus - = (PresenceStatus)supportedStatusSetIter.next(); + PresenceStatus supportedStatus = supportedStatusSetIter.next(); if(supportedStatus.getStatus() > mostConnectedPresenceStatusInt) { @@ -970,46 +965,4 @@ public void contactPresenceStatusChanged( } } } - - /** - * Used to wait till buddy is removed from our contact list. - * Used in the authorization process tests - */ - private class UnsubscribeWait implements SubscriptionListener - { - public void waitForUnsubscribre(long waitFor) - { - synchronized(this) - { - try{ - wait(waitFor); - } - catch (InterruptedException ex) - { - logger.debug( - "Interrupted while waiting for a subscription evt", ex); - } - } - } - - public void subscriptionRemoved(SubscriptionEvent evt) - { - synchronized(this) - { - logger.debug("Got subscriptionRemoved " + evt); - notifyAll(); - } - } - - public void subscriptionCreated(SubscriptionEvent evt) - {} - public void subscriptionFailed(SubscriptionEvent evt) - {} - public void subscriptionMoved(SubscriptionMovedEvent evt) - {} - public void subscriptionResolved(SubscriptionEvent evt) - {} - public void contactModified(ContactPropertyChangeEvent evt) - {} - } -} \ No newline at end of file +} diff --git a/test/net/java/sip/communicator/slick/protocol/yahoo/TestOperationSetPresence.java b/test/net/java/sip/communicator/slick/protocol/yahoo/TestOperationSetPresence.java index 14d3ecf45..20967d066 100644 --- a/test/net/java/sip/communicator/slick/protocol/yahoo/TestOperationSetPresence.java +++ b/test/net/java/sip/communicator/slick/protocol/yahoo/TestOperationSetPresence.java @@ -910,48 +910,6 @@ public void contactPresenceStatusChanged( } } - /** - * Used to wait till buddy is removed from our contact list. - * Used in the authorization process tests - */ - private class UnsubscribeWait implements SubscriptionListener - { - public void waitForUnsubscribre(long waitFor) - { - synchronized(this) - { - try{ - wait(waitFor); - } - catch (InterruptedException ex) - { - logger.debug( - "Interrupted while waiting for a subscription evt", ex); - } - } - } - - public void subscriptionRemoved(SubscriptionEvent evt) - { - synchronized(this) - { - logger.debug("Got subscriptionRemoved " + evt); - notifyAll(); - } - } - - public void subscriptionCreated(SubscriptionEvent evt) - {} - public void subscriptionFailed(SubscriptionEvent evt) - {} - public void subscriptionMoved(SubscriptionMovedEvent evt) - {} - public void subscriptionResolved(SubscriptionEvent evt) - {} - public void contactModified(ContactPropertyChangeEvent evt) - {} - } - /** * AuthorizationHandler which accepts all requests! */