Search in sources :

Example 11 with XMPPID

use of org.eclipse.ecf.provider.xmpp.identity.XMPPID in project ecf by eclipse.

the class XMPPContainerPresenceHelper method updatePresenceForMatchingEntry.

private AdditionalClientRosterEntry updatePresenceForMatchingEntry(org.eclipse.ecf.presence.roster.RosterEntry entry, XMPPID fromID, IPresence newPresence) {
    final IUser user = entry.getUser();
    XMPPID oldID = (XMPPID) user.getID();
    // the resource, or create a new client
    if (oldID.equals(fromID)) {
        if (newPresence.getType() == IPresence.Type.UNAVAILABLE) {
            return removeEntryFromRoster(oldID, entry, newPresence, user);
        } else {
            // set the new presence state
            entry.setPresence(newPresence);
            // and notify with roster update
            rosterManager.notifyRosterUpdate(entry);
        }
    } else if (oldID.getUsernameAtHost().equals(fromID.getUsernameAtHost())) {
        if (oldID.getResourceName() == null) {
            oldID.setResourceName(fromID.getResourceName());
            // set the new presence state
            entry.setPresence(newPresence);
            // and notify with roster update
            rosterManager.notifyRosterUpdate(entry);
        } else if (fromID.getResourceName() != null && !newPresence.getType().equals(IPresence.Type.UNAVAILABLE)) {
            return new AdditionalClientRosterEntry(entry.getParent(), new User(fromID, user.getName()), newPresence);
        }
    }
    return null;
}
Also used : User(org.eclipse.ecf.core.user.User) IUser(org.eclipse.ecf.core.user.IUser) IUser(org.eclipse.ecf.core.user.IUser) XMPPID(org.eclipse.ecf.provider.xmpp.identity.XMPPID)

Example 12 with XMPPID

use of org.eclipse.ecf.provider.xmpp.identity.XMPPID in project ecf by eclipse.

the class XMPPContainerPresenceHelper method handlePresenceEvent.

protected void handlePresenceEvent(PresenceEvent evt) {
    final Presence xmppPresence = evt.getPresence();
    final String from = xmppPresence.getFrom();
    final IPresence newPresence = createIPresence(xmppPresence);
    final XMPPID fromID = createIDFromName(from);
    if (newPresence.getType().equals(IPresence.Type.SUBSCRIBE) || newPresence.getType().equals(IPresence.Type.UNSUBSCRIBE) || newPresence.getType().equals(IPresence.Type.SUBSCRIBED) || newPresence.getType().equals(IPresence.Type.UNSUBSCRIBED)) {
        rosterManager.notifySubscriptionListener(fromID, newPresence);
    } else {
        updatePresence(fromID, newPresence);
        firePresenceListeners(fromID, newPresence);
    }
}
Also used : IPresence(org.eclipse.ecf.presence.IPresence) IPresence(org.eclipse.ecf.presence.IPresence) Presence(org.jivesoftware.smack.packet.Presence) XMPPID(org.eclipse.ecf.provider.xmpp.identity.XMPPID)

Example 13 with XMPPID

use of org.eclipse.ecf.provider.xmpp.identity.XMPPID in project ecf by eclipse.

the class XMPPContainerPresenceHelper method countClientsInRoster.

private int countClientsInRoster(XMPPID oldID) {
    Collection rosterItems = roster.getItems();
    int count = 0;
    synchronized (rosterItems) {
        for (final Iterator i = rosterItems.iterator(); i.hasNext(); ) {
            final IRosterItem item = (IRosterItem) i.next();
            if (item instanceof org.eclipse.ecf.presence.roster.RosterGroup) {
                final org.eclipse.ecf.presence.roster.RosterGroup group = (org.eclipse.ecf.presence.roster.RosterGroup) item;
                count += countClientsInRosterGroup(group, oldID);
            } else if (item instanceof org.eclipse.ecf.presence.roster.RosterEntry) {
                org.eclipse.ecf.presence.roster.RosterEntry entry = (org.eclipse.ecf.presence.roster.RosterEntry) item;
                XMPPID entryID = (XMPPID) entry.getUser().getID();
                if (entryID.getUsernameAtHost().equals(oldID.getUsernameAtHost())) {
                    count++;
                }
            }
        }
    }
    return count;
}
Also used : RosterGroup(org.eclipse.ecf.presence.roster.RosterGroup) IRosterItem(org.eclipse.ecf.presence.roster.IRosterItem) RosterGroup(org.eclipse.ecf.presence.roster.RosterGroup) IRosterGroup(org.eclipse.ecf.presence.roster.IRosterGroup) Iterator(java.util.Iterator) Collection(java.util.Collection) IRosterEntry(org.eclipse.ecf.presence.roster.IRosterEntry) RosterEntry(org.jivesoftware.smack.RosterEntry) XMPPID(org.eclipse.ecf.provider.xmpp.identity.XMPPID)

Aggregations

XMPPID (org.eclipse.ecf.provider.xmpp.identity.XMPPID)13 Iterator (java.util.Iterator)4 IUser (org.eclipse.ecf.core.user.IUser)3 User (org.eclipse.ecf.core.user.User)3 IRosterEntry (org.eclipse.ecf.presence.roster.IRosterEntry)3 IRosterItem (org.eclipse.ecf.presence.roster.IRosterItem)3 Collection (java.util.Collection)2 RosterEntry (org.jivesoftware.smack.RosterEntry)2 XMPPException (org.jivesoftware.smack.XMPPException)2 IOException (java.io.IOException)1 URISyntaxException (java.net.URISyntaxException)1 IStatus (org.eclipse.core.runtime.IStatus)1 Status (org.eclipse.core.runtime.Status)1 ContainerConnectException (org.eclipse.ecf.core.ContainerConnectException)1 Namespace (org.eclipse.ecf.core.identity.Namespace)1 CallbackHandler (org.eclipse.ecf.core.security.CallbackHandler)1 ECFException (org.eclipse.ecf.core.util.ECFException)1 IPresence (org.eclipse.ecf.presence.IPresence)1 IPresenceContainerAdapter (org.eclipse.ecf.presence.IPresenceContainerAdapter)1 IRosterGroup (org.eclipse.ecf.presence.roster.IRosterGroup)1