Author: michiel
Date: 2010-03-25 15:16:05 +0100 (Thu, 25 Mar 2010)
New Revision: 41606
Added:
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/SystemEvent.java
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/SystemEventBroker.java
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/SystemEventListener.java
Modified:
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/EventManager.java
Log:
MMB-1944
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-03-25 13:12:35 UTC (rev 41605)
+++
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/EventManager.java
2010-03-25 14:16:05 UTC (rev 41606)
@@ -190,23 +190,27 @@
}
long startTime = System.nanoTime();
for (EventBroker broker : eventBrokers) {
- if (broker.canBrokerForEvent(event)) {
- broker.notifyForEvent(event);
- if (log.isDebugEnabled()) {
- if (log.isTraceEnabled()) {
- log.trace("event from '" + event.getMachine() + "': "
+ event + " has been accepted by broker " + broker);
- } else {
- log.debug("event from '" + event.getMachine() + "' has
been accepted by broker " + broker);
+ try {
+ if (broker.canBrokerForEvent(event)) {
+ broker.notifyForEvent(event);
+ if (log.isDebugEnabled()) {
+ if (log.isTraceEnabled()) {
+ log.trace("event from '" + event.getMachine() +
"': " + event + " has been accepted by broker " + broker);
+ } else {
+ log.debug("event from '" + event.getMachine() + "'
has been accepted by broker " + broker);
+ }
}
- }
- } else {
- if (log.isDebugEnabled()) {
- if (log.isTraceEnabled()) {
- log.trace("event from '" + event.getMachine() + "': "
+ event + " has been rejected by broker " + broker);
- } else {
- log.debug("event from '" + event.getMachine() + "' has
been rejected by broker " + broker);
+ } else {
+ if (log.isDebugEnabled()) {
+ if (log.isTraceEnabled()) {
+ log.trace("event from '" + event.getMachine() +
"': " + event + " has been rejected by broker " + broker);
+ } else {
+ log.debug("event from '" + event.getMachine() + "'
has been rejected by broker " + broker);
+ }
}
}
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
}
}
numberOfPropagatedEvents++;
@@ -214,6 +218,22 @@
}
/**
+ * 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.
+ */
+ public void propagateEvent(final Event event, boolean asynchronous) {
+ if (asynchronous) {
+ ThreadPools.jobsExecutor.execute(new Runnable() {
+ public void run() {
+ propagateEvent(event);
+ }
+ });
+ } else {
+ propagateEvent(event);
+ }
+ }
+
+ /**
* @since MMBase-1.8.1
*/
public long getNumberOfPropagatedEvents() {
Added:
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/SystemEvent.java
===================================================================
---
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/SystemEvent.java
(rev 0)
+++
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/SystemEvent.java
2010-03-25 14:16:05 UTC (rev 41606)
@@ -0,0 +1,42 @@
+/*
+ * This software is OSI Certified Open Source Software.
+ * OSI Certified is a certification mark of the Open Source Initiative. The
+ * license (Mozilla version 1.0) can be read at the MMBase site. See
+ * http://www.MMBase.org/license
+ */
+package org.mmbase.core.event;
+
+import java.io.*;
+import java.util.*;
+
+import org.mmbase.util.logging.Logger;
+import org.mmbase.util.logging.Logging;
+
+/**
+ *
+ * @author Michiel Meeuwissen
+ * @since MMBase-1.9.3
+ * @version $Id: TransactionEvent.java 41369 2010-03-15 20:54:45Z michiel $
+ */
+public abstract class SystemEvent extends Event {
+ private static final Logger LOG =
Logging.getLoggerInstance(SystemEvent.class);
+
+ public SystemEvent() {
+ }
+
+ /**
+ * Notifies that the local MMBase is now fully up and running
+ */
+ public static class Up extends SystemEvent {
+ }
+
+ static {
+ SystemEventListener logger = new SystemEventListener() {
+ public void notify(SystemEvent s) {
+ LOG.service(" Received " + s);
+ }
+ };
+ EventManager.getInstance().addEventListener(logger);
+ }
+
+}
Added:
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/SystemEventBroker.java
===================================================================
---
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/SystemEventBroker.java
(rev 0)
+++
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/SystemEventBroker.java
2010-03-25 14:16:05 UTC (rev 41606)
@@ -0,0 +1,55 @@
+/*
+ * This software is OSI Certified Open Source Software.
+ * OSI Certified is a certification mark of the Open Source Initiative. The
+ * license (Mozilla version 1.0) can be read at the MMBase site. See
+ * http://www.MMBase.org/license
+ */
+package org.mmbase.core.event;
+
+
+/**
+ *
+ * @author Michiel Meeuwissen
+ * @since MMBase-1.9.3
+ * @version $Id: TransactionEventBroker.java 41369 2010-03-15 20:54:45Z
michiel $
+ */
+public class SystemEventBroker extends AbstractEventBroker {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see event.AbstractEventBroker#canBrokerFor(java.lang.Class)
+ */
+ public boolean canBrokerForListener(EventListener listener) {
+ return listener instanceof SystemEventListener;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see event.AbstractEventBroker#shouldNotifyForEvent(event.Event)
+ */
+ public boolean canBrokerForEvent(Event event) {
+ return event instanceof SystemEvent;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see event.AbstractEventBroker#notifyEventListeners()
+ */
+ protected void notifyEventListener(Event event, EventListener listener) {
+ SystemEvent te = (SystemEvent) event; //!!!!!
+ SystemEventListener sel = (SystemEventListener) listener;
+ sel.notify(te);
+ }
+
+ /* (non-Javadoc)
+ * @see org.mmbase.core.event.AbstractEventBroker#toString()
+ */
+ @Override
+ public String toString() {
+ return "SystemEvent Broker";
+ }
+
+}
Added:
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/SystemEventListener.java
===================================================================
---
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/SystemEventListener.java
(rev 0)
+++
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/core/event/SystemEventListener.java
2010-03-25 14:16:05 UTC (rev 41606)
@@ -0,0 +1,17 @@
+/*
+ * This software is OSI Certified Open Source Software.
+ * OSI Certified is a certification mark of the Open Source Initiative. The
+ * license (Mozilla version 1.0) can be read at the MMBase site. See
+ * http://www.MMBase.org/license
+ */
+package org.mmbase.core.event;
+
+/**
+ *
+ * @author Michiel Meeuwissen
+ * @since MMBase-1.9.3
+ * @version $Id: TransactionEventListener.java 41419 2010-03-16 12:54:44Z
michiel $
+ */
+public interface SystemEventListener extends EventListener {
+ public void notify(SystemEvent event);
+}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs