ProviderManager
时间:2019-08-29
本文章向大家介绍ProviderManager,主要包括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)
-
-
原文地址:https://www.cnblogs.com/endv/p/11427918.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SpringBoot实现微信小程序登录的完整例子
- String及StringTable(五):java8的新工具类StringJoiner
- spring security oauth2使用refresh_token报错UserDetailsService is required
- 你所不知道的React| 趋势解读、底层逻辑、学习路径、实战应用
- js中setTimeout的用法和JS计时器setTimeout与setInterval方法的区别和confirm方法
- TKinter Label 和 Button
- Java类如何防止被实例化
- PHP中的json_encode和json_decode
- Java重写equals和hashCode方法
- upload-labs第11~12关 00截断
- java 踩雷日记--new
- 用一个通俗易懂的例子彻底说清楚单例模式
- Manytasking Jmetal 代码反向解析 1_MATP 测试函数集
- PHP中的ereg()与eregi()
- Java 用反射实现实体类属性 not null 校验