com.openexchange.mail.cache
Class MailAccessCache

java.lang.Object
  extended by com.openexchange.mail.cache.MailAccessCache

public final class MailAccessCache
extends java.lang.Object

MailAccessCache - A very volatile cache for already connected instances of MailAccess.

Only one mail access can be cached per user and is dedicated to fasten sequential mail requests

Author:
Thorben Betten

Method Summary
 void clearUserEntries(com.openexchange.session.Session session)
          Clears the cache entries kept for specified user.
 boolean containsMailAccess(com.openexchange.session.Session session, int accountId)
          Checks if cache already holds a user-bound mail access for specified account.
static MailAccessCache getInstance()
          Gets the singleton instance.
 void initCache()
          Initializes cache reference.
 boolean putMailAccess(com.openexchange.session.Session session, int accountId, MailAccess<? extends IMailFolderStorage,? extends IMailMessageStorage> mailAccess)
          Puts given mail access into cache if none user-bound connection is already contained in cache.
 void releaseCache()
          Releases cache reference.
static void releaseInstance()
          Releases the singleton instance.
 MailAccess<? extends IMailFolderStorage,? extends IMailMessageStorage> removeMailAccess(com.openexchange.session.Session session, int accountId)
          Removes and returns a mail access from cache.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static MailAccessCache getInstance()
                                   throws MailException
Gets the singleton instance.

Returns:
The singleton instance
Throws:
MailException - If instance initialization fails

releaseInstance

public static void releaseInstance()
Releases the singleton instance.


initCache

public void initCache()
               throws MailException
Initializes cache reference.

Throws:
MailException - If initializing the time-out map reference fails

releaseCache

public void releaseCache()
Releases cache reference.


removeMailAccess

public MailAccess<? extends IMailFolderStorage,? extends IMailMessageStorage> removeMailAccess(com.openexchange.session.Session session,
                                                                                               int accountId)
Removes and returns a mail access from cache.

Parameters:
session - The session
accountId - The account ID
Returns:
An active instance of MailAccess or null

putMailAccess

public boolean putMailAccess(com.openexchange.session.Session session,
                             int accountId,
                             MailAccess<? extends IMailFolderStorage,? extends IMailMessageStorage> mailAccess)
Puts given mail access into cache if none user-bound connection is already contained in cache.

Parameters:
session - The session
accountId - The account ID
mailAccess - The mail access to put into cache
Returns:
true if mail access could be successfully cached; otherwise false

containsMailAccess

public boolean containsMailAccess(com.openexchange.session.Session session,
                                  int accountId)
Checks if cache already holds a user-bound mail access for specified account.

Parameters:
session - The session
accountId - The account ID
Returns:
true if a user-bound mail access is already present in cache; otherwise false

clearUserEntries

public void clearUserEntries(com.openexchange.session.Session session)
                      throws MailException
Clears the cache entries kept for specified user.

Parameters:
session - The session
Throws:
MailException - If clearing user entries fails