1 20 21 package org.jivesoftware.smackx.provider; 22 23 import org.jivesoftware.smack.packet.IQ; 24 import org.jivesoftware.smack.provider.IQProvider; 25 import org.jivesoftware.smack.util.PacketParserUtils; 26 import org.jivesoftware.smackx.packet.DiscoverInfo; 27 import org.xmlpull.v1.XmlPullParser; 28 29 34 public class DiscoverInfoProvider implements IQProvider { 35 36 public IQ parseIQ(XmlPullParser parser) throws Exception { 37 DiscoverInfo discoverInfo = new DiscoverInfo(); 38 boolean done = false; 39 DiscoverInfo.Feature feature = null; 40 DiscoverInfo.Identity identity = null; 41 String category = ""; 42 String name = ""; 43 String type = ""; 44 String variable = ""; 45 discoverInfo.setNode(parser.getAttributeValue("", "node")); 46 while (!done) { 47 int eventType = parser.next(); 48 if (eventType == XmlPullParser.START_TAG) { 49 if (parser.getName().equals("identity")) { 50 category = parser.getAttributeValue("", "category"); 52 name = parser.getAttributeValue("", "name"); 53 type = parser.getAttributeValue("", "type"); 54 } 55 else if (parser.getName().equals("feature")) { 56 variable = parser.getAttributeValue("", "var"); 58 } 59 else { 61 discoverInfo.addExtension(PacketParserUtils.parsePacketExtension(parser 62 .getName(), parser.getNamespace(), parser)); 63 } 64 } else if (eventType == XmlPullParser.END_TAG) { 65 if (parser.getName().equals("identity")) { 66 identity = new DiscoverInfo.Identity(category, name); 68 identity.setType(type); 69 discoverInfo.addIdentity(identity); 70 } 71 if (parser.getName().equals("feature")) { 72 discoverInfo.addFeature(variable); 74 } 75 if (parser.getName().equals("query")) { 76 done = true; 77 } 78 } 79 } 80 81 return discoverInfo; 82 } 83 } | Popular Tags |