Author: michiel
Date: 2010-04-20 15:53:27 +0200 (Tue, 20 Apr 2010)
New Revision: 41979
Modified:
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/EventManager.java
Log:
sometime more than one broker matched listener, avoid propagating collected
system events more than once
Modified:
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/EventManager.java
===================================================================
---
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/EventManager.java
2010-04-20 13:30:18 UTC (rev 41978)
+++
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/EventManager.java
2010-04-20 13:53:27 UTC (rev 41979)
@@ -83,7 +83,7 @@
}
- protected void configure(String resource) {
+ protected synchronized void configure(String resource) {
log.service("Configuring the event manager");
eventBrokers.clear();
for (URL url :
ResourceLoader.getConfigurationRoot().getResourceList(resource)) {
@@ -159,12 +159,15 @@
/**
* @param listener
*/
- public void addEventListener(EventListener listener) {
+ public synchronized void addEventListener(EventListener listener) {
BrokerIterator i = findBrokers(listener);
+ boolean notifiedReceived = false;
while (i.hasNext()) {
EventBroker broker = i.next();
if (broker.addListener(listener)) {
- if (listener instanceof SystemEventListener) {
+ if (! notifiedReceived && listener instanceof
SystemEventListener) {
+ log.debug("Notifying " + receivedSystemEvents + " to " +
listener);
+ notifiedReceived = true;
for (SystemEvent.Collectable se : receivedSystemEvents) {
((SystemEventListener) listener).notify(se);
}
@@ -233,6 +236,7 @@
/**
* Like {...@link #propagateEvent} but with an extra argument
'asynchronous'.
* @param asynchronous If true, execute the propagation in a different
thread, and don't let this thread wait for the result.
+ * @since MMBase-1.9.3
*/
public void propagateEvent(final Event event, boolean asynchronous) {
if (asynchronous) {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs