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