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