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

Reply via email to