-
- org.jivesoftware.smack.provider.ProviderManager
public final class ProviderManager extends Object
管理提供程序以解析XMPP数据包的自定义XML子文档。存在两种类型的提供者:- IQProvider - 将IQ请求解析为Java对象。
- PacketExtension - 将附加到数据包的XML子文档解析为PacketExtension实例。
默认情况下,Smack只知道如何使用几个名称空间中的子数据包处理IQ数据包,例如:
-
- jabber:iq:auth
- jabber:iq:roster
- jabber:iq:register
1 <?xml version="1.0"?> 2 <smackProviders> 3 <iqProvider> 4 <elementName>query</elementName> 5 <namespace>jabber:iq:time</namespace> 6 <className>org.jivesoftware.smack.packet.Time</className> 7 </iqProvider> 8 </smackProviders>
<iq type='result' to='joe@example.com' from='mary@example.com' id='time_1'> <query xmlns='jabber:iq:time'> <utc>20020910T17:58:35</utc> <tz>MDT</tz> <display>Tue Sep 10 12:58:35 2002</display> </query> </iq>
还存在用于节扩展的可插入系统,用于消息和存在分组的自定义命名空间中的子元素。每个扩展提供程序都在smack.providers文件中注册了一个名称空间,如下例所示:
<?xml version="1.0"?> <smackProviders> <extensionProvider> <elementName>x</elementName> <namespace>jabber:iq:event</namespace> <className>org.jivesoftware.smack.packet.MessageEvent</className> </extensionProvider> </smackProviders>
-
-
构造函数摘要
构造函数 构造函数和描述 ProviderManager()
-
方法摘要
所有方法静态方法具体方法 修饰符和类型 方法和描述 static void
添加具有指定元素名称和名称空间的扩展提供程序。static void
添加具有指定元素名称和名称空间的IQ提供程序(必须是IQProvider的实例或IQ的Class对象)。static void
static void
返回注册到指定XML元素名称和名称空间的节扩展提供程序。getExtensionProviders()
返回所有PacketExtensionProvider实例的不可修改的集合。返回注册到指定XML元素名称和名称空间的IQ提供程序。getIQProviders()
返回所有IQProvider实例的不可修改的集合。删除具有指定元素名称和命名空间的扩展提供程序。删除具有指定元素名称和命名空间的IQ提供程序。static void
-
-
-
方法细节
-
addLoader
-
getIQProvider
返回注册到指定XML元素名称和名称空间的IQ提供程序。例如,如果提供程序已注册到元素名称“query”和命名空间“jabber:iq:time”,则以下节将触发提供程序:<iq type='result' to='joe@example.com' from='mary@example.com' id='time_1'> <query xmlns='jabber:iq:time'> <utc>20020910T17:58:35</utc> <tz>MDT</tz> <display>Tue Sep 10 12:58:35 2002</display> </query> </iq>
注意:此方法通常仅由内部Smack类调用。
- 参数:
elementName
namespace
- 返回:
- IQ提供者。
-
getIQProviders
返回所有IQProvider实例的不可修改的集合。集合中的每个对象都可以是IQProvider实例,也可以是实现IQProvider接口的Class对象。- 返回:
- 所有IQProvider实例。
-
addIQProvider
添加具有指定元素名称和名称空间的IQ提供程序(必须是IQProvider的实例或IQ的Class对象)。提供程序将覆盖通过类路径加载的任何提供程序。- 参数:
elementName
namespace
provider
-
removeIQProvider
- 参数:
elementName
namespace
- 返回:
- 删除IQ提供程序的密钥
-
getExtensionProvider
返回注册到指定XML元素名称和名称空间的节扩展提供程序。例如,如果提供程序已注册到元素名称“x”和命名空间“jabber:x:event”,则以下节将触发提供程序:<message to='romeo@montague.net' id='message_1'> <body>Art thou not Romeo, and a Montague?</body> <x xmlns='jabber:x:event'> <composing/> </x> </message>
注意:此方法通常仅由内部Smack类调用。
- 参数:
elementName
namespace
- 返回:
- 扩展提供商。
-
addExtensionProvider
添加具有指定元素名称和名称空间的扩展提供程序。提供程序将覆盖通过类路径加载的任何提供程序。提供者必须是PacketExtensionProvider实例或Javabean的Class对象。- 参数:
elementName
namespace
provider
-
removeExtensionProvider
- 参数:
elementName
namespace
- 返回:
- 已删除的节扩展提供程序的密钥
-
getExtensionProviders
返回所有PacketExtensionProvider实例的不可修改的集合。集合中的每个对象都可以是PacketExtensionProvider实例,也可以是实现PacketExtensionProvider接口的Class对象。- 返回:
- 所有PacketExtensionProvider实例。
-
getStreamFeatureProvider
-
addStreamFeatureProvider
-
removeStreamFeatureProvider
-
-
来源:博客园
作者:Endv
链接:https://www.cnblogs.com/endv/p/11427918.html