BaseNotificationBroadcaster.java 文件源码

java
阅读 24 收藏 0 点赞 0 评论 0

项目:lazycat 作者:
/**
 * Add a notification event listener to this MBean.
 *
 * @param listener
 *            Listener that will receive event notifications
 * @param filter
 *            Filter object used to filter event notifications actually
 *            delivered, or <code>null</code> for no filtering
 * @param handback
 *            Handback object to be sent along with event notifications
 *
 * @exception IllegalArgumentException
 *                if the listener parameter is null
 */
@Override
public void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
        throws IllegalArgumentException {

    synchronized (entries) {

        // Optimization to coalesce attribute name filters
        if (filter instanceof BaseAttributeFilter) {
            BaseAttributeFilter newFilter = (BaseAttributeFilter) filter;
            Iterator<BaseNotificationBroadcasterEntry> items = entries.iterator();
            while (items.hasNext()) {
                BaseNotificationBroadcasterEntry item = items.next();
                if ((item.listener == listener) && (item.filter != null)
                        && (item.filter instanceof BaseAttributeFilter) && (item.handback == handback)) {
                    BaseAttributeFilter oldFilter = (BaseAttributeFilter) item.filter;
                    String newNames[] = newFilter.getNames();
                    String oldNames[] = oldFilter.getNames();
                    if (newNames.length == 0) {
                        oldFilter.clear();
                    } else {
                        if (oldNames.length != 0) {
                            for (int i = 0; i < newNames.length; i++)
                                oldFilter.addAttribute(newNames[i]);
                        }
                    }
                    return;
                }
            }
        }

        // General purpose addition of a new entry
        entries.add(new BaseNotificationBroadcasterEntry(listener, filter, handback));
    }

}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号