package com.voxeo.moho.xmpp; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import org.w3c.dom.Element; import com.voxeo.moho.Framework; import com.voxeo.moho.common.util.XmlUtils; import com.voxeo.servlet.xmpp.IQRequest; public class RosterEventImpl extends XMPPIQEventImpl implements RosterEvent { private Map<String, RosterItem> _items = new HashMap<String, RosterEvent.RosterItem>(); public RosterEventImpl(Framework framework, IQRequest request) { super(framework, request); List<Element> childElements = XmlUtils.getChildElements(request.getElement(), ELEMENT_ITEM, false); for (Element elm : childElements) { String jid = elm.getAttribute("jid"); RosterItemImpl rosterItem = new RosterItemImpl(jid); _items.put(jid, rosterItem); if (XmlUtils.getAttributeValue(elm, "subscription") != null) { rosterItem.setSubscription(XmppSubscription.valueOf(elm.getAttribute("subscription").toUpperCase())); } for (Element group : XmlUtils.getChildElements(elm, "group", false)) { rosterItem.addGroupName(XmlUtils.getTextContent(group)); } if (XmlUtils.getAttributeValue(elm, "name") != null) { rosterItem.setName(XmlUtils.getAttributeValue(elm, "name")); } if (XmlUtils.getAttributeValue(elm, "ask") != null) { rosterItem.setAsk(Ask.valueOf(elm.getAttribute("ask").toUpperCase())); } } } @Override public Collection<RosterItem> getItems() { return _items.values(); } @Override public RosterItem getItem(String jid) { return _items.get(jid); } }