ProviderManager
类ProviderManager
- java.lang.Object继承
-
- 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
addExtensionProvider(String elementName, String namespace, Object provider)
添加具有指定元素名称和名称空间的扩展提供程序。static void
addIQProvider(String elementName, String namespace, Object provider)
添加具有指定元素名称和名称空间的IQ提供程序(必须是IQProvider的实例或IQ的Class对象)。static void
addLoader(ProviderLoader loader)
static void
addStreamFeatureProvider(String elementName, String namespace,ExtensionElementProvider<ExtensionElement> provider)
static ExtensionElementProvider<ExtensionElement>
getExtensionProvider(String elementName, String namespace)
返回注册到指定XML元素名称和名称空间的节扩展提供程序。static List<ExtensionElementProvider<ExtensionElement>>
getExtensionProviders()
返回所有PacketExtensionProvider实例的不可修改的集合。static IQProvider<IQ>
getIQProvider(String elementName, String namespace)
返回注册到指定XML元素名称和名称空间的IQ提供程序。static List<IQProvider<IQ>>
getIQProviders()
返回所有IQProvider实例的不可修改的集合。static ExtensionElementProvider<ExtensionElement>
getStreamFeatureProvider(String elementName, String namespace)
static String
removeExtensionProvider(String elementName, String namespace)
删除具有指定元素名称和命名空间的扩展提供程序。static String
removeIQProvider(String elementName, String namespace)
删除具有指定元素名称和命名空间的IQ提供程序。static void
removeStreamFeatureProvider(String elementName, String namespace)
-
-
-
构造函数详细信息
-
ProviderManager的
public ProviderManager()
-
-
方法细节
-
addLoader
public static void addLoader(ProviderLoader loader)
-
getIQProvider
public static IQProvider < IQ > getIQProvider(String elementName, String namespace)
返回注册到指定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
- XML元素名称。namespace
- XML命名空间。- 返回:
- IQ提供者。
-
getIQProviders
public static List < IQProvider < IQ >> getIQProviders()
返回所有IQProvider实例的不可修改的集合。集合中的每个对象都可以是IQProvider实例,也可以是实现IQProvider接口的Class对象。- 返回:
- 所有IQProvider实例。
-
addIQProvider
public static void addIQProvider(String elementName, String namespace, Object provider)
添加具有指定元素名称和名称空间的IQ提供程序(必须是IQProvider的实例或IQ的Class对象)。提供程序将覆盖通过类路径加载的任何提供程序。- 参数:
elementName
- XML元素名称。namespace
- XML命名空间。provider
- IQ提供商。
-
removeIQProvider
public static String removeIQProvider(String elementName, String namespace)
- 参数:
elementName
- XML元素名称。namespace
- XML命名空间。- 返回:
- 删除IQ提供程序的密钥
-
getExtensionProvider
public static ExtensionElementProvider < ExtensionElement > getExtensionProvider(String elementName, String namespace)
返回注册到指定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
public static void addExtensionProvider(String elementName, String namespace, Object provider)
添加具有指定元素名称和名称空间的扩展提供程序。提供程序将覆盖通过类路径加载的任何提供程序。提供者必须是PacketExtensionProvider实例或Javabean的Class对象。- 参数:
elementName
- XML元素名称。namespace
- XML命名空间。provider
- 扩展提供商。
-
removeExtensionProvider
public static String removeExtensionProvider(String elementName, String namespace)
- 参数:
elementName
- XML元素名称。namespace
- XML命名空间。- 返回:
- 已删除的节扩展提供程序的密钥
-
getExtensionProviders
public static List < ExtensionElementProvider < ExtensionElement >> getExtensionProviders()
返回所有PacketExtensionProvider实例的不可修改的集合。集合中的每个对象都可以是PacketExtensionProvider实例,也可以是实现PacketExtensionProvider接口的Class对象。- 返回:
- 所有PacketExtensionProvider实例。
-
getStreamFeatureProvider
public static ExtensionElementProvider < ExtensionElement > getStreamFeatureProvider(String elementName, String namespace)
-
addStreamFeatureProvider
public static void addStreamFeatureProvider(String elementName, String namespace, ExtensionElementProvider < ExtensionElement > provider)
-
removeStreamFeatureProvider
public static void removeStreamFeatureProvider(String elementName, String namespace)
-
-