openfire(6)属性事件PropertyEventListener和PropertyEventDispatcher

在openfire中很多地方用到了类似如下的代码:

PropertyEventListener propListener = new PropertyEventListener() {

            public void propertySet(String property, Map params) {

               

            }

 

            public void propertyDeleted(String property, Map params) {

              

            }

 

            public void xmlPropertySet(String property, Map params) {

               

            }

 

            public void xmlPropertyDeleted(String property, Map params) {

                

            }

        };

        PropertyEventDispatcher.addListener(propListener);

 

其工作原理是怎么回事的呢?

 

先来看看PropertyEventDispatcher这个类,其类中有一个集合

  private static Set<PropertyEventListener> listeners =

            new CopyOnWriteArraySet<PropertyEventListener>();

用来存储PropertyEventListener,并提供增加和删除监听器的方法。

其事件类型有4种:

   

        property_set,

 

       

        property_deleted,

 

        

        xml_property_set,

 

      

        xml_property_deleted;

 

对于Property属性,很多操作是用JiveGlobals的相关方法,在另外的以篇文章中介绍了JiveGlobals有2种类型的属性管理,一种是基于XML本地文件的XMLProperties,一种是基于数据库ofproperty的数据库属性管理。

 

当调用JiveGlobals的put方法的时候,如:

 public String put(String key, String value){

--前面的省略....

 PropertyEventDispatcher.dispatchEvent(key, PropertyEventDispatcher.EventType.property_set, params); --此为触发对应的事件监听器。

}

其他的方法也是这个样。

 

 

此篇文章就到此,稍后会有更多关于openfire的个人解读。

联系方式(qq):851392159

出处:http://buerkai.iteye.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值