1 /*
2 * Copyright (c) 2004-2007 Creative Sphere Limited.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 *
10 * Creative Sphere - initial API and implementation
11 *
12 */
13 package org.abstracthorizon.mercury.common;
14
15 import javax.mail.Folder;
16 import javax.mail.MessagingException;
17 import javax.mail.Store;
18
19 import org.abstracthorizon.mercury.common.exception.UserRejectedException;
20
21 /**
22 * Storage manager
23 *
24 * @author Daniel Sendula
25 */
26 public interface StorageManager {
27
28 /**
29 * Returns local store if user is local or <code>null</code> otherwise. In
30 * case that user is to be rejected an exception is thrown.
31 *
32 * @param mailbox user's mailbox
33 * @param domain user's domain
34 * @throws UserRejectedException in case that user is rejected for any reason
35 * @throws MessagingException in case there is a problem accessing user's mailbox
36 */
37 Store findStore(String mailbox, String domain, char[] password) throws UserRejectedException, MessagingException;
38
39 /**
40 * Returns local store's inbox if user is local or <code>null</code> otherwise. In
41 * case that user is to be rejected an exception is thrown.
42 *
43 * @param mailbox user's mailbox
44 * @param domain user's domain
45 * @throws UserRejectedException in case that user is rejected for any reason
46 * @throws MessagingException in case there is a problem accessing user's mailbox
47 */
48 Folder findInbox(String mailbox, String domain, char[] password) throws UserRejectedException, MessagingException;
49
50 /**
51 * Returns <code>true</code> in case supplied domain is local for this
52 * SMTP server. If this method returns <code>true</code> then
53 *
54 * @param domain domain to be queried
55 * @return <code>true</code> in case supplied domain is local for this SMTP server
56 */
57 boolean hasDomain(String domain);
58
59 /**
60 * Returns a domain this server's session is operating under.
61 *
62 * @return domain name as string
63 */
64 String getMainDomain();
65
66 }