Class 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.
    Author:
    Ivan Rybnikov
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      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.
      long copyMessage​(long uid, com.icegreen.greenmail.store.MailFolder toFolder)
      Copies message with the given UID to the specified MailFolder.
      protected abstract long 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.
      void expunge​(long uid)
      Deletes messages marked with Flags.Flag.DELETED.
      protected abstract void expungeInternal()  
      protected abstract void expungeInternal​(long uid)  
      com.icegreen.greenmail.store.SimpleStoredMessage getMessage​(long uid)
      Returns message by its UID.
      protected abstract com.icegreen.greenmail.store.SimpleStoredMessage getMessageInternal​(long uid)  
      java.util.List<com.icegreen.greenmail.store.SimpleStoredMessage> getMessages()
      Returns list of all messages in the folder.
      java.util.List<com.icegreen.greenmail.store.SimpleStoredMessage> getMessages​(com.icegreen.greenmail.foedus.util.MsgRangeFilter msgRangeFilter)
      Returns list of messages by filter.
      protected abstract java.util.List<com.icegreen.greenmail.store.SimpleStoredMessage> getMessagesInternal()  
      protected abstract java.util.List<com.icegreen.greenmail.store.SimpleStoredMessage> getMessagesInternal​(com.icegreen.greenmail.foedus.util.MsgRangeFilter msgRangeFilter)  
      java.util.List<com.icegreen.greenmail.store.SimpleStoredMessage> getNonDeletedMessages()
      Returns the list of messages that have no Flags.Flag.DELETED flag set for current user.
      protected abstract java.util.List<com.icegreen.greenmail.store.SimpleStoredMessage> getNonDeletedMessagesInternal()  
      protected abstract boolean isReadOnly()  
      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)
      Searches the mailbox for messages that match the given searching criteria
      protected abstract long[] searchInternal​(javax.mail.search.SearchTerm searchTerm)  
      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​(com.icegreen.greenmail.mail.MovingMessage mail)
      Not supported.
      void store​(javax.mail.internet.MimeMessage message)
      Not supported.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface com.icegreen.greenmail.store.MailFolder

        getFirstUnseen, getFullName, getMessageCount, getMessageUids, getMsn, getName, getPermanentFlags, getRecentCount, getUidNext, getUidValidity, getUnseenCount, isMarked, isSelectable
    • Field Detail

      • logger

        protected org.apache.commons.logging.Log logger
      • 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:
        parameter - The parameter instance to check.
        name - 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:
        long
        Throws:
        com.icegreen.greenmail.store.FolderException
      • copyMessage

        public long 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
      • expunge

        public void expunge​(long uid)
                     throws com.icegreen.greenmail.store.FolderException
        Deletes messages marked with Flags.Flag.DELETED. Note that this message deletes the messages with current uid
        Specified by:
        expunge in interface com.icegreen.greenmail.store.MailFolder
        Throws:
        com.icegreen.greenmail.store.FolderException
      • 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.
      • getMessages

        public java.util.List<com.icegreen.greenmail.store.SimpleStoredMessage> 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<com.icegreen.greenmail.store.SimpleStoredMessage> 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.
      • getNonDeletedMessages

        public java.util.List<com.icegreen.greenmail.store.SimpleStoredMessage> 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.
      • 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)
        Searches the mailbox for messages that match the given searching criteria
        Specified by:
        search in interface com.icegreen.greenmail.store.MailFolder
        Parameters:
        searchTerm - - search term that contains search criteria.
        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 long 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
      • expungeInternal

        protected abstract void expungeInternal​(long uid)
                                         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
      • getMessagesInternal

        protected abstract java.util.List<com.icegreen.greenmail.store.SimpleStoredMessage> getMessagesInternal()
      • getMessagesInternal

        protected abstract java.util.List<com.icegreen.greenmail.store.SimpleStoredMessage> getMessagesInternal​(com.icegreen.greenmail.foedus.util.MsgRangeFilter msgRangeFilter)
      • getNonDeletedMessagesInternal

        protected abstract java.util.List<com.icegreen.greenmail.store.SimpleStoredMessage> getNonDeletedMessagesInternal()
      • 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
      • searchInternal

        protected abstract long[] searchInternal​(javax.mail.search.SearchTerm searchTerm)
      • 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