org.springframework.integration.adapter.mail.monitor
Class AbstractMonitoringStrategy

java.lang.Object
  extended by org.springframework.integration.adapter.mail.monitor.AbstractMonitoringStrategy
All Implemented Interfaces:
MonitoringStrategy
Direct Known Subclasses:
ImapIdleMonitoringStrategy, PollingMonitoringStrategy

public abstract class AbstractMonitoringStrategy
extends java.lang.Object
implements MonitoringStrategy

Abstract base class for the MonitoringStrategy interface. Exposes a deleteMessages property, and includes a basic workflow for message monitoring.

Author:
Arjen Poutsma

Field Summary
private  boolean deleteMessages
           
protected  org.apache.commons.logging.Log logger
          Logger available to subclasses.
private  int maxMessagesPerReceive
           
 
Constructor Summary
AbstractMonitoringStrategy()
           
 
Method Summary
protected  void deleteMessages(javax.mail.Folder folder, javax.mail.Message[] messages)
          Deletes the given messages from the given folder.
protected  void fetchMessages(javax.mail.Folder folder, javax.mail.Message[] messages)
          Fetches the specified messages from the specified folder.
 int getFolderOpenMode()
          Returns the folder open mode to be used by this strategy.
 javax.mail.Message[] receive(javax.mail.Folder folder)
          Monitors the given folder, and returns any new messages when they arrive.
protected  javax.mail.Message[] searchForNewMessages(javax.mail.Folder folder)
          Retrieves new messages from the given folder.
 void setDeleteMessages(boolean deleteMessages)
          Sets whether messages should be marked as DELETED after they have been read.
 void setMaxMessagePerDownload(int maxMessagesPerReceive)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected final org.apache.commons.logging.Log logger
Logger available to subclasses.


deleteMessages

private boolean deleteMessages

maxMessagesPerReceive

private int maxMessagesPerReceive
Constructor Detail

AbstractMonitoringStrategy

public AbstractMonitoringStrategy()
Method Detail

setDeleteMessages

public void setDeleteMessages(boolean deleteMessages)
Sets whether messages should be marked as DELETED after they have been read. Default is true.


getFolderOpenMode

public int getFolderOpenMode()
Description copied from interface: MonitoringStrategy
Returns the folder open mode to be used by this strategy. Can be either Folder.READ_ONLY or Folder.READ_WRITE.

Specified by:
getFolderOpenMode in interface MonitoringStrategy

setMaxMessagePerDownload

public void setMaxMessagePerDownload(int maxMessagesPerReceive)

receive

public final javax.mail.Message[] receive(javax.mail.Folder folder)
                                   throws javax.mail.MessagingException,
                                          java.lang.InterruptedException
Monitors the given folder, and returns any new messages when they arrive. This implementation calls #waitForNewMessages(Folder), then searches for new messages using searchForNewMessages(Folder), fetches the messages using fetchMessages(Folder, Message[]), and finally deletes the messages, if deleteMessages is true.

Specified by:
receive in interface MonitoringStrategy
Parameters:
folder - the folder to monitor
Returns:
the new messages
Throws:
javax.mail.MessagingException - in case of JavaMail errors
java.lang.InterruptedException - when a thread is interrupted

searchForNewMessages

protected javax.mail.Message[] searchForNewMessages(javax.mail.Folder folder)
                                             throws javax.mail.MessagingException
Retrieves new messages from the given folder. This implementation creates a SearchTerm that searches for all messages in the folder that are RECENT, not ANSWERED, and not DELETED. The search term is used to search for new messages.

Parameters:
folder - the folder to retrieve new messages from
Returns:
the new messages
Throws:
javax.mail.MessagingException - in case of JavaMail errors

fetchMessages

protected void fetchMessages(javax.mail.Folder folder,
                             javax.mail.Message[] messages)
                      throws javax.mail.MessagingException
Fetches the specified messages from the specified folder. Default implementation fetches every FetchProfile.Item.

Parameters:
folder - the folder to fetch messages from
messages - the messages to fetch
Throws:
javax.mail.MessagingException - in case of JavMail errors

deleteMessages

protected void deleteMessages(javax.mail.Folder folder,
                              javax.mail.Message[] messages)
                       throws javax.mail.MessagingException
Deletes the given messages from the given folder. Only invoked when setDeleteMessages(boolean) is true.

Parameters:
folder - the folder to delete messages from
messages - the messages to delete
Throws:
javax.mail.MessagingException - in case of JavaMail errors