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!
*/