/**
* 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));
}
}
BaseNotificationBroadcaster.java 文件源码
java
阅读 24
收藏 0
点赞 0
评论 0
项目:lazycat
作者:
评论列表
文章目录