Author: michiel
Date: 2010-04-13 18:28:49 +0200 (Tue, 13 Apr 2010)
New Revision: 41917
Modified:
mmbase/trunk/utils/src/main/java/org/mmbase/core/event/EventManager.java
mmbase/trunk/utils/src/main/java/org/mmbase/core/event/SystemEvent.java
Log:
a small improvent for the Up Event
Modified:
mmbase/trunk/utils/src/main/java/org/mmbase/core/event/EventManager.java
===================================================================
--- mmbase/trunk/utils/src/main/java/org/mmbase/core/event/EventManager.java
2010-04-13 16:08:20 UTC (rev 41916)
+++ mmbase/trunk/utils/src/main/java/org/mmbase/core/event/EventManager.java
2010-04-13 16:28:49 UTC (rev 41917)
@@ -77,11 +77,15 @@
public static String getMachineName() {
return machineName;
}
+ private final List<SystemEvent.Collectable> receivedSystemEvents = new
ArrayList<SystemEvent.Collectable>();
- public void notify(SystemEvent se) {
+ public synchronized void notify(SystemEvent se) {
if (se instanceof SystemEvent.MachineName) {
machineName = ((SystemEvent.MachineName) se).getName();
}
+ if (se instanceof SystemEvent.Collectable) {
+ receivedSystemEvents.add((SystemEvent.Collectable) se);
+ }
}
@@ -179,6 +183,11 @@
while (i.hasNext()) {
EventBroker broker = i.next();
if (broker.addListener(listener)) {
+ if (listener instanceof SystemEventListener) {
+ for (SystemEvent.Collectable se : receivedSystemEvents) {
+ ((SystemEventListener) listener).notify(se);
+ }
+ }
if (log.isDebugEnabled()) {
log.debug("listener " + listener + " added to broker " +
broker );
}
Modified:
mmbase/trunk/utils/src/main/java/org/mmbase/core/event/SystemEvent.java
===================================================================
--- mmbase/trunk/utils/src/main/java/org/mmbase/core/event/SystemEvent.java
2010-04-13 16:08:20 UTC (rev 41916)
+++ mmbase/trunk/utils/src/main/java/org/mmbase/core/event/SystemEvent.java
2010-04-13 16:28:49 UTC (rev 41917)
@@ -24,16 +24,36 @@
public SystemEvent() {
}
+
/**
+ * A SystemEvent that is also Collectable will be collected by the
EventManger and also issued to EventListeners which are added after the event
+ * happened.
+ */
+ public static abstract class Collectable extends SystemEvent {
+ }
+
+ /**
* Notifies that the local MMBase is now fully up and running
*/
- public static class Up extends SystemEvent {
+ public static class Up extends Collectable {
+ private final String databaseName;
+ private final File dataDir;
+ public Up(String databaseName, File dataDir) {
+ this.databaseName = databaseName;
+ this.dataDir = dataDir;
+ }
+ public String getDatabaseName() {
+ return databaseName;
+ }
+ public File getDataDir() {
+ return dataDir;
+ }
}
/**
* Notifies the first determination or change in the 'machinename'
*/
- public static class MachineName extends SystemEvent {
+ public static class MachineName extends Collectable {
private final String name;
public MachineName(String n) {
name = n;
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs