com.icegreen.greenmail.store
Class InMemoryStore

java.lang.Object
  extended by com.icegreen.greenmail.store.InMemoryStore
All Implemented Interfaces:
ImapConstants, Store

public class InMemoryStore
extends Object
implements Store, ImapConstants

A simple in-memory implementation of Store, used for testing and development. Note: this implementation does not persist *anything* to disk.

Version:
$Revision: 109034 $
Author:
Darrell DeBoer

Field Summary
 
Fields inherited from interface com.icegreen.greenmail.imap.ImapConstants
BAD, BYE, CAPABILITIES, HIERARCHY_DELIMITER, HIERARCHY_DELIMITER_CHAR, INBOX_NAME, NAMESPACE_PREFIX, NAMESPACE_PREFIX_CHAR, NO, OK, SP, UNTAGGED, USER_NAMESPACE, VERSION
 
Constructor Summary
InMemoryStore()
           
 
Method Summary
 MailFolder createMailbox(MailFolder parent, String mailboxName, boolean selectable)
          Creates a mailbox under the supplied parent with the given name.
 void deleteMailbox(MailFolder folder)
          Deletes the supplied mailbox from the store.
 Collection getChildren(MailFolder parent)
           
 MailFolder getMailbox(MailFolder parent, String name)
          Looks up a child mailbox of the supplied parent with the name given.
 MailFolder getMailbox(String absoluteMailboxName)
          Retrieves a mailbox based on a fully qualified name.
 Collection listMailboxes(String searchPattern)
          Lists all of the mailboxes in the store which have a name matching the supplied search pattern.
 void renameMailbox(MailFolder existingFolder, String newName)
          Renames the mailbox with the new name.
 MailFolder setSelectable(MailFolder folder, boolean selectable)
          Tells the store to make the supplied mailbox selectable or not (able to store messages).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InMemoryStore

public InMemoryStore()
Method Detail

getMailbox

public MailFolder getMailbox(String absoluteMailboxName)
Description copied from interface: Store
Retrieves a mailbox based on a fully qualified name.

Specified by:
getMailbox in interface Store
Returns:
The mailbox if present, or null if not.

getMailbox

public MailFolder getMailbox(MailFolder parent,
                             String name)
Description copied from interface: Store
Looks up a child mailbox of the supplied parent with the name given.

Specified by:
getMailbox in interface Store
Parameters:
parent - The parent mailbox
name - The name of the child to lookup
Returns:
The child mailbox, or null if not found.

createMailbox

public MailFolder createMailbox(MailFolder parent,
                                String mailboxName,
                                boolean selectable)
                         throws FolderException
Description copied from interface: Store
Creates a mailbox under the supplied parent with the given name. If specified, the mailbox created will be made selectable (able to store messages).

Specified by:
createMailbox in interface Store
Parameters:
parent - A mailbox from this store.
mailboxName - The name of the mailbox to create.
selectable - If true, the mailbox will be created to store messages.
Returns:
The created mailbox
Throws:
FolderException - If the mailbox couldn't be created.

deleteMailbox

public void deleteMailbox(MailFolder folder)
                   throws FolderException
Description copied from interface: Store
Deletes the supplied mailbox from the store. To be deleted, mailboxes must be empty of messages, and not have any children.

Specified by:
deleteMailbox in interface Store
Parameters:
folder - A mailbox from this store.
Throws:
FolderException - If the mailbox couldn't be deleted.

renameMailbox

public void renameMailbox(MailFolder existingFolder,
                          String newName)
                   throws FolderException
Description copied from interface: Store
Renames the mailbox with the new name.

Specified by:
renameMailbox in interface Store
Parameters:
existingFolder - A mailbox from this store.
newName - The new name for the mailbox.
Throws:
FolderException - If the mailbox couldn't be renamed

getChildren

public Collection getChildren(MailFolder parent)
Specified by:
getChildren in interface Store
Parameters:
parent - A mailbox from this store.
Returns:
A read-only collection of MailFolder instances, which are the children of the supplied parent.

setSelectable

public MailFolder setSelectable(MailFolder folder,
                                boolean selectable)
Description copied from interface: Store
Tells the store to make the supplied mailbox selectable or not (able to store messages). The returned mailbox may be a new instance, and the supplied mailbox may no longer be valid.

Specified by:
setSelectable in interface Store
Parameters:
folder - The mailbox to modify.
selectable - Whether this mailbox should be able to store messages.
Returns:
The modified mailbox

listMailboxes

public Collection listMailboxes(String searchPattern)
                         throws FolderException
Description copied from interface: Store
Lists all of the mailboxes in the store which have a name matching the supplied search pattern.
 Valid wildcards are:
          '*' - matches any number of characters, including the hierarchy delimiter
          '%' - matches any number of characters, but not the hierarchy delimiter

Specified by:
listMailboxes in interface Store
Parameters:
searchPattern - The pattern to match mailboxes
Returns:
A read-only collection of mailboxes which match this pattern
Throws:
FolderException - If the list operation failed
See Also:
Store.listMailboxes(java.lang.String)