Update of 
/var/cvs/applications/crontab/src/org/mmbase/applications/crontab/builders
In directory james.mmbase.org:/tmp/cvs-serv917/builders

Modified Files:
        CronJobs.java 
Log Message:
on reload of the module, also reload the jobs defined by the cronjobs builder


See also: 
http://cvs.mmbase.org/viewcvs/applications/crontab/src/org/mmbase/applications/crontab/builders


Index: CronJobs.java
===================================================================
RCS file: 
/var/cvs/applications/crontab/src/org/mmbase/applications/crontab/builders/CronJobs.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- CronJobs.java       2 Dec 2008 09:10:36 -0000       1.11
+++ CronJobs.java       9 Dec 2008 13:38:49 -0000       1.12
@@ -20,7 +20,7 @@
  *  The builder also starts the CronDeamon. on startup the list of cronjobs is 
loaded into memory.
  *  <b>The builder uses the bridge to get a cloud using class security.</b>
  * @author Kees Jongenburger
- * @version $Id: CronJobs.java,v 1.11 2008/12/02 09:10:36 michiel Exp $
+ * @version $Id: CronJobs.java,v 1.12 2008/12/09 13:38:49 michiel Exp $
  */
 public class CronJobs extends MMObjectBuilder  {
 
@@ -33,23 +33,42 @@
         boolean res = super.init();
         org.mmbase.util.ThreadPools.jobsExecutor.execute(new Runnable() {
                 public void run() {
+                    CronJobs.this.readJobs();
+                }
+            });
+        return res;
+    }
+
+    private final Set<NodeCronEntry> myJobs = new HashSet<NodeCronEntry>();
+
+
+    public static CronJobs getBuilder() {
+        return (CronJobs) MMBase.getMMBase().getBuilder("cronjobs");
+    }
+
+    public void readJobs() {
+        Cloud cloud = getCloud();
+
                     CronDaemon cronDaemon = CronDaemon.getInstance();
-                    NodeIterator nodeIterator = 
getCloud().getNodeManager(getTableName()).getList(null, null, 
null).nodeIterator();
+        for(NodeCronEntry e : myJobs) {
+            cronDaemon.remove(e);
+        }
+        myJobs.clear();
+
+        log.service("Loading jobs from " + this);
+        NodeIterator nodeIterator = 
cloud.getNodeManager(getTableName()).getList(null, null, null).nodeIterator();
                     while (nodeIterator.hasNext()) {
                         Node node = nodeIterator.nextNode();
-                        CronEntry entry = null;
                         try {
-                            entry = new NodeCronEntry(node);
+                NodeCronEntry entry = new NodeCronEntry(node);
                             log.service("Adding cron entry [" + entry + "]");
+                myJobs.add(entry);
                             cronDaemon.add(entry);
                         } catch (Exception e) {
                             log.warn("did not add cronjob with id " + 
node.getNumber() + " because of error " + e.getMessage());
                         }
                     }
                 }
-            });
-        return res;
-    }
 
     @Override public void notify(NodeEvent event) {
         log.debug("Received " + event);
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to