public abstract class AbstractMonitoringStrategy extends Object implements MonitoringStrategy
MonitoringStrategy
interface. Exposes a deleteMessages
property, and includes a basic workflow for message monitoring.Modifier and Type | Field and Description |
---|---|
protected org.apache.commons.logging.Log |
logger
Logger available to subclasses.
|
Constructor and Description |
---|
AbstractMonitoringStrategy() |
Modifier and Type | Method and Description |
---|---|
protected void |
deleteMessages(Folder folder,
Message[] messages)
Deletes the given messages from the given folder.
|
protected void |
fetchMessages(Folder folder,
Message[] messages)
Fetches the specified messages from the specified folder.
|
int |
getFolderOpenMode()
Returns the folder open mode to be used by this strategy.
|
Message[] |
monitor(Folder folder)
Monitors the given folder, and returns any new messages when they arrive.
|
protected Message[] |
searchForNewMessages(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. |
protected abstract void |
waitForNewMessages(Folder folder)
Template method that blocks until new messages arrive in the given folder.
|
protected final org.apache.commons.logging.Log logger
public void setDeleteMessages(boolean deleteMessages)
DELETED
after they have been
read. Default is true
.public int getFolderOpenMode()
MonitoringStrategy
Folder.READ_ONLY
or Folder.READ_WRITE
.getFolderOpenMode
in interface MonitoringStrategy
public final Message[] monitor(Folder folder) throws MessagingException, InterruptedException
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
.monitor
in interface MonitoringStrategy
folder
- the folder to monitorMessagingException
- in case of JavaMail errorsInterruptedException
- when a thread is interruptedprotected abstract void waitForNewMessages(Folder folder) throws MessagingException, InterruptedException
Thread.sleep(long)
or the IMAP IDLE command.folder
- the folder to monitorMessagingException
- in case of JavaMail errorsInterruptedException
- when a thread is interruptedprotected Message[] searchForNewMessages(Folder folder) throws MessagingException
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.folder
- the folder to retrieve new messages fromMessagingException
- in case of JavaMail errorsprotected void fetchMessages(Folder folder, Message[] messages) throws MessagingException
fetches
every FetchProfile.Item
.folder
- the folder to fetch messages frommessages
- the messages to fetchMessagingException
- in case of JavMail errorsprotected void deleteMessages(Folder folder, Message[] messages) throws MessagingException
setDeleteMessages(boolean)
is
true
.folder
- the folder to delete messages frommessages
- the messages to deleteMessagingException
- in case of JavaMail errors