Package org.jivesoftware.smack.provider
Class IqProvider<I extends IQ>
- java.lang.Object
-
- org.jivesoftware.smack.provider.AbstractProvider<I>
-
- org.jivesoftware.smack.provider.IqProvider<I>
-
- Type Parameters:
I
- theIQ
that is parsed by implementations.
- Direct Known Subclasses:
AbstractHttpOverXmppProvider
,AdHocCommandDataProvider
,AgentChatHistory.InternalProvider
,AgentInfo.Provider
,AgentStatusRequest.Provider
,AgentWorkgroups.Provider
,BindIQProvider
,BlockContactsIQProvider
,BlockListIQProvider
,BoBIQProvider
,BytestreamsProvider
,ChatMetadata.Provider
,ChatNotes.Provider
,ChatSettings.InternalProvider
,ClearCacheProvider
,ClearCacheResponseProvider
,CloseIQProvider
,DataPacketProvider.IQProvider
,DiscoverInfoProvider
,DiscoverItemsProvider
,DnsIqProvider
,GenericSettings.InternalProvider
,IntrospectionProvider.IQIntrospectionProvider
,IoTClaimedProvider
,IoTDataReadOutAcceptedProvider
,IoTDataRequestProvider
,IoTDisownedProvider
,IoTDisownProvider
,IoTIsFriendProvider
,IoTIsFriendResponseProvider
,IoTRegisterProvider
,IoTRemovedProvider
,IoTRemoveProvider
,IoTSetRequestProvider
,IoTSetResponseProvider
,IoTUnregisterProvider
,JidPrepIqProvider
,JingleProvider
,JingleProvider
,LastActivity.Provider
,LegacyIQProvider
,Macros.InternalProvider
,MamFinIQProvider
,MamPrefsIQProvider
,MamQueryIQProvider
,MonitorPacket.InternalProvider
,MUCAdminProvider
,MUCLightAffiliationsIQProvider
,MUCLightBlockingIQProvider
,MUCLightConfigurationIQProvider
,MUCLightInfoIQProvider
,MUCOwnerProvider
,OccupantsInfo.Provider
,OfferConfirmation.Provider
,OfferRequestProvider
,OfferRevokeProvider
,OfflineMessageRequest.Provider
,OfflineSettings.InternalProvider
,OpenIQProvider
,PingProvider
,PrivacyProvider
,PrivateDataManager.PrivateDataIQProvider
,PubSubProvider
,RegistrationProvider
,RosterPacketProvider
,RTPBridge.Provider
,SearchSettings.InternalProvider
,SharedGroupsInfo.Provider
,SlotProvider
,SoundSettings.InternalProvider
,StreamInitiationProvider
,STUN.Provider
,TimeProvider
,TranscriptProvider
,TranscriptSearch.Provider
,TranscriptsProvider
,UnblockContactsIQProvider
,UserSearch.Provider
,VCardProvider
,VersionProvider
,WorkgroupForm.InternalProvider
,WorkgroupProperties.InternalProvider
public abstract class IqProvider<I extends IQ> extends AbstractProvider<I>
An abstract class for parsing customIQ
packets. Each IqProvider must be registered with theProviderManager
for it to be used. Every implementation of this abstract class must have a public, no-argument constructor.Custom IQ Provider Example
Let us assume you want to write a provider for a new, unsupported IQ in Smack.
The custom IQ provider may look like the follows<iq type='set' from='juliet@capulet.example/balcony' to='romeo@montage.example'> <myiq xmlns='example:iq:foo' token='secret'> <user age='42'>John Doe</user> <location>New York</location> </myiq> </iq>
public class MyIQProvider extends IQProvider<MyIQ> { {@literal @}Override public MyIQ parse(XmlPullParser parser, int initialDepth) throws XmlPullParserException, IOException { // Define the data we are trying to collect with sane defaults int age = -1; String user = null; String location = null; // Start parsing loop outerloop: while(true) { XmlPullParser.Event eventType = parser.next(); switch(eventType) { case START_ELEMENT: String elementName = parser.getName(); switch (elementName) { case "user": age = ParserUtils.getIntegerAttribute(parser, "age"); user = parser.nextText(); break; case "location" location = parser.nextText(); break; } break; case END_ELEMENT: // Abort condition: if the are on a end tag (closing element) of the same depth if (parser.getDepth() == initialDepth) { break outerloop; } break; default: // Catch all for incomplete switch (MissingCasesInEnumSwitch) statement. break; } } // Construct the IQ instance at the end of parsing, when all data has been collected return new MyIQ(user, age, location); } }
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.jivesoftware.smack.provider.AbstractProvider
AbstractProvider.NumberFormatParseException, AbstractProvider.TextParseException, AbstractProvider.WrappableParser<E>
-
-
Constructor Summary
Constructors Constructor Description IqProvider()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract I
parse(XmlPullParser parser, int initialDepth, IqData iqData, XmlEnvironment xmlEnvironment)
I
parse(XmlPullParser parser, IqData iqCommon)
I
parse(XmlPullParser parser, IqData iqData, XmlEnvironment outerXmlEnvironment)
-
Methods inherited from class org.jivesoftware.smack.provider.AbstractProvider
getElementClass, wrapExceptions
-
-
-
-
Constructor Detail
-
IqProvider
public IqProvider()
-
-
Method Detail
-
parse
public final I parse(XmlPullParser parser, IqData iqCommon) throws XmlPullParserException, IOException, SmackParsingException
-
parse
public final I parse(XmlPullParser parser, IqData iqData, XmlEnvironment outerXmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException
-
parse
public abstract I parse(XmlPullParser parser, int initialDepth, IqData iqData, XmlEnvironment xmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException, ParseException
-
-