1 10 11 package org.mmbase.applications.email; 12 13 import java.util.Iterator ; 14 15 import org.mmbase.module.core.MMBase; 16 import org.mmbase.module.core.MMBaseContext; 17 import org.mmbase.module.core.MMObjectNode; 18 import org.mmbase.module.core.MMBase; 19 import org.mmbase.util.logging.*; 20 21 27 public class EmailExpireHandler implements Runnable { 28 29 30 static private final Logger log = Logging.getLoggerInstance(EmailExpireHandler.class); 31 32 int sleeptime; 34 35 int expiretime; 37 38 EmailBuilder parent; 40 41 44 public EmailExpireHandler(EmailBuilder parent, int sleeptime, int expiretime) { 45 this.parent = parent; 46 this.sleeptime = sleeptime; 47 this.expiretime = expiretime; 48 Thread kicker = MMBaseContext.startThread(this, "emailexpireprobe"); 49 } 50 51 54 public void run() { 55 try { 56 MMBase mmbase = MMBase.getMMBase(); 57 while (!mmbase.isShutdown()) { 58 for (Iterator i = parent.getDeliveredMailOlderThan(expiretime).iterator(); i.hasNext(); ) { 60 MMObjectNode expiredNode = (MMObjectNode)i.next(); 62 log.service("Removing successfully mailed email 'one shot' email node " + expiredNode.getNumber()); 63 expiredNode.removeRelations(); 65 parent.removeNode(expiredNode); 67 } 68 try { 69 Thread.sleep(sleeptime * 1000); 70 } catch (InterruptedException f) { 71 log.debug(Thread.currentThread().getName() +" was interrupted."); 72 continue; 73 } 74 if (MMBase.getMMBase().isShutdown()) { 75 log.service("MMBase has been shutdown, breaking out of email expire probe too"); 76 break; 77 } else { 78 log.debug("MMBase still running"); 79 } 80 } 81 } catch (Exception e) { 82 log.error("run(): ERROR: Exception in emailqueueprobe thread!"); 83 log.error(Logging.stackTrace(e)); 84 return; 85 } 86 } 87 } 88 | Popular Tags |