package com.voxeo.moho.presence.xmpp.event; import java.util.List; import org.apache.log4j.Logger; import org.w3c.dom.Element; import com.voxeo.moho.common.event.DispatchableEventSource; import com.voxeo.moho.presence.xmpp.XMPPPresenceService; import com.voxeo.moho.xmpp.RosterEvent.RosterItem; import com.voxeo.moho.xmpp.RosterPush; import com.voxeo.servlet.xmpp.JID; import com.voxeo.servlet.xmpp.XmppSession; public class RosterPushImpl extends DispatchableEventSource implements RosterPush { private static final Logger LOG = Logger.getLogger(RosterPushImpl.class); private final XMPPPresenceService _presenceService; private final JID _from; private final RosterItem _item; public RosterPushImpl(XMPPPresenceService presenceService, JID from, RosterItem item) { _presenceService = presenceService; _from = from; _item = item; } public JID getFrom() { return _from; } public RosterItem getItem() { return _item; } @Override public void send() { try { Element element = _presenceService.getRosterService().createRosterItemElement(_item); List<XmppSession> sessions = _presenceService.getSessionUtil().getSessions(_from); for (XmppSession session : sessions) { if (_presenceService.isResourceInterested(_from)) { session.createIQ(_from.toString(), "set", element).send(); } } } catch (Exception e) { LOG.error("Error do roster push", e); } } }