package org.xmpp.jnodes.smack; import org.jivesoftware.smack.packet.IQ; import java.util.Collection; import java.util.concurrent.ConcurrentHashMap; public class JingleTrackerIQ extends IQ { public static final String NAME = "services"; public static final String NAMESPACE = "http://jabber.org/protocol/jinglenodes"; private final ConcurrentHashMap<String, TrackerEntry> entries = new ConcurrentHashMap<String, TrackerEntry>(); public JingleTrackerIQ() { this.setType(Type.GET); this.setPacketID(IQ.nextID()); } public boolean isRequest() { return Type.GET.equals(this.getType()); } public void addEntry(final TrackerEntry entry) { entries.put(entry.getJid(), entry); } public void removeEntry(final TrackerEntry entry) { entries.remove(entry.getJid()); } public String getChildElementXML() { final StringBuilder str = new StringBuilder(); str.append("<").append(NAME).append(" xmlns='").append(NAMESPACE).append("'>"); for (final TrackerEntry entry : entries.values()) { str.append("<").append(entry.getType().toString()); str.append(" policy='").append(entry.getPolicy().toString()).append("'"); str.append(" address='").append(entry.getJid()).append("'"); str.append(" protocol='").append(entry.getProtocol()).append("'"); if (entry.isVerified()) { str.append(" verified='").append(entry.isVerified()).append("'"); } str.append("/>"); } str.append("</").append(NAME).append(">"); return str.toString(); } public Collection<TrackerEntry> getEntries() { return entries.values(); } }