package org.chartsy.chatsy.chatimpl.plugin.manager; import org.jivesoftware.smack.packet.PacketExtension; import org.jivesoftware.smack.provider.PacketExtensionProvider; import org.xmlpull.v1.XmlPullParser; import java.util.ArrayList; import java.util.List; public class Features implements PacketExtension { private List<String> availableFeatures = new ArrayList<String>(); public List<String> getAvailableFeatures() { return availableFeatures; } public void addFeature(String feature) { availableFeatures.add(feature); } public static final String ELEMENT_NAME = "event"; public static final String NAMESPACE = "http://jabber.org/protocol/disco#info"; public String getElementName() { return ELEMENT_NAME; } public String getNamespace() { return NAMESPACE; } public String toXML() { StringBuilder buf = new StringBuilder(); buf.append("<event xmlns=\"" + NAMESPACE + "\"").append("</event>"); return buf.toString(); } public static class Provider implements PacketExtensionProvider { public PacketExtension parseExtension(XmlPullParser parser) throws Exception { Features features = new Features(); boolean done = false; while (!done) { int eventType = parser.next(); if (eventType == XmlPullParser.START_TAG && "event".equals(parser.getName())) { parser.nextText(); } if (eventType == XmlPullParser.START_TAG && "feature".equals(parser.getName())) { String feature = parser.getAttributeValue("", "var"); features.addFeature(feature); } else if (eventType == XmlPullParser.END_TAG) { if ("event".equals(parser.getName())) done = true; } } return features; } } }