KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > XIQProvider


1 import org.jivesoftware.smack.provider.IQProvider;
2 import org.jivesoftware.smack.packet.DefaultPacketExtension;
3 import org.jivesoftware.smack.packet.IQ;
4 import org.jivesoftware.smack.provider.ProviderManager;
5
6 /** Provider for arbitary IQ packets.*/
7 public final class XIQProvider implements IQProvider{
8     
9     /** Creates an instance of XIQProvider.*/
10     public XIQProvider(){
11         // nothing to do
12
}
13     
14     /** Programmatically installs an XIQProvider.
15     * @param elementName The element name, eg query.
16     * @param namespace The name space, eg jabber:iq:search.*/

17     public static void install(String JavaDoc elementName,String JavaDoc namespace){
18         ProviderManager.addIQProvider(elementName,namespace,new XIQProvider());
19     }
20     
21     /** Parse the IQ subpacket.
22     * @return An instance of XIQ.
23     * @exception Exception If theres a problem with the parsing.
24     * @see XIQ*/

25     public IQ parseIQ(org.xmlpull.v1.XmlPullParser parser) throws Exception JavaDoc{
26         XIQ result=new XIQ();
27         String JavaDoc tagname=parser.getName();
28         String JavaDoc namespace=parser.getNamespace();
29         if(namespace==null || namespace.equals("")){
30             return result;
31         }
32         DefaultPacketExtension extension=new DefaultPacketExtension(tagname,namespace);
33         // iterate thru tags and add to them to extension
34
int event=parser.getEventType();
35         String JavaDoc currentTag="";
36         String JavaDoc currentContent="";
37         
38         while (!(event==parser.END_TAG && parser.getName().equals(tagname))){
39             if(event==parser.START_TAG){
40                 currentTag=parser.getName();
41                 if(parser.isEmptyElementTag()){
42                     extension.setValue(currentTag,"");
43                     currentTag="";
44                 }
45             }
46             if(event==parser.TEXT && (!currentTag.equals(""))){
47                 currentContent=parser.getText();
48             }
49             if(event==parser.END_TAG && (!currentTag.equals(""))){
50                 extension.setValue(currentTag,currentContent);
51                 currentTag="";
52             }
53             event=parser.next();
54         }
55         result.addExtension(extension);
56         return result;
57     }
58 }
Popular Tags