⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 propertyeventdispatcher.java

📁 基于Jabber协议的即时消息服务器
💻 JAVA
字号:
/** * $RCSfile$ * $Revision: 1705 $ * $Date: 2005-07-26 10:10:33 -0700 (Tue, 26 Jul 2005) $ * * Copyright (C) 2004-2005 Jive Software. All rights reserved. * * This software is published under the terms of the GNU Public License (GPL), * a copy of which is included in this distribution. */package org.jivesoftware.util;import org.jivesoftware.util.Log;import java.util.List;import java.util.Map;import java.util.concurrent.CopyOnWriteArrayList;/** * Dispatches property events. Each event has a {@link EventType type} * and optional parameters, as follows:<p> * * <table border="1"> * <tr><th>Event Type</th><th>Extra Params</th></tr> * <tr><td>{@link EventType#property_set property_set}</td><td>A param named <tt>value</tt> that *      has the value of the property set.</td></tr> * <tr><td>{@link EventType#property_deleted property_deleted}</td><td><i>None</i></td></tr> * <tr><td>{@link EventType#xml_property_set xml_property_set}</td><td>A param named <tt>value</tt> that *      has the value of the property set.</td></tr> * <tr><td>{@link EventType#xml_property_deleted xml_property_deleted}</td><td><i>None</i></td></tr> * </table> * * @author Matt Tucker */public class PropertyEventDispatcher {    private static List<PropertyEventListener> listeners =            new CopyOnWriteArrayList<PropertyEventListener>();    private PropertyEventDispatcher() {        // Not instantiable.    }    /**     * Registers a listener to receive events.     *     * @param listener the listener.     */    public static void addListener(PropertyEventListener listener) {        if (listener == null) {            throw new NullPointerException();        }        listeners.add(listener);    }    /**     * Unregisters a listener to receive events.     *     * @param listener the listener.     */    public static void removeListener(PropertyEventListener listener) {        listeners.remove(listener);    }    /**     * Dispatches an event to all listeners.     *     * @param property the property.     * @param eventType the event type.     * @param params event parameters.     */    public static void dispatchEvent(String property, EventType eventType, Map params) {        for (PropertyEventListener listener : listeners) {            try {                switch (eventType) {                    case property_set: {                        listener.propertySet(property, params);                        break;                    }                    case property_deleted: {                        listener.propertyDeleted(property, params);                        break;                    }                    case xml_property_set: {                        listener.xmlPropertySet(property, params);                        break;                    }                    case xml_property_deleted: {                        listener.xmlPropertyDeleted(property, params);                        break;                    }                    default:                        break;                }            }            catch (Exception e) {                Log.error(e);            }        }    }    /**     * Represents valid event types.     */    public enum EventType {        /**         * A property was set.         */        property_set,        /**         * A property was deleted.         */        property_deleted,        /**         * An XML property was set.         */        xml_property_set,        /**         * An XML property was deleted.         */        xml_property_deleted;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -