org.abstracthorizon.mercury.accounts.spring
Class MaildirKeystoreStorageManager

java.lang.Object
  extended by org.abstracthorizon.mercury.common.SimpleStorageManager
      extended by org.abstracthorizon.mercury.accounts.spring.MaildirKeystoreStorageManager
All Implemented Interfaces:
ConfigurableStorageManager, StorageManager

public class MaildirKeystoreStorageManager
extends SimpleStorageManager
implements ConfigurableStorageManager

Storage manager that uses maildir java mail provider for storing messages, properties file for defining storages, domains and aliases and keystore for stroring passwords.

Author:
Daniel Sendula

Nested Class Summary
 
Nested classes/interfaces inherited from class org.abstracthorizon.mercury.common.SimpleStorageManager
SimpleStorageManager.Entry, SimpleStorageManager.URLNameFix
 
Field Summary
protected  org.slf4j.Logger logger
          Logger
 
Fields inherited from class org.abstracthorizon.mercury.common.SimpleStorageManager
autosave, caseSensitive, propertiesFile, props, session
 
Constructor Summary
MaildirKeystoreStorageManager()
          Constructor
 
Method Summary
 void addDomain(String domain)
          Adds new domain
protected  void addEntryToStore(KeyStore keyStore, String entry, char[] password)
          Adds entry to a keystore
 void addMailbox(String mailbox, String domain, char[] password)
          Adds new mailbox
 void changeMailboxPassword(String mailbox, String domain, char[] newPassword)
          Changes password of a mailbox.
 void changeMailboxPassword(String mailbox, String domain, char[] oldPassword, char[] newPassword)
          Changes mailboxes password.
protected  String decorateStoreString(String mailbox, String domain, String storeString)
           
protected  File ensureExists(String mailbox, String domain)
          Ensures that mailbox (in domain) exists
 String[] getDomains()
          Returns domains
 File getKeyStoreFile()
          Returns keystore resource
 String getKeyStoreProvider()
          Returns keystore provider
 String getKeyStoreType()
          Returns keystore type
 File getMailboxesPath()
          Returns mailboxes path
 String[] getMailboxNames()
          Returns an array of mailbox names in all domains
 String[] getMailboxNames(String domain)
          Returns an array of mailbox names for given domain
protected  KeyStore loadKeyStore()
          Loads keystore
protected  void makeMaildirLayout(File mailbox)
          Makes maildir layout of an mailbox
 boolean removeDomain(String domain)
          Removes domain
 boolean removeMailbox(String mailbox, String domain)
          Removes mailbox
 void setKeyStoreFile(File keystoreFile)
          Keystore location
 void setKeyStorePassword(String password)
          Sets keystore password
 void setKeyStoreProvider(String provider)
          Sets keystore provider
 void setKeyStoreType(String type)
          Sets keystore type
 void setMailboxesPath(File mailboxesPath)
          Sets mailboxes path
 void setMainDomain(String domain)
          Sets main domain
protected  void storeKeyStore(KeyStore keystore)
          Stores keystore back to provided resource
 
Methods inherited from class org.abstracthorizon.mercury.common.SimpleStorageManager
addAlias, addEntry, addMailbox, createURLName, findInbox, findStore, getAliases, getJavaMailSession, getMainDomain, getPropertiesFile, getPropertiesInputStream, getPropertiesOutputStream, hasDomain, init, isAutosave, isCaseSensitive, load, makeEntry, obtainStore, obtainStoreString, removeAlias, save, setAutosave, setCaseSensitive, setJavaMailSession, setPropertiesFile, toLowerCase
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.abstracthorizon.mercury.common.StorageManager
findInbox, findStore, getMainDomain, hasDomain
 

Field Detail

logger

protected org.slf4j.Logger logger
Logger

Constructor Detail

MaildirKeystoreStorageManager

public MaildirKeystoreStorageManager()
Constructor

Method Detail

setKeyStorePassword

public void setKeyStorePassword(String password)
Sets keystore password

Parameters:
password - keystore password

setKeyStoreFile

public void setKeyStoreFile(File keystoreFile)
                     throws IOException
Keystore location

Parameters:
keystoreLocation - keystore location
Throws:
IOException

getKeyStoreFile

public File getKeyStoreFile()
Returns keystore resource

Returns:
keystore resource

setMailboxesPath

public void setMailboxesPath(File mailboxesPath)
                      throws IOException
Sets mailboxes path

Parameters:
mailboxesPath - path mailboxes are defined on
Throws:
IOException

getMailboxesPath

public File getMailboxesPath()
Returns mailboxes path

Returns:
mailboxes path

setKeyStoreType

public void setKeyStoreType(String type)
Sets keystore type

Parameters:
type - keystore type

getKeyStoreType

public String getKeyStoreType()
Returns keystore type

Returns:
keystore type

setKeyStoreProvider

public void setKeyStoreProvider(String provider)
Sets keystore provider

Parameters:
provider - keystore provider

getKeyStoreProvider

public String getKeyStoreProvider()
Returns keystore provider

Returns:
keystore provider

loadKeyStore

protected KeyStore loadKeyStore()
                         throws KeyStoreException,
                                NoSuchProviderException,
                                MalformedURLException,
                                IOException,
                                NoSuchAlgorithmException,
                                CertificateException
Loads keystore

Returns:
keystore
Throws:
KeyStoreException
NoSuchProviderException
MalformedURLException
IOException
NoSuchAlgorithmException
CertificateException

storeKeyStore

protected void storeKeyStore(KeyStore keystore)
                      throws KeyStoreException,
                             NoSuchProviderException,
                             MalformedURLException,
                             IOException,
                             NoSuchAlgorithmException,
                             CertificateException
Stores keystore back to provided resource

Parameters:
keystore - keystore to be stored
Throws:
KeyStoreException
NoSuchProviderException
MalformedURLException
IOException
NoSuchAlgorithmException
CertificateException

addEntryToStore

protected void addEntryToStore(KeyStore keyStore,
                               String entry,
                               char[] password)
                        throws NoSuchAlgorithmException,
                               KeyStoreException,
                               InvalidKeyException,
                               SecurityException,
                               SignatureException,
                               CertificateEncodingException,
                               IllegalStateException,
                               NoSuchProviderException
Adds entry to a keystore

Parameters:
keyStore - keystore
entry - entry
password - password an entry
Throws:
NoSuchAlgorithmException
KeyStoreException
InvalidKeyException
SecurityException
SignatureException
NoSuchProviderException
IllegalStateException
CertificateEncodingException

decorateStoreString

protected String decorateStoreString(String mailbox,
                                     String domain,
                                     String storeString)
Overrides:
decorateStoreString in class SimpleStorageManager

ensureExists

protected File ensureExists(String mailbox,
                            String domain)
Ensures that mailbox (in domain) exists

Parameters:
mailbox - mailbox
domain - domain
Returns:
a file of the mailbox (maildir)

makeMaildirLayout

protected void makeMaildirLayout(File mailbox)
Makes maildir layout of an mailbox

Parameters:
mailbox - mailbox path

addMailbox

public void addMailbox(String mailbox,
                       String domain,
                       char[] password)
Adds new mailbox

Specified by:
addMailbox in interface ConfigurableStorageManager
Parameters:
mailbox - mailbox
domain - domain
password - password

removeMailbox

public boolean removeMailbox(String mailbox,
                             String domain)
Removes mailbox

Specified by:
removeMailbox in interface ConfigurableStorageManager
Overrides:
removeMailbox in class SimpleStorageManager
Parameters:
mailbox - mailbox
domain - domain
Returns:
true if mailbox existed

changeMailboxPassword

public void changeMailboxPassword(String mailbox,
                                  String domain,
                                  char[] newPassword)
Changes password of a mailbox. This is administrator's function since it requires only new password

Parameters:
mailbox - mailbox
domain - domain
newPassword - new password

changeMailboxPassword

public void changeMailboxPassword(String mailbox,
                                  String domain,
                                  char[] oldPassword,
                                  char[] newPassword)
Changes mailboxes password. This is user's function

Specified by:
changeMailboxPassword in interface ConfigurableStorageManager
Parameters:
mailbox - mailbox
domain - domain
oldPassword - old password
newPassword - new password

getMailboxNames

public String[] getMailboxNames()
Returns an array of mailbox names in all domains

Specified by:
getMailboxNames in interface ConfigurableStorageManager
Overrides:
getMailboxNames in class SimpleStorageManager
Returns:
an array of mailbox names

getMailboxNames

public String[] getMailboxNames(String domain)
Returns an array of mailbox names for given domain

Specified by:
getMailboxNames in interface ConfigurableStorageManager
Overrides:
getMailboxNames in class SimpleStorageManager
Parameters:
domain - domain
Returns:
an array of mailbox names for given domain

addDomain

public void addDomain(String domain)
Adds new domain

Specified by:
addDomain in interface ConfigurableStorageManager
Overrides:
addDomain in class SimpleStorageManager
Parameters:
domain -

removeDomain

public boolean removeDomain(String domain)
Removes domain

Specified by:
removeDomain in interface ConfigurableStorageManager
Overrides:
removeDomain in class SimpleStorageManager
Parameters:
domain - domain
Returns:
true if domain existed

getDomains

public String[] getDomains()
Returns domains

Specified by:
getDomains in interface ConfigurableStorageManager
Overrides:
getDomains in class SimpleStorageManager
Returns:
domains

setMainDomain

public void setMainDomain(String domain)
Sets main domain

Specified by:
setMainDomain in interface ConfigurableStorageManager
Overrides:
setMainDomain in class SimpleStorageManager
Parameters:
domain -


Copyright © 2005-2009 Abstract Horizon. All Rights Reserved.