package asmack.org.jivesoftware.smackx.packet; import asmack.org.jivesoftware.smack.packet.IQ; import asmack.org.jivesoftware.smack.util.AttributeHelper; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; public class DiscoverItems extends IQ { public AttributeHelper attrs = new AttributeHelper(); private final List<Item> items = new CopyOnWriteArrayList(); private String node; public static class Item { public static final String REMOVE_ACTION = "remove"; public static final String UPDATE_ACTION = "update"; private String action; public AttributeHelper attrs = new AttributeHelper(); private String entityID; private String name; private String node; public Item(String str) { this.entityID = str; this.attrs.addAttribute("jid", str); } public String getAction() { return this.action; } public String getEntityID() { return this.entityID; } public String getName() { return this.name; } public String getNode() { return this.node; } public void setAction(String str) { this.action = str; this.attrs.addAttribute("action", str); } public void setName(String str) { this.name = str; this.attrs.addAttribute("name", str); } public void setNode(String str) { this.node = str; this.attrs.addAttribute("node", str); } public String toXML() { return "<item" + this.attrs.toAttributeXml() + "/>"; } } public void addItem(Item item) { synchronized (this.items) { this.items.add(item); } } @Override // asmack.org.jivesoftware.smack.packet.IQ public String getChildElementXML() { StringBuilder sb = new StringBuilder(); sb.append("<query xmlns=\"http://jabber.org/protocol/disco#items\""); if (getNode() != null) { sb.append(" node=\""); sb.append(getNode()); sb.append("\""); } sb.append(this.attrs.toAttributeXml()); sb.append(">"); synchronized (this.items) { for (Item item : this.items) { sb.append(item.toXML()); } } sb.append("</query>"); return sb.toString(); } public Iterator<Item> getItems() { Iterator<Item> it2; synchronized (this.items) { it2 = Collections.unmodifiableList(this.items).iterator(); } return it2; } public String getNode() { return this.node; } public void setNode(String str) { this.node = str; } }