1 20 21 package org.jivesoftware.smackx.provider; 22 23 import java.util.ArrayList ; 24 25 import org.jivesoftware.smack.packet.PacketExtension; 26 import org.jivesoftware.smack.provider.PacketExtensionProvider; 27 import org.jivesoftware.smackx.*; 28 import org.jivesoftware.smackx.packet.*; 29 import org.xmlpull.v1.XmlPullParser; 30 31 37 public class RosterExchangeProvider implements PacketExtensionProvider { 38 39 43 public RosterExchangeProvider() { 44 } 45 46 53 public PacketExtension parseExtension(XmlPullParser parser) throws Exception { 54 55 RosterExchange rosterExchange = new RosterExchange(); 56 boolean done = false; 57 RemoteRosterEntry remoteRosterEntry = null; 58 String jid = ""; 59 String name = ""; 60 ArrayList groupsName = new ArrayList (); 61 while (!done) { 62 int eventType = parser.next(); 63 if (eventType == XmlPullParser.START_TAG) { 64 if (parser.getName().equals("item")) { 65 groupsName = new ArrayList (); 67 jid = parser.getAttributeValue("", "jid"); 69 name = parser.getAttributeValue("", "name"); 70 } 71 if (parser.getName().equals("group")) { 72 groupsName.add(parser.nextText()); 73 } 74 } else if (eventType == XmlPullParser.END_TAG) { 75 if (parser.getName().equals("item")) { 76 remoteRosterEntry = new RemoteRosterEntry(jid, name, (String []) groupsName.toArray(new String [groupsName.size()])); 78 rosterExchange.addRosterEntry(remoteRosterEntry); 79 } 80 if (parser.getName().equals("x")) { 81 done = true; 82 } 83 } 84 } 85 86 return rosterExchange; 87 88 } 89 90 } 91 | Popular Tags |