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
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to