| 
 | Smack | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.jivesoftware.smackx.provider.EmbeddedExtensionProvider
EmbeddedExtensionProvider
public abstract class EmbeddedExtensionProvider
This class simplifies parsing of embedded elements by using the 
 Template Method Pattern.  
 After extracting the current element attributes and content of any child elements, the template method 
 (createReturnExtension(String, String, Map, List) is called.  Subclasses
 then override this method to create the specific return type.
 
 
To use this class, you simply register your subclasses as extension providers in the smack.properties file. Then they will be automatically picked up and used to parse any child elements.
 For example, given the following message
 
 <message from='pubsub.shakespeare.lit' to='francisco@denmark.lit' id='foo>
    <event xmlns='http://jabber.org/protocol/pubsub#event>
       <items node='princely_musings'>
          <item id='asdjkwei3i34234n356'>
             <entry xmlns='http://www.w3.org/2005/Atom'>
                <title>Soliloquy</title>
                <link rel='alternative' type='text/html'/>
                <id>tag:denmark.lit,2003:entry-32397</id>
             </entry>
          </item>
       </items>
    </event>
 </message>
 
 I would have a classes
 ItemsProvider extends EmbeddedExtensionProvider
 ItemProvider extends EmbeddedExtensionProvider
 and
 AtomProvider extends PacketExtensionProvider
 
 These classes are then registered in the meta-inf/smack.providers file
 as follows.
 
   <extensionProvider>
      <elementName>items</elementName>
      <namespace>http://jabber.org/protocol/pubsub#event</namespace>
      <className>org.jivesoftware.smackx.provider.ItemsEventProvider</className>
   </extensionProvider>
   <extensionProvider>
       <elementName>item</elementName>
       <namespace>http://jabber.org/protocol/pubsub#event</namespace>
       <className>org.jivesoftware.smackx.provider.ItemProvider</className>
   </extensionProvider>
 
 
| Constructor Summary | |
|---|---|
| EmbeddedExtensionProvider()Deprecated. | |
| Method Summary | |
|---|---|
| protected abstract  PacketExtension | createReturnExtension(String currentElement,
                      String currentNamespace,
                      Map<String,String> attributeMap,
                      List<? extends PacketExtension> content)Deprecated. | 
|  PacketExtension | parseExtension(org.xmlpull.v1.XmlPullParser parser)Deprecated. Parse an extension sub-packet and create a PacketExtension instance. | 
| Methods inherited from class java.lang.Object | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Constructor Detail | 
|---|
public EmbeddedExtensionProvider()
| Method Detail | 
|---|
public final PacketExtension parseExtension(org.xmlpull.v1.XmlPullParser parser)
                                     throws Exception
PacketExtensionProvider
parseExtension in interface PacketExtensionProviderparser - an XML parser.
Exception - if an error occurs parsing the XML.
protected abstract PacketExtension createReturnExtension(String currentElement,
                                                         String currentNamespace,
                                                         Map<String,String> attributeMap,
                                                         List<? extends PacketExtension> content)
| 
 | Smack | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||