org.alfresco.repo.imap
Class ImapServiceImpl

java.lang.Object
  extended by org.alfresco.repo.imap.ImapServiceImpl
All Implemented Interfaces:
ImapService

public class ImapServiceImpl
extends java.lang.Object
implements ImapService

Since:
3.2

Nested Class Summary
static class ImapServiceImpl.ImapServiceBootstrap
          Bootstrap initialization bean for the service implementation.
 
Constructor Summary
ImapServiceImpl()
           
 
Method Summary
 AlfrescoImapFolder createMailbox(AlfrescoImapUser user, java.lang.String mailboxName)
          Returns a reference to a newly created mailbox.
 void deleteMailbox(AlfrescoImapUser user, java.lang.String mailboxName)
          Deletes an existing MailBox.
 java.lang.String getAlfrescoServerUID()
          This method should returns a unique identifier of Alfresco server.
 java.lang.String getDefaultFromAddress()
           
 FileFolderService getFileFolderService()
           
 javax.mail.Flags getFlags(FileInfo messageInfo)
          Return flags that belong to the specified imap folder.
 AlfrescoImapFolder getFolder(AlfrescoImapUser user, java.lang.String mailboxName)
          Returns a reference to an existing Mailbox.
 NodeRef getMailboxRootRef(java.lang.String mailboxName, java.lang.String userName)
          Get root reference for the specified mailbox
 NodeService getNodeService()
           
 java.lang.String getRepositoryTemplatePath()
           
 ServiceRegistry getServiceRegistry()
           
 java.lang.String getWebApplicationContextUrl()
           
 void init()
           
 java.util.List listMailboxes(AlfrescoImapUser user, java.lang.String mailboxPattern)
          Returns an collection of mailboxes.
 java.util.List listSubscribedMailboxes(AlfrescoImapUser user, java.lang.String mailboxPattern)
          Returns an collection of subscribed mailboxes.
 void renameMailbox(AlfrescoImapUser user, java.lang.String oldMailboxName, java.lang.String newMailboxName)
          Renames an existing mailbox.
 java.util.List searchFiles(NodeRef contextNodeRef, java.lang.String namePattern, boolean includeSubFolders)
          Search for files in specified context
 java.util.List searchFolders(NodeRef contextNodeRef, java.lang.String namePattern, boolean includeSubFolders, AlfrescoImapConst.ImapViewMode viewMode)
          Search for mailboxes in specified context
 java.util.List searchMails(NodeRef contextNodeRef, java.lang.String namePattern, AlfrescoImapConst.ImapViewMode viewMode, boolean includeSubFolders)
          Search for emails in specified folder depend on view mode.
 void setDefaultFromAddress(java.lang.String defaultFromAddress)
           
 void setExtractAttachmentsEnabled(boolean extractAttachmentsEnabled)
           
 void setFileFolderService(FileFolderService fileFolderService)
           
 void setFlag(FileInfo messageInfo, javax.mail.Flags.Flag flag, boolean value)
          Set flags to the specified imapFolder.
 void setFlags(FileInfo messageInfo, javax.mail.Flags flags, boolean value)
          Set flags to the specified imapFolder.
 void setIgnoreExtractionFolders(RepositoryFolderConfigBean[] ignoreExtractionFolders)
           
 void setImapConfigMountPoints(ImapConfigMountPointsBean[] imapConfigMountPointsBeans)
           
 void setImapHome(RepositoryFolderConfigBean imapHomeConfigBean)
           
 void setNodeService(NodeService nodeService)
           
 void setRepositoryTemplatePath(java.lang.String repositoryTemplatePath)
           
 void setServiceRegistry(ServiceRegistry serviceRegistry)
           
 void setSysAdminParams(SysAdminParams sysAdminParams)
           
 void shutdown()
           
 void startup()
           
 void subscribe(AlfrescoImapUser user, java.lang.String mailbox)
          Subscribes a user to a mailbox.
 void unsubscribe(AlfrescoImapUser user, java.lang.String mailbox)
          Unsubscribes from a given mailbox.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ImapServiceImpl

public ImapServiceImpl()
Method Detail

setSysAdminParams

public void setSysAdminParams(SysAdminParams sysAdminParams)

getFileFolderService

public FileFolderService getFileFolderService()

setFileFolderService

public void setFileFolderService(FileFolderService fileFolderService)

getNodeService

public NodeService getNodeService()

setNodeService

public void setNodeService(NodeService nodeService)

getServiceRegistry

public ServiceRegistry getServiceRegistry()

setServiceRegistry

public void setServiceRegistry(ServiceRegistry serviceRegistry)

setImapHome

public void setImapHome(RepositoryFolderConfigBean imapHomeConfigBean)

getDefaultFromAddress

public java.lang.String getDefaultFromAddress()
Specified by:
getDefaultFromAddress in interface ImapService
Returns:
Default From addreses

setDefaultFromAddress

public void setDefaultFromAddress(java.lang.String defaultFromAddress)

getWebApplicationContextUrl

public java.lang.String getWebApplicationContextUrl()
Specified by:
getWebApplicationContextUrl in interface ImapService
Returns:
Web application context url (e.g. http://localhost:8080/alfresco)

getRepositoryTemplatePath

public java.lang.String getRepositoryTemplatePath()
Specified by:
getRepositoryTemplatePath in interface ImapService
Returns:
Path to the folder containing templates, that will be used for generating body of message in VIRTUAL and MIXED views.

setRepositoryTemplatePath

public void setRepositoryTemplatePath(java.lang.String repositoryTemplatePath)

setImapConfigMountPoints

public void setImapConfigMountPoints(ImapConfigMountPointsBean[] imapConfigMountPointsBeans)

setIgnoreExtractionFolders

public void setIgnoreExtractionFolders(RepositoryFolderConfigBean[] ignoreExtractionFolders)

setExtractAttachmentsEnabled

public void setExtractAttachmentsEnabled(boolean extractAttachmentsEnabled)

init

public void init()

startup

public void startup()

shutdown

public void shutdown()

listSubscribedMailboxes

public java.util.List listSubscribedMailboxes(AlfrescoImapUser user,
                                              java.lang.String mailboxPattern)
Description copied from interface: ImapService
Returns an collection of subscribed mailboxes. This method serves LSUB command of the IMAP protocol.

Specified by:
listSubscribedMailboxes in interface ImapService
Parameters:
user - User making the request
mailboxPattern - String name of a mailbox possible including a wildcard.
Returns:
Collection of mailboxes matching the pattern.

listMailboxes

public java.util.List listMailboxes(AlfrescoImapUser user,
                                    java.lang.String mailboxPattern)
Description copied from interface: ImapService
Returns an collection of mailboxes. This method serves LIST command of the IMAP protocol.

Specified by:
listMailboxes in interface ImapService
Parameters:
user - User making the request
mailboxPattern - String name of a mailbox possible including a wildcard.
Returns:
Collection of mailboxes matching the pattern.

createMailbox

public AlfrescoImapFolder createMailbox(AlfrescoImapUser user,
                                        java.lang.String mailboxName)
Description copied from interface: ImapService
Returns a reference to a newly created mailbox. The request should specify a mailbox that does not already exist on this server, that could exist on this server and that the user has rights to create. This method serves CREATE command of the IMAP protocol.

Specified by:
createMailbox in interface ImapService
Parameters:
user - User making the request.
mailboxName - String name of the target
Returns:
an Mailbox reference.

deleteMailbox

public void deleteMailbox(AlfrescoImapUser user,
                          java.lang.String mailboxName)
Description copied from interface: ImapService
Deletes an existing MailBox. Specified mailbox must already exist on this server, and the user must have rights to delete it. This method serves DELETE command of the IMAP protocol.

Specified by:
deleteMailbox in interface ImapService
Parameters:
user - User making the request.
mailboxName - String name of the target

renameMailbox

public void renameMailbox(AlfrescoImapUser user,
                          java.lang.String oldMailboxName,
                          java.lang.String newMailboxName)
Description copied from interface: ImapService
Renames an existing mailbox. The specified mailbox must already exist, the requested name must not exist already but must be able to be created and the user must have rights to delete the existing mailbox and create a mailbox with the new name. Any inferior hierarchical names must also be renamed. If INBOX is renamed, the contents of INBOX are transferred to a new mailbox with the new name, but INBOX is not deleted. If INBOX has inferior mailbox these are not renamed. This method serves RENAME command of the IMAP protocol.

Specified by:
renameMailbox in interface ImapService
Parameters:
user - User making the request.
oldMailboxName - String name of the existing folder
newMailboxName - String target new name

getFolder

public AlfrescoImapFolder getFolder(AlfrescoImapUser user,
                                    java.lang.String mailboxName)
Description copied from interface: ImapService
Returns a reference to an existing Mailbox. The requested mailbox must already exists on this server and the requesting user must have at least lookup rights.

It is also can be used by to obtain hierarchy delimiter by the LIST command:

C: 2 list "" ""

S: * LIST () "." ""

S: 2 OK LIST completed.

Specified by:
getFolder in interface ImapService
Parameters:
user - User making the request.
mailboxName - String name of the target.
Returns:
an Mailbox reference.

searchFolders

public java.util.List searchFolders(NodeRef contextNodeRef,
                                    java.lang.String namePattern,
                                    boolean includeSubFolders,
                                    AlfrescoImapConst.ImapViewMode viewMode)
Search for mailboxes in specified context

Specified by:
searchFolders in interface ImapService
Parameters:
contextNodeRef - context folder for search
namePattern - name pattern for search
includeSubFolders - include SubFolders
isVirtualView - is folder in "Virtual" View
Returns:
list of mailboxes

searchFiles

public java.util.List searchFiles(NodeRef contextNodeRef,
                                  java.lang.String namePattern,
                                  boolean includeSubFolders)
Search for files in specified context

Specified by:
searchFiles in interface ImapService
Parameters:
contextNodeRef - context folder for search
namePattern - name pattern for search
searchType - type for search
includeSubFolders - include SubFolders
Returns:
list of files with specifed type

searchMails

public java.util.List searchMails(NodeRef contextNodeRef,
                                  java.lang.String namePattern,
                                  AlfrescoImapConst.ImapViewMode viewMode,
                                  boolean includeSubFolders)
Search for emails in specified folder depend on view mode.

Specified by:
searchMails in interface ImapService
Parameters:
contextNodeRef - context folder for search
namePattern - name pattern for search
viewMode - context folder view mode
includeSubFolders - includeSubFolders
Returns:
list of emails that context folder contains.

subscribe

public void subscribe(AlfrescoImapUser user,
                      java.lang.String mailbox)
Description copied from interface: ImapService
Subscribes a user to a mailbox. The mailbox must exist locally and the user must have rights to modify it.

This method serves SUBSCRIBE command of the IMAP protocol.

Specified by:
subscribe in interface ImapService
Parameters:
user - User making the request
mailbox - String representation of a mailbox name.

unsubscribe

public void unsubscribe(AlfrescoImapUser user,
                        java.lang.String mailbox)
Description copied from interface: ImapService
Unsubscribes from a given mailbox.

This method serves UNSUBSCRIBE command of the IMAP protocol.

Specified by:
unsubscribe in interface ImapService
Parameters:
user - User making the request
mailbox - String representation of a mailbox name.

getFlags

public javax.mail.Flags getFlags(FileInfo messageInfo)
Return flags that belong to the specified imap folder.

Specified by:
getFlags in interface ImapService
Parameters:
messageInfo - imap folder info.
Returns:
flags.

setFlags

public void setFlags(FileInfo messageInfo,
                     javax.mail.Flags flags,
                     boolean value)
Set flags to the specified imapFolder.

Specified by:
setFlags in interface ImapService
Parameters:
messageInfo - FileInfo of imap Folder.
flags - flags to set.
value - value to set.

setFlag

public void setFlag(FileInfo messageInfo,
                    javax.mail.Flags.Flag flag,
                    boolean value)
Set flags to the specified imapFolder.

Specified by:
setFlag in interface ImapService
Parameters:
messageInfo - FileInfo of imap Folder
flag - flag to set.
value - value value to set.

getMailboxRootRef

public NodeRef getMailboxRootRef(java.lang.String mailboxName,
                                 java.lang.String userName)
Get root reference for the specified mailbox

Specified by:
getMailboxRootRef in interface ImapService
Parameters:
mailboxName - mailbox name in IMAP client.
userName -
Returns:
root reference for the specified mailbox

getAlfrescoServerUID

public java.lang.String getAlfrescoServerUID()
This method should returns a unique identifier of Alfresco server. The possible UID may be calculated based on IP address, Server port, MAC address, Web Application context. This UID should be parseable into initial components. This necessary for the implementation of the following case: If the message being copied (e.g. drag-and-drop) between two different Alfresco accounts in the IMAP client, we must unambiguously identify from which Alfresco server this message being copied. The message itself does not contain content data, so we must download it from the initial server (e.g. using download content servlet) and save it into destination repository.

Returns:
String representation of unique identifier of Alfresco server


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