package com.atlassian.jira.service.util.handler; import com.atlassian.mail.MailUtils; import org.apache.log4j.Category; import java.util.Date; import javax.mail.Message; import javax.mail.MessagingException; /** * A message handler to purge unhandled messages from the mailbox * once they exceed a specified age. */ public class PurgeHandler extends AbstractMessageHandler { private static final Category log = Category.getInstance(PurgeHandler.class); /** Maximum age (in days) to keep messages. */ public int maxAge = 14; private static final String KEY_MAXAGE = "maxage"; public void init(Map params) { log.debug("PurgeHandler.init(params: " + params + ")"); super.init(params); if (params.containsKey(KEY_MAXAGE)) { try { maxAge = Integer.parseInt((String) params.get(KEY_MAXAGE)); } catch (NumberFormatException e) { // ignore it log.warn("Invalid maxage parameter: " + params.get(KEY_MAXAGE)); } } } public boolean handleMessage(Message message) throws MessagingException { if (catchEmail != null && !MailUtils.hasRecipient(catchEmail, message)) { return false; } Date now = new Date(); Date sentDate = message.getSentDate(); if (sentDate <= now - (maxAge * 24 * 60 * 60 * 1000)) { log.debug("Deleting mail '" + message.getSubject() + "', sent " + sentDate); return true; // delete the email } return false; } }