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

Modified Files:
      Tag: MMBase-1_8
        CronJobs.java 
Added Files:
      Tag: MMBase-1_8
        NodeCronEntry.java 
Log Message:
  MMB-1677


See also: 
http://cvs.mmbase.org/viewcvs/applications/crontab/src/org/mmbase/applications/crontab/builders
See also: http://www.mmbase.org/jira/browse/MMB-1677


NodeCronEntry.java is new



Index: CronJobs.java
===================================================================
RCS file: 
/var/cvs/applications/crontab/src/org/mmbase/applications/crontab/builders/CronJobs.java,v
retrieving revision 1.2.2.2
retrieving revision 1.2.2.3
diff -u -b -r1.2.2.2 -r1.2.2.3
--- CronJobs.java       17 Nov 2006 13:06:59 -0000      1.2.2.2
+++ CronJobs.java       14 Jul 2008 13:43:54 -0000      1.2.2.3
@@ -7,6 +7,7 @@
  */
 package org.mmbase.applications.crontab.builders;
 
+import java.util.*;
 import org.mmbase.applications.crontab.*;
 import org.mmbase.bridge.*;
 import org.mmbase.module.core.*;
@@ -49,7 +50,7 @@
             Node node = nodeIterator.nextNode();
             CronEntry entry = null;
             try {
-                entry = createCronEntry(node);
+                entry = new NodeCronEntry(node);
                 NodeList servers = node.getRelatedNodes("mmservers");
                 if (servers.size() > 0) {
                     String machineName = MMBase.getMMBase().getMachineName();
@@ -74,7 +75,7 @@
                     cronDaemon.add(entry);
                 }
             } catch (Exception e) {
-                log.warn("did not add cronjob with id " + node.getNumber() + " 
because of error " + e.getMessage());
+                log.warn("did not add cronjob with id " + node.getNumber() + " 
because of error " + e.getMessage(), e);
             }
         }
     }
@@ -87,7 +88,7 @@
         try {
             if (cronDaemon != null) {
                        Node node = getCloud().getNode(number);
-                cronDaemon.add(createCronEntry(node));
+                cronDaemon.add(new NodeCronEntry(node));
             }
         } catch (Exception e) {
             throw new RuntimeException("error while creating cron entry with 
id " + number + " error " + e.getMessage(), e);
@@ -99,17 +100,32 @@
      * Commits a cronjob to the database.
      * On commit of a cronjob, the job is first removed from the cronDeamon 
and a new cronEntry is created and added to the CronDaemon.
      */
-    public boolean commit(MMObjectNode objectNodenode) {
-        boolean retval = super.commit(objectNodenode);
-        Node node = getCloud().getNode(objectNodenode.getNumber());
+    public boolean commit(MMObjectNode node) {
+        Set changed = node.getChanged();
+        boolean retval = super.commit(node);
         CronEntry entry = cronDaemon.getCronEntry("" + node.getNumber());
         if (entry == null) {
             log.warn("cron entry with ID " + node.getNumber() + " was not 
found. this usualy means it was invalid");
         } else {
+            if (entry instanceof NodeCronEntry) {
+                if (changed.contains("classfile") ||
+                    changed.contains("name") ||
+                    changed.contains("type")) {
+                    log.warn("Changed fields " + changed);
             cronDaemon.remove(entry);
+                } else {
+                    log.warn("Ignored " + node);
+                    return retval;
+                }
+            } else {
+                log.warn("How come, " + entry + " is not a node-entry");
+                cronDaemon.remove(entry);
+            }
         }
         try {
-            cronDaemon.add(createCronEntry(node));
+            log.info("Replacing cronentry " + entry);
+            Node n = getCloud().getNode(node.getNumber());
+            cronDaemon.add(new NodeCronEntry(n));
         } catch (Exception e) {
             throw new RuntimeException("error while creating cron entry with 
id " + node.getNumber() + " error " + e.getMessage());
         }
@@ -128,9 +144,7 @@
         }
     }
 
-    private CronEntry createCronEntry(Node node) throws Exception {
-        return new CronEntry("" + node.getNumber(), 
node.getStringValue("crontime"), node.getStringValue("name"), 
node.getStringValue("classfile"), 
node.getStringValue("config"),node.getIntValue("type"));
-    }
+
 
     private Cloud getCloud() {
         return LocalContext.getCloudContext().getCloud("mmbase");
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to