org.alfresco.repo.imap
Class AbstractImapFolder

java.lang.Object
  extended by org.alfresco.repo.imap.AbstractImapFolder
All Implemented Interfaces:
com.icegreen.greenmail.store.MailFolder
Direct Known Subclasses:
AlfrescoImapFolder

public abstract class AbstractImapFolder
extends java.lang.Object
implements com.icegreen.greenmail.store.MailFolder

Implementation of greenmail MailFolder. It represents an Alfresco content folder and handles appendMessage, copyMessage, expunge (delete), getMessages, getMessage and so requests.


Nested Class Summary
protected  class AbstractImapFolder.CommandCallback
           
 
Field Summary
protected static int MAX_RETRIES
           
protected  ServiceRegistry serviceRegistry
           
 
Constructor Summary
AbstractImapFolder(ServiceRegistry serviceRegistry)
           
 
Method Summary
 void addListener(com.icegreen.greenmail.store.FolderListener listener)
          Adds FolderListener to the folder.
 long appendMessage(javax.mail.internet.MimeMessage message, javax.mail.Flags flags, java.util.Date internalDate)
          Appends message to the folder.
protected abstract  long appendMessageInternal(javax.mail.internet.MimeMessage message, javax.mail.Flags flags, java.util.Date internalDate)
           
protected  void checkParameter(java.lang.Object parameter, java.lang.String name)
          Method that checks mandatory parameter.
 void copyMessage(long uid, com.icegreen.greenmail.store.MailFolder toFolder)
          Copies message with the given UID to the specified MailFolder.
protected abstract  void copyMessageInternal(long uid, com.icegreen.greenmail.store.MailFolder toFolder)
           
 void deleteAllMessages()
          Marks all messages in the folder as deleted using Flags.Flag#DELETED flag.
protected abstract  void deleteAllMessagesInternal()
           
 void expunge()
          Deletes messages marked with Flags.Flag#DELETED.
protected abstract  void expungeInternal()
           
 int getFirstUnseen()
          Returns the number of the first unseen message.
protected abstract  int getFirstUnseenInternal()
           
 java.lang.String getFullName()
          Returns full name of the folder with namespace and full path delimited with the hierarchy delimiter (see AlfrescoImapConst.HIERARCHY_DELIMITER)

E.g.:
#mail.admin."Repository_archive.Data Dictionary.Space Templates.Software Engineering Project"
This is required by GreenMail implementation.

protected abstract  java.lang.String getFullNameInternal()
           
 com.icegreen.greenmail.store.SimpleStoredMessage getMessage(long uid)
          Returns message by its UID.
 int getMessageCount()
          Returns count of the messages in the folder.
protected abstract  int getMessageCountInternal()
           
protected abstract  com.icegreen.greenmail.store.SimpleStoredMessage getMessageInternal(long uid)
           
 java.util.List getMessages()
          Returns list of all messages in the folder.
 java.util.List getMessages(com.icegreen.greenmail.foedus.util.MsgRangeFilter msgRangeFilter)
          Returns list of messages by filter.
protected abstract  java.util.List getMessagesInternal()
           
protected abstract  java.util.List getMessagesInternal(com.icegreen.greenmail.foedus.util.MsgRangeFilter msgRangeFilter)
           
 long[] getMessageUids()
          Returns UIDs of all messages in the folder.
protected abstract  long[] getMessageUidsInternal()
           
 int getMsn(long uid)
          Returns message sequence number in the folder by its UID.
protected abstract  int getMsnInternal(long uid)
           
 java.lang.String getName()
          Returns folder name.
protected abstract  java.lang.String getNameInternal()
           
 java.util.List getNonDeletedMessages()
          Returns the list of messages that have no Flags.Flag#DELETED flag set for current user.
protected abstract  java.util.List getNonDeletedMessagesInternal()
           
 javax.mail.Flags getPermanentFlags()
          Returns permanent flags.
protected abstract  javax.mail.Flags getPermanentFlagsInternal()
           
 int getRecentCount(boolean reset)
          Returns count of messages with Flags.Flag#RECENT flag.
protected abstract  int getRecentCountInternal(boolean reset)
           
 long getUidNext()
          Returns UIDNEXT value of the folder.
protected abstract  long getUidNextInternal()
           
 long getUidValidity()
          Returns UIDVALIDITY value of the folder.
protected abstract  long getUidValidityInternal()
           
 int getUnseenCount()
          Returns count of the messages with Flags.Flag#SEEN in the folder for the current user.
protected abstract  int getUnseenCountInternal()
           
protected abstract  boolean isReadOnly()
           
 boolean isSelectable()
          Whether the folder is selectable.
protected abstract  boolean isSelectableInternal()
           
protected  void notifyFlagUpdate(int msn, javax.mail.Flags flags, java.lang.Long uidNotification, com.icegreen.greenmail.store.FolderListener silentListener)
           
 void removeListener(com.icegreen.greenmail.store.FolderListener listener)
          Removes FolderListener from the folder.
 void replaceFlags(javax.mail.Flags flags, long uid, com.icegreen.greenmail.store.FolderListener silentListener, boolean addUid)
          Replaces flags for the message with the given UID.
protected abstract  void replaceFlagsInternal(javax.mail.Flags flags, long uid, com.icegreen.greenmail.store.FolderListener silentListener, boolean addUid)
           
 long[] search(javax.mail.search.SearchTerm searchTerm)
          Simply returns UIDs of all messages in the folder.
 void setFlags(javax.mail.Flags flags, boolean value, long uid, com.icegreen.greenmail.store.FolderListener silentListener, boolean addUid)
          Sets flags for the message with the given UID.
protected abstract  void setFlagsInternal(javax.mail.Flags flags, boolean value, long uid, com.icegreen.greenmail.store.FolderListener silentListener, boolean addUid)
           
 void signalDeletion()
          Method is called before the deletion of the folder.
 void store(javax.mail.internet.MimeMessage message)
          Not supported.
 void store(com.icegreen.greenmail.mail.MovingMessage mail)
          Not supported.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

serviceRegistry

protected ServiceRegistry serviceRegistry

MAX_RETRIES

protected static int MAX_RETRIES
Constructor Detail

AbstractImapFolder

public AbstractImapFolder(ServiceRegistry serviceRegistry)
Method Detail

checkParameter

protected void checkParameter(java.lang.Object parameter,
                              java.lang.String name)
Method that checks mandatory parameter.

Parameters:
The - parameter instance to check.
The - name of the parameter.

appendMessage

public long appendMessage(javax.mail.internet.MimeMessage message,
                          javax.mail.Flags flags,
                          java.util.Date internalDate)
                   throws com.icegreen.greenmail.store.FolderException
Appends message to the folder.

Specified by:
appendMessage in interface com.icegreen.greenmail.store.MailFolder
Parameters:
message - - message.
flags - - message flags.
internalDate - - not used. Current date used instead.
Returns:
Throws:
com.icegreen.greenmail.store.FolderException

copyMessage

public void copyMessage(long uid,
                        com.icegreen.greenmail.store.MailFolder toFolder)
                 throws com.icegreen.greenmail.store.FolderException
Copies message with the given UID to the specified MailFolder.

Specified by:
copyMessage in interface com.icegreen.greenmail.store.MailFolder
Parameters:
uid - - UID of the message
toFolder - - reference to the destination folder.
Throws:
com.icegreen.greenmail.store.FolderException

deleteAllMessages

public void deleteAllMessages()
                       throws com.icegreen.greenmail.store.FolderException
Marks all messages in the folder as deleted using Flags.Flag#DELETED flag.

Specified by:
deleteAllMessages in interface com.icegreen.greenmail.store.MailFolder
Throws:
com.icegreen.greenmail.store.FolderException

expunge

public void expunge()
             throws com.icegreen.greenmail.store.FolderException
Deletes messages marked with Flags.Flag#DELETED. Note that this message deletes all messages with this flag.

Specified by:
expunge in interface com.icegreen.greenmail.store.MailFolder
Throws:
com.icegreen.greenmail.store.FolderException

getFirstUnseen

public int getFirstUnseen()
Returns the number of the first unseen message.

Specified by:
getFirstUnseen in interface com.icegreen.greenmail.store.MailFolder
Returns:
Number of the first unseen message.

getFullName

public java.lang.String getFullName()
Returns full name of the folder with namespace and full path delimited with the hierarchy delimiter (see AlfrescoImapConst.HIERARCHY_DELIMITER)

E.g.:
#mail.admin."Repository_archive.Data Dictionary.Space Templates.Software Engineering Project"
This is required by GreenMail implementation.

Specified by:
getFullName in interface com.icegreen.greenmail.store.MailFolder

getMessage

public com.icegreen.greenmail.store.SimpleStoredMessage getMessage(long uid)
Returns message by its UID.

Specified by:
getMessage in interface com.icegreen.greenmail.store.MailFolder
Parameters:
uid - - UID of the message.
Returns:
message.

getMessageCount

public int getMessageCount()
Returns count of the messages in the folder.

Specified by:
getMessageCount in interface com.icegreen.greenmail.store.MailFolder
Returns:
Count of the messages.

getMessages

public java.util.List getMessages()
Returns list of all messages in the folder.

Specified by:
getMessages in interface com.icegreen.greenmail.store.MailFolder
Returns:
list of SimpleStoredMessage objects.

getMessages

public java.util.List getMessages(com.icegreen.greenmail.foedus.util.MsgRangeFilter msgRangeFilter)
Returns list of messages by filter.

Specified by:
getMessages in interface com.icegreen.greenmail.store.MailFolder
Parameters:
msgRangeFilter - - MsgRangeFilter object representing filter.
Returns:
list of filtered messages.

getMsn

public int getMsn(long uid)
           throws com.icegreen.greenmail.store.FolderException
Returns message sequence number in the folder by its UID.

Specified by:
getMsn in interface com.icegreen.greenmail.store.MailFolder
Parameters:
uid - - message UID.
Returns:
message sequence number.
Throws:
com.icegreen.greenmail.store.FolderException - if no message with given UID.

getName

public java.lang.String getName()
Returns folder name.

Specified by:
getName in interface com.icegreen.greenmail.store.MailFolder
Returns:
folder name.

getMessageUids

public long[] getMessageUids()
Returns UIDs of all messages in the folder.

Specified by:
getMessageUids in interface com.icegreen.greenmail.store.MailFolder
Returns:
UIDS of the messages.

getNonDeletedMessages

public java.util.List getNonDeletedMessages()
Returns the list of messages that have no Flags.Flag#DELETED flag set for current user.

Specified by:
getNonDeletedMessages in interface com.icegreen.greenmail.store.MailFolder
Returns:
the list of non-deleted messages.

getPermanentFlags

public javax.mail.Flags getPermanentFlags()
Returns permanent flags.

Specified by:
getPermanentFlags in interface com.icegreen.greenmail.store.MailFolder
Returns:
Flags object containing flags.

getRecentCount

public int getRecentCount(boolean reset)
Returns count of messages with Flags.Flag#RECENT flag. If reset parameter is true - removes Flags.Flag#RECENT flag from the message for current user.

Specified by:
getRecentCount in interface com.icegreen.greenmail.store.MailFolder
Parameters:
reset - - if true the Flags.Flag#RECENT will be deleted for current user if exists.
Returns:
returns count of recent messages.

getUidNext

public long getUidNext()
Returns UIDNEXT value of the folder.

Specified by:
getUidNext in interface com.icegreen.greenmail.store.MailFolder
Returns:
UIDNEXT value.

getUidValidity

public long getUidValidity()
Returns UIDVALIDITY value of the folder.

Specified by:
getUidValidity in interface com.icegreen.greenmail.store.MailFolder
Returns:
UIDVALIDITY value.

getUnseenCount

public int getUnseenCount()
Returns count of the messages with Flags.Flag#SEEN in the folder for the current user.

Specified by:
getUnseenCount in interface com.icegreen.greenmail.store.MailFolder
Returns:
Count of the unseen messages for current user.

isSelectable

public boolean isSelectable()
Whether the folder is selectable.

Specified by:
isSelectable in interface com.icegreen.greenmail.store.MailFolder
Returns:
boolean.

replaceFlags

public void replaceFlags(javax.mail.Flags flags,
                         long uid,
                         com.icegreen.greenmail.store.FolderListener silentListener,
                         boolean addUid)
                  throws com.icegreen.greenmail.store.FolderException
Replaces flags for the message with the given UID. If addUid is set to true FolderListener objects defined for this folder will be notified. silentListener can be provided - this listener wouldn't be notified.

Specified by:
replaceFlags in interface com.icegreen.greenmail.store.MailFolder
Parameters:
flags - - new flags.
uid - - message UID.
silentListener - - listener that shouldn't be notified.
addUid - - defines whether or not listeners be notified.
Throws:
com.icegreen.greenmail.store.FolderException

search

public long[] search(javax.mail.search.SearchTerm searchTerm)
Simply returns UIDs of all messages in the folder.

Specified by:
search in interface com.icegreen.greenmail.store.MailFolder
Parameters:
searchTerm - - not used
Returns:
UIDs of the messages

setFlags

public void setFlags(javax.mail.Flags flags,
                     boolean value,
                     long uid,
                     com.icegreen.greenmail.store.FolderListener silentListener,
                     boolean addUid)
              throws com.icegreen.greenmail.store.FolderException
Sets flags for the message with the given UID. If addUid is set to true FolderListener objects defined for this folder will be notified. silentListener can be provided - this listener wouldn't be notified.

Specified by:
setFlags in interface com.icegreen.greenmail.store.MailFolder
Parameters:
flags - - new flags.
value - - flags value.
uid - - message UID.
silentListener - - listener that shouldn't be notified.
addUid - - defines whether or not listeners be notified.
Throws:
com.icegreen.greenmail.store.FolderException

store

public void store(com.icegreen.greenmail.mail.MovingMessage mail)
           throws java.lang.Exception
Not supported. Added to implement MailFolder.store(MovingMessage).

Specified by:
store in interface com.icegreen.greenmail.store.MailFolder
Throws:
java.lang.Exception

store

public void store(javax.mail.internet.MimeMessage message)
           throws java.lang.Exception
Not supported. Added to implement MailFolder.store(MimeMessage).

Specified by:
store in interface com.icegreen.greenmail.store.MailFolder
Throws:
java.lang.Exception

addListener

public void addListener(com.icegreen.greenmail.store.FolderListener listener)
Adds FolderListener to the folder.

Specified by:
addListener in interface com.icegreen.greenmail.store.MailFolder
Parameters:
listener - - new listener.

removeListener

public void removeListener(com.icegreen.greenmail.store.FolderListener listener)
Removes FolderListener from the folder.

Specified by:
removeListener in interface com.icegreen.greenmail.store.MailFolder
Parameters:
listener - - Listener to remove.

signalDeletion

public void signalDeletion()
Method is called before the deletion of the folder. Notifies FolderListener objects with FolderListener.mailboxDeleted() method calls.

Specified by:
signalDeletion in interface com.icegreen.greenmail.store.MailFolder

notifyFlagUpdate

protected void notifyFlagUpdate(int msn,
                                javax.mail.Flags flags,
                                java.lang.Long uidNotification,
                                com.icegreen.greenmail.store.FolderListener silentListener)

isReadOnly

protected abstract boolean isReadOnly()

appendMessageInternal

protected abstract long appendMessageInternal(javax.mail.internet.MimeMessage message,
                                              javax.mail.Flags flags,
                                              java.util.Date internalDate)
                                       throws java.lang.Exception
Throws:
java.lang.Exception

copyMessageInternal

protected abstract void copyMessageInternal(long uid,
                                            com.icegreen.greenmail.store.MailFolder toFolder)
                                     throws java.lang.Exception
Throws:
java.lang.Exception

deleteAllMessagesInternal

protected abstract void deleteAllMessagesInternal()
                                           throws java.lang.Exception
Throws:
java.lang.Exception

expungeInternal

protected abstract void expungeInternal()
                                 throws java.lang.Exception
Throws:
java.lang.Exception

getFirstUnseenInternal

protected abstract int getFirstUnseenInternal()

getFullNameInternal

protected abstract java.lang.String getFullNameInternal()
                                                 throws java.lang.Exception
Throws:
java.lang.Exception

getMessageInternal

protected abstract com.icegreen.greenmail.store.SimpleStoredMessage getMessageInternal(long uid)
                                                                                throws java.lang.Exception
Throws:
java.lang.Exception

getMessageCountInternal

protected abstract int getMessageCountInternal()

getMessagesInternal

protected abstract java.util.List getMessagesInternal()

getMessagesInternal

protected abstract java.util.List getMessagesInternal(com.icegreen.greenmail.foedus.util.MsgRangeFilter msgRangeFilter)

getMsnInternal

protected abstract int getMsnInternal(long uid)
                               throws java.lang.Exception
Throws:
java.lang.Exception

getNameInternal

protected abstract java.lang.String getNameInternal()

getMessageUidsInternal

protected abstract long[] getMessageUidsInternal()

getNonDeletedMessagesInternal

protected abstract java.util.List getNonDeletedMessagesInternal()

getPermanentFlagsInternal

protected abstract javax.mail.Flags getPermanentFlagsInternal()

getRecentCountInternal

protected abstract int getRecentCountInternal(boolean reset)

getUidNextInternal

protected abstract long getUidNextInternal()

getUidValidityInternal

protected abstract long getUidValidityInternal()

getUnseenCountInternal

protected abstract int getUnseenCountInternal()

isSelectableInternal

protected abstract boolean isSelectableInternal()

replaceFlagsInternal

protected abstract void replaceFlagsInternal(javax.mail.Flags flags,
                                             long uid,
                                             com.icegreen.greenmail.store.FolderListener silentListener,
                                             boolean addUid)
                                      throws java.lang.Exception
Throws:
java.lang.Exception

setFlagsInternal

protected abstract void setFlagsInternal(javax.mail.Flags flags,
                                         boolean value,
                                         long uid,
                                         com.icegreen.greenmail.store.FolderListener silentListener,
                                         boolean addUid)
                                  throws java.lang.Exception
Throws:
java.lang.Exception


Copyright © 2005 - 2010 Alfresco Software, Inc. All Rights Reserved.