public abstract class EmbeddedExtensionProvider extends java.lang.Object implements PacketExtensionProvider
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 extendsEmbeddedExtensionProvider
ItemProvider extendsEmbeddedExtensionProvider
and AtomProvider extendsPacketExtensionProvider
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 and Description |
---|
EmbeddedExtensionProvider() |
Modifier and Type | Method and Description |
---|---|
protected abstract PacketExtension |
createReturnExtension(java.lang.String currentElement,
java.lang.String currentNamespace,
java.util.Map<java.lang.String,java.lang.String> attributeMap,
java.util.List<? extends PacketExtension> content) |
PacketExtension |
parseExtension(org.xmlpull.v1.XmlPullParser parser)
Parse an extension sub-packet and create a PacketExtension instance.
|
public final PacketExtension parseExtension(org.xmlpull.v1.XmlPullParser parser) throws java.lang.Exception
PacketExtensionProvider
parseExtension
in interface PacketExtensionProvider
parser
- an XML parser.java.lang.Exception
- if an error occurs parsing the XML.protected abstract PacketExtension createReturnExtension(java.lang.String currentElement, java.lang.String currentNamespace, java.util.Map<java.lang.String,java.lang.String> attributeMap, java.util.List<? extends PacketExtension> content)