You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rd...@apache.org on 2008/08/27 21:27:28 UTC
svn commit: r689578 - in /james/server/trunk:
imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/
imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/
imap-mailbox-processo...
Author: rdonkin
Date: Wed Aug 27 12:27:27 2008
New Revision: 689578
URL: http://svn.apache.org/viewvc?rev=689578&view=rev
Log:
Decouple IMAP processing from user-api. Deployment adapts JAMES core API to protocol specific interfaces. JAMES-860
Added:
james/server/trunk/mailbox-library/src/main/java/org/apache/james/mailboxmanager/manager/SubscriptionException.java
james/server/trunk/phoenix-deployment/src/java/org/apache/james/mailboxmanager/torque/PheonixUserManager.java
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/UserManager.java
Removed:
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/IMAPSubscriber.java
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/SubscriptionException.java
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/UserMetaDataIMAPSubscriber.java
james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/UserMetaDataIMAPSubscriberTest.java
Modified:
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/AbstractMailboxAwareProcessor.java
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/ImapSessionUtils.java
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/SelectedMailboxSessionImpl.java
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/CopyProcessor.java
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/Imap4Rev1ProcessorFactory.java
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/LSubProcessor.java
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/ListProcessor.java
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/LoginProcessor.java
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/StoreProcessor.java
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/SubscribeProcessor.java
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/UnsubscribeProcessor.java
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/main/DefaultImapProcessorFactory.java
james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/LSubProcessorTest.java
james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/SearchProcessorTest.java
james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/fetch/PartialFetchBodyElementTest.java
james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/fetch/PartialWritableByteChannelTest.java
james/server/trunk/mailbox-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxManager.java
james/server/trunk/phoenix-deployment/src/java/org/apache/james/experimental/imapserver/ImapHandler.java
james/server/trunk/phoenix-deployment/src/java/org/apache/james/imapserver/phoenix/PhoenixImapProcessorFactory.java
james/server/trunk/phoenix-deployment/src/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManagerFactory.java
james/server/trunk/phoenix-deployment/src/test/org/apache/james/experimental/imapserver/HostSystemFactory.java
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/mock/TorqueMailboxManagerProviderSingleton.java
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/AbstractMailboxAwareProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/AbstractMailboxAwareProcessor.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/AbstractMailboxAwareProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/AbstractMailboxAwareProcessor.java Wed Aug 27 12:27:27 2008
@@ -21,7 +21,6 @@
import org.apache.james.api.imap.message.response.imap4rev1.StatusResponseFactory;
import org.apache.james.api.imap.process.ImapProcessor;
import org.apache.james.api.imap.process.ImapSession;
-import org.apache.james.api.user.User;
import org.apache.james.mailboxmanager.MailboxManagerException;
import org.apache.james.mailboxmanager.MailboxSession;
import org.apache.james.mailboxmanager.manager.MailboxManager;
@@ -38,13 +37,13 @@
}
public String buildFullName(final ImapSession session, String mailboxName) throws MailboxManagerException {
- User user = ImapSessionUtils.getUser(session);
+ final String user = ImapSessionUtils.getUserName(session);
return buildFullName(mailboxName, user);
}
- private String buildFullName(String mailboxName, User user) throws MailboxManagerException {
+ private String buildFullName(String mailboxName, String user) throws MailboxManagerException {
if (!mailboxName.startsWith(NAMESPACE_PREFIX)) {
- mailboxName = mailboxManagerProvider.getMailboxManager().resolve(user.getUserName(),mailboxName);
+ mailboxName = mailboxManagerProvider.getMailboxManager().resolve(user,mailboxName);
}
return mailboxName;
}
@@ -52,21 +51,29 @@
public MailboxManager getMailboxManager( final ImapSession session ) throws MailboxManagerException {
// TODO: removed badly implemented and ineffective check that mailbox user matches current user
// TODO: add check into user login methods
+ // TODO: shouldn't need to cache mailbox manager
+ // TODO: consolidate API by deleting provider and supply manager direct
MailboxManager result = (MailboxManager) session.getAttribute( ImapSessionUtils.MAILBOX_MANAGER_ATTRIBUTE_SESSION_KEY );
if (result == null) {
- // TODO: handle null user
- final User user = ImapSessionUtils.getUser(session);
result = mailboxManagerProvider.getMailboxManager();
- result.getMailbox(buildFullName(MailboxManager.INBOX, user), true);
- // TODO: reconsider decision not to sunchronise
- // TODO: mailbox creation is ATM an expensive operation
- // TODO: so caching is required
- // TODO: caching in the session seems like the wrong design decision, though
- // TODO: the mailbox provider should perform any caching that is required
- session.setAttribute( ImapSessionUtils.MAILBOX_MANAGER_ATTRIBUTE_SESSION_KEY, result );
- if (ImapSessionUtils.getMailboxSession(session) == null) {
- final MailboxSession mailboxSession = (MailboxSession) result.createSession();
- ImapSessionUtils.setMailboxSession(session, mailboxSession);
+ //
+ // Mailbox manager is the primary point of contact
+ // But not need to create mailbox until user is logged in
+ //
+ final String user = ImapSessionUtils.getUserName(session);
+ if (user != null)
+ {
+ result.getMailbox(buildFullName(MailboxManager.INBOX, user), true);
+ // TODO: reconsider decision not to sunchronise
+ // TODO: mailbox creation is ATM an expensive operation
+ // TODO: so caching is required
+ // TODO: caching in the session seems like the wrong design decision, though
+ // TODO: the mailbox provider should perform any caching that is required
+ session.setAttribute( ImapSessionUtils.MAILBOX_MANAGER_ATTRIBUTE_SESSION_KEY, result );
+ if (ImapSessionUtils.getMailboxSession(session) == null) {
+ final MailboxSession mailboxSession = (MailboxSession) result.createSession();
+ ImapSessionUtils.setMailboxSession(session, mailboxSession);
+ }
}
}
return result;
Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/ImapSessionUtils.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/ImapSessionUtils.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/ImapSessionUtils.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/ImapSessionUtils.java Wed Aug 27 12:27:27 2008
@@ -25,7 +25,6 @@
import org.apache.james.api.imap.message.response.ImapResponseMessage;
import org.apache.james.api.imap.process.ImapSession;
import org.apache.james.api.imap.process.ImapProcessor.Responder;
-import org.apache.james.api.user.User;
import org.apache.james.imap.message.response.base.AbstractImapResponse;
import org.apache.james.mailboxmanager.MailboxSession;
import org.apache.james.mailboxmanager.mailbox.Mailbox;
@@ -69,12 +68,12 @@
session.setAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY, mailboxSession);
}
- public static User getUser( final ImapSession session ) {
- final User result = (User) session.getAttribute(MAILBOX_USER_ATTRIBUTE_SESSION_KEY);
+ public static String getUserName( final ImapSession session ) {
+ final String result = (String) session.getAttribute(MAILBOX_USER_ATTRIBUTE_SESSION_KEY);
return result;
}
- public static void setUser( final ImapSession session, final User user) {
+ public static void setUserName( final ImapSession session, final String user) {
session.setAttribute(MAILBOX_USER_ATTRIBUTE_SESSION_KEY, user);
}
Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/SelectedMailboxSessionImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/SelectedMailboxSessionImpl.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/SelectedMailboxSessionImpl.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/SelectedMailboxSessionImpl.java Wed Aug 27 12:27:27 2008
@@ -35,9 +35,9 @@
import org.apache.james.imap.message.response.imap4rev1.FetchResponse;
import org.apache.james.imap.message.response.imap4rev1.RecentResponse;
import org.apache.james.imap.message.response.imap4rev1.status.UntaggedNoResponse;
-import org.apache.james.mailboxmanager.MessageRange;
import org.apache.james.mailboxmanager.MailboxManagerException;
import org.apache.james.mailboxmanager.MailboxSession;
+import org.apache.james.mailboxmanager.MessageRange;
import org.apache.james.mailboxmanager.MessageResult;
import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
import org.apache.james.mailboxmanager.impl.MessageRangeImpl;
Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/CopyProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/CopyProcessor.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/CopyProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/CopyProcessor.java Wed Aug 27 12:27:27 2008
@@ -31,9 +31,9 @@
import org.apache.james.imap.message.request.imap4rev1.CopyRequest;
import org.apache.james.imapserver.processor.base.AbstractMailboxAwareProcessor;
import org.apache.james.imapserver.processor.base.ImapSessionUtils;
-import org.apache.james.mailboxmanager.MessageRange;
import org.apache.james.mailboxmanager.MailboxManagerException;
import org.apache.james.mailboxmanager.MailboxSession;
+import org.apache.james.mailboxmanager.MessageRange;
import org.apache.james.mailboxmanager.impl.MessageRangeImpl;
import org.apache.james.mailboxmanager.mailbox.Mailbox;
import org.apache.james.mailboxmanager.manager.MailboxManager;
Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/Imap4Rev1ProcessorFactory.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/Imap4Rev1ProcessorFactory.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/Imap4Rev1ProcessorFactory.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/Imap4Rev1ProcessorFactory.java Wed Aug 27 12:27:27 2008
@@ -21,7 +21,6 @@
import org.apache.james.api.imap.message.response.imap4rev1.StatusResponseFactory;
import org.apache.james.api.imap.process.ImapProcessor;
-import org.apache.james.api.user.UsersRepository;
import org.apache.james.imapserver.processor.imap4rev1.fetch.FetchProcessor;
import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
@@ -31,10 +30,9 @@
public class Imap4Rev1ProcessorFactory {
public static final ImapProcessor createDefaultChain(
- final ImapProcessor chainEndProcessor, final UsersRepository users,
+ final ImapProcessor chainEndProcessor,
final MailboxManagerProvider mailboxManagerProvider,
- final StatusResponseFactory statusResponseFactory,
- final IMAPSubscriber subscriber) {
+ final StatusResponseFactory statusResponseFactory) {
final LogoutProcessor logoutProcessor = new LogoutProcessor(
chainEndProcessor, statusResponseFactory);
@@ -43,7 +41,7 @@
final CheckProcessor checkProcessor = new CheckProcessor(
capabilityProcessor, statusResponseFactory);
final LoginProcessor loginProcessor = new LoginProcessor(
- checkProcessor, users, statusResponseFactory);
+ checkProcessor, mailboxManagerProvider, statusResponseFactory);
final RenameProcessor renameProcessor = new RenameProcessor(
loginProcessor, mailboxManagerProvider, statusResponseFactory);
final DeleteProcessor deleteProcessor = new DeleteProcessor(
@@ -53,9 +51,9 @@
final CloseProcessor closeProcessor = new CloseProcessor(
createProcessor,statusResponseFactory);
final UnsubscribeProcessor unsubscribeProcessor = new UnsubscribeProcessor(
- closeProcessor, statusResponseFactory, subscriber);
+ closeProcessor, mailboxManagerProvider, statusResponseFactory);
final SubscribeProcessor subscribeProcessor = new SubscribeProcessor(
- unsubscribeProcessor, statusResponseFactory, subscriber);
+ unsubscribeProcessor, mailboxManagerProvider, statusResponseFactory);
final CopyProcessor copyProcessor = new CopyProcessor(
subscribeProcessor, mailboxManagerProvider, statusResponseFactory);
final AuthenticateProcessor authenticateProcessor = new AuthenticateProcessor(
@@ -72,7 +70,7 @@
final StatusProcessor statusProcessor = new StatusProcessor(
noopProcessor, mailboxManagerProvider, statusResponseFactory);
final LSubProcessor lsubProcessor = new LSubProcessor(statusProcessor,
- mailboxManagerProvider, statusResponseFactory, subscriber);
+ mailboxManagerProvider, statusResponseFactory);
final ListProcessor listProcessor = new ListProcessor(lsubProcessor,
mailboxManagerProvider, statusResponseFactory);
final SearchProcessor searchProcessor = new SearchProcessor(
Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/LSubProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/LSubProcessor.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/LSubProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/LSubProcessor.java Wed Aug 27 12:27:27 2008
@@ -31,22 +31,21 @@
import org.apache.james.api.imap.message.response.imap4rev1.StatusResponseFactory;
import org.apache.james.api.imap.process.ImapProcessor;
import org.apache.james.api.imap.process.ImapSession;
-import org.apache.james.api.user.User;
import org.apache.james.imap.message.request.imap4rev1.LsubRequest;
import org.apache.james.imap.message.response.imap4rev1.server.LSubResponse;
import org.apache.james.imapserver.processor.base.AbstractMailboxAwareProcessor;
import org.apache.james.imapserver.processor.base.ImapSessionUtils;
+import org.apache.james.mailboxmanager.MailboxManagerException;
import org.apache.james.mailboxmanager.manager.MailboxExpression;
+import org.apache.james.mailboxmanager.manager.MailboxManager;
import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
+import org.apache.james.mailboxmanager.manager.SubscriptionException;
public class LSubProcessor extends AbstractMailboxAwareProcessor {
-
- final IMAPSubscriber subscriber;
public LSubProcessor(final ImapProcessor next, final MailboxManagerProvider mailboxManagerProvider,
- final StatusResponseFactory factory, final IMAPSubscriber subscriber) {
+ final StatusResponseFactory factory) {
super(next, mailboxManagerProvider, factory);
- this.subscriber = subscriber;
}
protected boolean isAcceptable(ImapMessage message) {
@@ -79,13 +78,17 @@
displayTextKey = exceptionKey;
}
no(command, tag, responder, displayTextKey);
- }
+ } catch (MailboxManagerException e) {
+ getLogger().debug("Subscription failed", e);
+ final HumanReadableTextKey displayTextKey = HumanReadableTextKey.GENERIC_LSUB_FAILURE;
+ no(command, tag, responder, displayTextKey);
+ }
}
- private void listSubscriptions(ImapSession session, Responder responder, final String referenceName, final String mailboxPattern) throws SubscriptionException {
- final User user = ImapSessionUtils.getUser(session);
- final String userName = user.getUserName();
- final Collection mailboxes = subscriber.subscriptions(userName);
+ private void listSubscriptions(ImapSession session, Responder responder, final String referenceName, final String mailboxPattern) throws SubscriptionException, MailboxManagerException {
+ final String userName = ImapSessionUtils.getUserName(session);
+ final MailboxManager manager = getMailboxManager(session);
+ final Collection mailboxes = manager.subscriptions(userName);
final MailboxExpression expression
= new MailboxExpression(referenceName, mailboxPattern, '*', '%');
final Collection mailboxResponses = new ArrayList();
Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/ListProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/ListProcessor.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/ListProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/ListProcessor.java Wed Aug 27 12:27:27 2008
@@ -27,7 +27,6 @@
import org.apache.james.api.imap.message.response.imap4rev1.StatusResponseFactory;
import org.apache.james.api.imap.process.ImapProcessor;
import org.apache.james.api.imap.process.ImapSession;
-import org.apache.james.api.user.User;
import org.apache.james.imap.message.request.imap4rev1.ListRequest;
import org.apache.james.imap.message.response.imap4rev1.server.ListResponse;
import org.apache.james.imapserver.processor.base.AbstractMailboxAwareProcessor;
@@ -78,9 +77,9 @@
final ListResult[] listResults;
- final User user = ImapSessionUtils.getUser(session);
+ final String user = ImapSessionUtils.getUserName(session);
final String personalNamespace = ImapConstants.USER_NAMESPACE
- + ImapConstants.HIERARCHY_DELIMITER_CHAR + user.getUserName();
+ + ImapConstants.HIERARCHY_DELIMITER_CHAR + user;
if (mailboxPattern.length() == 0) {
// An empty mailboxPattern signifies a request for the hierarchy
Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/LoginProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/LoginProcessor.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/LoginProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/LoginProcessor.java Wed Aug 27 12:27:27 2008
@@ -26,28 +26,26 @@
import org.apache.james.api.imap.message.response.imap4rev1.StatusResponseFactory;
import org.apache.james.api.imap.process.ImapProcessor;
import org.apache.james.api.imap.process.ImapSession;
-import org.apache.james.api.user.User;
-import org.apache.james.api.user.UsersRepository;
import org.apache.james.imap.message.request.imap4rev1.LoginRequest;
-import org.apache.james.imapserver.processor.base.AbstractImapRequestProcessor;
+import org.apache.james.imapserver.processor.base.AbstractMailboxAwareProcessor;
import org.apache.james.imapserver.processor.base.ImapSessionUtils;
+import org.apache.james.mailboxmanager.MailboxManagerException;
+import org.apache.james.mailboxmanager.manager.MailboxManager;
+import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
/**
* Processes a <code>LOGIN</code> command.
*/
-public class LoginProcessor extends AbstractImapRequestProcessor {
+public class LoginProcessor extends AbstractMailboxAwareProcessor {
private static final String ATTRIBUTE_NUMBER_OF_FAILURES
= "org.apache.james.imapserver.processor.imap4rev1.LoginProcessor.NUMBER_OF_FAILURES";
// TODO: this should be configurable
private static final int MAX_FAILURES = 3;
-
- private final UsersRepository users;
- public LoginProcessor(final ImapProcessor next, final UsersRepository users,
+ public LoginProcessor(final ImapProcessor next, final MailboxManagerProvider mailboxManagerProvider,
final StatusResponseFactory factory) {
- super(next, factory);
- this.users = users;
+ super(next, mailboxManagerProvider, factory);
}
protected boolean isAcceptable(ImapMessage message) {
@@ -56,29 +54,36 @@
protected void doProcess(ImapRequest message,
ImapSession session, String tag, ImapCommand command, Responder responder) {
- final LoginRequest request = (LoginRequest) message;
- final String userid = request.getUserid();
- final String passwd = request.getPassword();
- if (users.test(userid, passwd)) {
- User user = users.getUserByName(userid);
- session.authenticated();
- ImapSessionUtils.setUser(session, user);
- okComplete(command, tag, responder);
- } else {
- final Integer currentNumberOfFailures = (Integer) session.getAttribute(ATTRIBUTE_NUMBER_OF_FAILURES);
- final int failures;
- if (currentNumberOfFailures == null) {
- failures = 1;
+ try
+ {
+ final LoginRequest request = (LoginRequest) message;
+ final String userid = request.getUserid();
+ final String passwd = request.getPassword();
+ final MailboxManager mailboxManager = getMailboxManager(session);
+ if (mailboxManager.isAuthentic(userid, passwd)) {
+ session.authenticated();
+ ImapSessionUtils.setUserName(session, userid);
+ okComplete(command, tag, responder);
} else {
- failures = currentNumberOfFailures.intValue() + 1;
- }
- if (failures < MAX_FAILURES) {
- session.setAttribute(ATTRIBUTE_NUMBER_OF_FAILURES, new Integer(failures));
- no(command,tag, responder, HumanReadableTextKey.INVALID_LOGIN);
- } else {
- bye(responder, HumanReadableTextKey.TOO_MANY_FAILURES);
- session.logout();
+ final Integer currentNumberOfFailures = (Integer) session.getAttribute(ATTRIBUTE_NUMBER_OF_FAILURES);
+ final int failures;
+ if (currentNumberOfFailures == null) {
+ failures = 1;
+ } else {
+ failures = currentNumberOfFailures.intValue() + 1;
+ }
+ if (failures < MAX_FAILURES) {
+ session.setAttribute(ATTRIBUTE_NUMBER_OF_FAILURES, new Integer(failures));
+ no(command,tag, responder, HumanReadableTextKey.INVALID_LOGIN);
+ } else {
+ bye(responder, HumanReadableTextKey.TOO_MANY_FAILURES);
+ session.logout();
+ }
}
+ } catch (MailboxManagerException e) {
+ getLogger().debug("Login failed", e);
+ final HumanReadableTextKey displayTextKey = HumanReadableTextKey.INVALID_LOGIN;
+ no(command, tag, responder, displayTextKey);
}
}
}
Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/StoreProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/StoreProcessor.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/StoreProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/StoreProcessor.java Wed Aug 27 12:27:27 2008
@@ -35,9 +35,9 @@
import org.apache.james.imap.message.response.imap4rev1.FetchResponse;
import org.apache.james.imapserver.processor.base.AbstractImapRequestProcessor;
import org.apache.james.imapserver.processor.base.ImapSessionUtils;
-import org.apache.james.mailboxmanager.MessageRange;
import org.apache.james.mailboxmanager.MailboxManagerException;
import org.apache.james.mailboxmanager.MailboxSession;
+import org.apache.james.mailboxmanager.MessageRange;
import org.apache.james.mailboxmanager.MessageResult;
import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/SubscribeProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/SubscribeProcessor.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/SubscribeProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/SubscribeProcessor.java Wed Aug 27 12:27:27 2008
@@ -26,19 +26,19 @@
import org.apache.james.api.imap.message.response.imap4rev1.StatusResponseFactory;
import org.apache.james.api.imap.process.ImapProcessor;
import org.apache.james.api.imap.process.ImapSession;
-import org.apache.james.api.user.User;
import org.apache.james.imap.message.request.imap4rev1.SubscribeRequest;
-import org.apache.james.imapserver.processor.base.AbstractImapRequestProcessor;
+import org.apache.james.imapserver.processor.base.AbstractMailboxAwareProcessor;
import org.apache.james.imapserver.processor.base.ImapSessionUtils;
+import org.apache.james.mailboxmanager.MailboxManagerException;
+import org.apache.james.mailboxmanager.manager.MailboxManager;
+import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
+import org.apache.james.mailboxmanager.manager.SubscriptionException;
-public class SubscribeProcessor extends AbstractImapRequestProcessor {
+public class SubscribeProcessor extends AbstractMailboxAwareProcessor {
- private final IMAPSubscriber subscriber;
-
- public SubscribeProcessor(final ImapProcessor next,
- final StatusResponseFactory factory, final IMAPSubscriber subscriber) {
- super(next, factory);
- this.subscriber = subscriber;
+ public SubscribeProcessor(final ImapProcessor next, final MailboxManagerProvider mailboxManagerProvider,
+ final StatusResponseFactory factory) {
+ super(next, mailboxManagerProvider, factory);
}
protected boolean isAcceptable(ImapMessage message) {
@@ -49,10 +49,10 @@
ImapSession session, String tag, ImapCommand command, Responder responder) {
final SubscribeRequest request = (SubscribeRequest) message;
final String mailboxName = request.getMailboxName();
- final User user = ImapSessionUtils.getUser(session);
- final String userName = user.getUserName();
+ final String userName = ImapSessionUtils.getUserName(session);
try {
- subscriber.subscribe(userName, mailboxName);
+ final MailboxManager manager = getMailboxManager(session);
+ manager.subscribe(userName, mailboxName);
unsolicitedResponses(session, responder, false);
okComplete(command, tag, responder);
@@ -69,6 +69,12 @@
displayTextKey = exceptionKey;
}
no(command, tag, responder, displayTextKey);
+ } catch (MailboxManagerException e) {
+ getLogger().debug("Subscription failed", e);
+ unsolicitedResponses(session, responder, false);
+
+ final HumanReadableTextKey displayTextKey = HumanReadableTextKey.GENERIC_SUBSCRIPTION_FAILURE;
+ no(command, tag, responder, displayTextKey);
}
}
}
Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/UnsubscribeProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/UnsubscribeProcessor.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/UnsubscribeProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/UnsubscribeProcessor.java Wed Aug 27 12:27:27 2008
@@ -26,19 +26,19 @@
import org.apache.james.api.imap.message.response.imap4rev1.StatusResponseFactory;
import org.apache.james.api.imap.process.ImapProcessor;
import org.apache.james.api.imap.process.ImapSession;
-import org.apache.james.api.user.User;
import org.apache.james.imap.message.request.imap4rev1.UnsubscribeRequest;
-import org.apache.james.imapserver.processor.base.AbstractImapRequestProcessor;
+import org.apache.james.imapserver.processor.base.AbstractMailboxAwareProcessor;
import org.apache.james.imapserver.processor.base.ImapSessionUtils;
+import org.apache.james.mailboxmanager.MailboxManagerException;
+import org.apache.james.mailboxmanager.manager.MailboxManager;
+import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
+import org.apache.james.mailboxmanager.manager.SubscriptionException;
-public class UnsubscribeProcessor extends AbstractImapRequestProcessor {
-
- private final IMAPSubscriber subscriber;
+public class UnsubscribeProcessor extends AbstractMailboxAwareProcessor {
- public UnsubscribeProcessor(final ImapProcessor next, final StatusResponseFactory factory,
- final IMAPSubscriber subscriber) {
- super(next, factory);
- this.subscriber = subscriber;
+ public UnsubscribeProcessor(final ImapProcessor next, final MailboxManagerProvider mailboxManagerProvider,
+ final StatusResponseFactory factory) {
+ super(next, mailboxManagerProvider, factory);
}
protected boolean isAcceptable(ImapMessage message) {
@@ -49,10 +49,10 @@
ImapSession session, String tag, ImapCommand command, Responder responder) {
final UnsubscribeRequest request = (UnsubscribeRequest) message;
final String mailboxName = request.getMailboxName();
- final User user = ImapSessionUtils.getUser(session);
- final String userName = user.getUserName();
+ final String userName = ImapSessionUtils.getUserName(session);
try {
- subscriber.unsubscribe(userName, mailboxName);
+ final MailboxManager mailboxManager = getMailboxManager(session);
+ mailboxManager.unsubscribe(userName, mailboxName);
unsolicitedResponses(session, responder, false);
okComplete(command, tag, responder);
@@ -69,6 +69,12 @@
displayTextKey = exceptionKey;
}
no(command, tag, responder, displayTextKey);
+ } catch (MailboxManagerException e) {
+ getLogger().debug("Subscription failed", e);
+ unsolicitedResponses(session, responder, false);
+
+ final HumanReadableTextKey displayTextKey = HumanReadableTextKey.GENERIC_SUBSCRIPTION_FAILURE;
+ no(command, tag, responder, displayTextKey);
}
}
}
Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/main/DefaultImapProcessorFactory.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/main/DefaultImapProcessorFactory.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/main/DefaultImapProcessorFactory.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/main/DefaultImapProcessorFactory.java Wed Aug 27 12:27:27 2008
@@ -22,14 +22,10 @@
import org.apache.james.api.imap.message.response.imap4rev1.StatusResponseFactory;
import org.apache.james.api.imap.process.ImapProcessor;
import org.apache.james.api.imap.process.ImapProcessorFactory;
-import org.apache.james.api.user.UserMetaDataRespository;
-import org.apache.james.api.user.UsersRepository;
import org.apache.james.imap.message.response.imap4rev1.status.UnpooledStatusResponseFactory;
import org.apache.james.imapserver.processor.base.ImapResponseMessageProcessor;
import org.apache.james.imapserver.processor.base.UnknownRequestImapProcessor;
-import org.apache.james.imapserver.processor.imap4rev1.IMAPSubscriber;
import org.apache.james.imapserver.processor.imap4rev1.Imap4Rev1ProcessorFactory;
-import org.apache.james.imapserver.processor.imap4rev1.UserMetaDataIMAPSubscriber;
import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
/**
@@ -37,26 +33,19 @@
*/
public class DefaultImapProcessorFactory implements ImapProcessorFactory {
- public static final ImapProcessor createDefaultProcessor(final UsersRepository usersRepository,
- final MailboxManagerProvider mailboxManagerProvider, final UserMetaDataRespository userMetaDataRepository) {
+ public static final ImapProcessor createDefaultProcessor(final MailboxManagerProvider mailboxManagerProvider) {
final StatusResponseFactory statusResponseFactory = new UnpooledStatusResponseFactory();
final UnknownRequestImapProcessor unknownRequestImapProcessor = new UnknownRequestImapProcessor(statusResponseFactory);
- final IMAPSubscriber subscriber = new UserMetaDataIMAPSubscriber(userMetaDataRepository);
final ImapProcessor imap4rev1Chain = Imap4Rev1ProcessorFactory.createDefaultChain(unknownRequestImapProcessor,
- usersRepository, mailboxManagerProvider, statusResponseFactory, subscriber);
+ mailboxManagerProvider, statusResponseFactory);
final ImapProcessor result = new ImapResponseMessageProcessor(imap4rev1Chain);
return result;
}
- private UsersRepository usersRepository;
private MailboxManagerProvider mailboxManagerProvider;
- private UserMetaDataRespository userMetaDataRepository;
- public final void configure(UsersRepository usersRepository, MailboxManagerProvider mailboxManagerProvider,
- UserMetaDataRespository userMetaDataRepository) {
- setUsersRepository(usersRepository);
+ public final void configure(MailboxManagerProvider mailboxManagerProvider) {
setMailboxManagerProvider(mailboxManagerProvider);
- setUserMetaDataRepository(userMetaDataRepository);
}
public final MailboxManagerProvider getMailboxManagerProvider() {
@@ -67,25 +56,8 @@
MailboxManagerProvider mailboxManagerProvider) {
this.mailboxManagerProvider = mailboxManagerProvider;
}
-
- public final UsersRepository getUsersRepository() {
- return usersRepository;
- }
-
- public final void setUsersRepository(UsersRepository usersRepository) {
- this.usersRepository = usersRepository;
- }
-
- public final UserMetaDataRespository getUserMetaDataRepository() {
- return userMetaDataRepository;
- }
-
- public final void setUserMetaDataRepository(
- UserMetaDataRespository userMetaDataRepository) {
- this.userMetaDataRepository = userMetaDataRepository;
- }
public ImapProcessor buildImapProcessor() {
- return createDefaultProcessor(usersRepository, mailboxManagerProvider, userMetaDataRepository);
+ return createDefaultProcessor(mailboxManagerProvider);
}
}
Modified: james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/LSubProcessorTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/LSubProcessorTest.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/LSubProcessorTest.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/LSubProcessorTest.java Wed Aug 27 12:27:27 2008
@@ -29,11 +29,11 @@
import org.apache.james.api.imap.message.response.imap4rev1.StatusResponseFactory;
import org.apache.james.api.imap.process.ImapProcessor;
import org.apache.james.api.imap.process.ImapSession;
-import org.apache.james.api.user.User;
import org.apache.james.imap.message.request.imap4rev1.LsubRequest;
import org.apache.james.imap.message.response.imap4rev1.server.LSubResponse;
import org.apache.james.imapserver.processor.base.ImapSessionUtils;
import org.apache.james.mailboxmanager.ListResult;
+import org.apache.james.mailboxmanager.manager.MailboxManager;
import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
import org.jmock.Mock;
import org.jmock.MockObjectTestCase;
@@ -52,13 +52,12 @@
LSubProcessor processor;
Mock next;
Mock provider;
+ Mock manager;
Mock responder;
Mock result;
Mock session;
Mock command;
Mock serverResponseFactory;
- Mock subscriber;
- Mock user;
Mock statusResponse;
Collection subscriptions;
ImapCommand imapCommand;
@@ -66,7 +65,6 @@
protected void setUp() throws Exception {
subscriptions = new ArrayList();
- user = mock(User.class);
serverResponseFactory = mock(StatusResponseFactory.class);
session = mock(ImapSession.class);
command = mock(ImapCommand.class);
@@ -74,12 +72,12 @@
next = mock(ImapProcessor.class);
responder = mock(ImapProcessor.Responder.class);
result = mock(ListResult.class);
- subscriber = mock(IMAPSubscriber.class);
provider = mock(MailboxManagerProvider.class);
statusResponse = mock(StatusResponse.class);
responderImpl = (ImapProcessor.Responder) responder.proxy();
+ manager = mock(MailboxManager.class);
processor = new LSubProcessor((ImapProcessor) next.proxy(), (MailboxManagerProvider) provider.proxy(),
- (StatusResponseFactory) serverResponseFactory.proxy(), (IMAPSubscriber) subscriber.proxy());
+ (StatusResponseFactory) serverResponseFactory.proxy());
}
protected void tearDown() throws Exception {
@@ -192,12 +190,14 @@
}
private void expectSubscriptions() {
- user.expects(once()).method("getUserName").will(returnValue(USER));
+ session.expects(once()).method("getAttribute")
+ .with(eq(ImapSessionUtils.MAILBOX_MANAGER_ATTRIBUTE_SESSION_KEY))
+ .will(returnValue(manager.proxy()));
session.expects(once()).method("getAttribute")
.with(eq(ImapSessionUtils.MAILBOX_USER_ATTRIBUTE_SESSION_KEY))
- .will(returnValue((User) user.proxy()));
+ .will(returnValue(USER));
- subscriber.expects(once()).method("subscriptions")
+ manager.expects(once()).method("subscriptions")
.with(eq(USER))
.will(returnValue(subscriptions));
}
Modified: james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/SearchProcessorTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/SearchProcessorTest.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/SearchProcessorTest.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/SearchProcessorTest.java Wed Aug 27 12:27:27 2008
@@ -19,6 +19,11 @@
package org.apache.james.imapserver.processor.imap4rev1;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.mail.Flags.Flag;
+
import org.apache.james.api.imap.ImapCommand;
import org.apache.james.api.imap.display.HumanReadableTextKey;
import org.apache.james.api.imap.message.IdRange;
@@ -41,11 +46,6 @@
import org.jmock.Mock;
import org.jmock.MockObjectTestCase;
-import javax.mail.Flags.Flag;
-
-import java.util.ArrayList;
-import java.util.List;
-
public class SearchProcessorTest extends MockObjectTestCase {
private static final int DAY = 6;
private static final int MONTH = 6;
Modified: james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/fetch/PartialFetchBodyElementTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/fetch/PartialFetchBodyElementTest.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/fetch/PartialFetchBodyElementTest.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/fetch/PartialFetchBodyElementTest.java Wed Aug 27 12:27:27 2008
@@ -20,7 +20,6 @@
package org.apache.james.imapserver.processor.imap4rev1.fetch;
import org.apache.james.imap.message.response.imap4rev1.FetchResponse.BodyElement;
-import org.apache.james.imapserver.processor.imap4rev1.fetch.PartialFetchBodyElement;
import org.jmock.Mock;
import org.jmock.MockObjectTestCase;
Modified: james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/fetch/PartialWritableByteChannelTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/fetch/PartialWritableByteChannelTest.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/fetch/PartialWritableByteChannelTest.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/test/java/org/apache/james/imapserver/processor/imap4rev1/fetch/PartialWritableByteChannelTest.java Wed Aug 27 12:27:27 2008
@@ -23,8 +23,6 @@
import java.nio.ByteBuffer;
import java.nio.channels.WritableByteChannel;
-import org.apache.james.imapserver.processor.imap4rev1.fetch.PartialWritableByteChannel;
-
import junit.framework.TestCase;
public class PartialWritableByteChannelTest extends TestCase implements WritableByteChannel {
Modified: james/server/trunk/mailbox-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxManager.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailbox-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxManager.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/mailbox-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxManager.java (original)
+++ james/server/trunk/mailbox-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxManager.java Wed Aug 27 12:27:27 2008
@@ -19,6 +19,8 @@
package org.apache.james.mailboxmanager.manager;
+import java.util.Collection;
+
import org.apache.james.mailboxmanager.MessageRange;
import org.apache.james.mailboxmanager.ListResult;
import org.apache.james.mailboxmanager.MailboxExistsException;
@@ -126,20 +128,8 @@
* to be returned
* @throws MailboxManagerException
*/
-
ListResult[] list(MailboxExpression expression) throws MailboxManagerException;
- /**
- * could be implemented later. There could be enviroments where
- * subscribtions are stored in the mailbox database. Another possibility is
- * to manage subscribtions in the user repository, e.g. a ldap attribute,
- *
- * @param mailboxName
- * @param value
- */
-
- void setSubscription(String mailboxName, boolean value) throws MailboxManagerException;
-
boolean existsMailbox(String mailboxName) throws MailboxManagerException;
/**
@@ -147,5 +137,34 @@
* @return <code>MailboxSession</code>, not null
*/
public MailboxSession createSession();
+
+ /**
+ * Autenticates the given user against the given password.
+ * @param userid user name
+ * @param passwd password supplied
+ * @return true if the user is authenticated
+ */
+ boolean isAuthentic(String userid, String passwd);
+
+ /**
+ * Subscribes the user to the given mailbox.
+ * @param user the user name, not null
+ * @param mailbox the mailbox name, not null
+ */
+ public void subscribe(String user, String mailbox) throws SubscriptionException;
+
+ /**
+ * Unsubscribes the user from the given mailbox.
+ * @param user the user name, not null
+ * @param mailbox the mailbox name, not null
+ */
+ public void unsubscribe(String user, String mailbox) throws SubscriptionException;
+
+ /**
+ * Lists current subscriptions for the given user.
+ * @param user the user name, not null
+ * @return a <code>Collection<String></code> of mailbox names
+ */
+ public Collection subscriptions(String user) throws SubscriptionException;
}
Added: james/server/trunk/mailbox-library/src/main/java/org/apache/james/mailboxmanager/manager/SubscriptionException.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailbox-library/src/main/java/org/apache/james/mailboxmanager/manager/SubscriptionException.java?rev=689578&view=auto
==============================================================================
--- james/server/trunk/mailbox-library/src/main/java/org/apache/james/mailboxmanager/manager/SubscriptionException.java (added)
+++ james/server/trunk/mailbox-library/src/main/java/org/apache/james/mailboxmanager/manager/SubscriptionException.java Wed Aug 27 12:27:27 2008
@@ -0,0 +1,57 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mailboxmanager.manager;
+
+import org.apache.james.api.imap.display.HumanReadableTextKey;
+
+/**
+ * Indicates exception during subscription processing.
+ */
+public class SubscriptionException extends Exception {
+
+ private static final long serialVersionUID = -2057022968413471837L;
+
+ private final HumanReadableTextKey key;
+
+ public SubscriptionException(HumanReadableTextKey key, Throwable cause) {
+ super(key.toString(), cause);
+ this.key = key;
+ }
+
+ public SubscriptionException(HumanReadableTextKey key) {
+ super(key.toString());
+ this.key = key;
+ }
+
+ public SubscriptionException(Throwable cause) {
+ super(cause);
+ key = null;
+ }
+
+ /**
+ * Gets the message key.
+ * @return the key, possibly null
+ */
+ public final HumanReadableTextKey getKey() {
+ return key;
+ }
+
+
+}
Modified: james/server/trunk/phoenix-deployment/src/java/org/apache/james/experimental/imapserver/ImapHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/java/org/apache/james/experimental/imapserver/ImapHandler.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/phoenix-deployment/src/java/org/apache/james/experimental/imapserver/ImapHandler.java (original)
+++ james/server/trunk/phoenix-deployment/src/java/org/apache/james/experimental/imapserver/ImapHandler.java Wed Aug 27 12:27:27 2008
@@ -42,7 +42,7 @@
*/
public class ImapHandler implements ProtocolHandler, ImapConstants
{
-
+
private ProtocolHandlerHelper helper;
private static final byte[] EMERGENCY_SIGNOFF = {'*',' ', 'B', 'Y', 'E', ' ',
Modified: james/server/trunk/phoenix-deployment/src/java/org/apache/james/imapserver/phoenix/PhoenixImapProcessorFactory.java
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/java/org/apache/james/imapserver/phoenix/PhoenixImapProcessorFactory.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/phoenix-deployment/src/java/org/apache/james/imapserver/phoenix/PhoenixImapProcessorFactory.java (original)
+++ james/server/trunk/phoenix-deployment/src/java/org/apache/james/imapserver/phoenix/PhoenixImapProcessorFactory.java Wed Aug 27 12:27:27 2008
@@ -22,21 +22,15 @@
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
-import org.apache.james.api.user.UserMetaDataRespository;
-import org.apache.james.api.user.UsersRepository;
import org.apache.james.imapserver.processor.main.DefaultImapProcessorFactory;
import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
public class PhoenixImapProcessorFactory extends DefaultImapProcessorFactory implements Serviceable {
public void service(ServiceManager serviceManager) throws ServiceException {
- UsersRepository usersRepository = ( UsersRepository ) serviceManager.
- lookup( UsersRepository.ROLE );
MailboxManagerProvider mailboxManagerProvider =
(MailboxManagerProvider) serviceManager.lookup( MailboxManagerProvider.ROLE );
- UserMetaDataRespository userMetaDataRepository =
- (UserMetaDataRespository) serviceManager.lookup( UserMetaDataRespository.ROLE );
- configure(usersRepository, mailboxManagerProvider, userMetaDataRepository);
+ configure(mailboxManagerProvider);
}
}
Added: james/server/trunk/phoenix-deployment/src/java/org/apache/james/mailboxmanager/torque/PheonixUserManager.java
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/java/org/apache/james/mailboxmanager/torque/PheonixUserManager.java?rev=689578&view=auto
==============================================================================
--- james/server/trunk/phoenix-deployment/src/java/org/apache/james/mailboxmanager/torque/PheonixUserManager.java (added)
+++ james/server/trunk/phoenix-deployment/src/java/org/apache/james/mailboxmanager/torque/PheonixUserManager.java Wed Aug 27 12:27:27 2008
@@ -0,0 +1,154 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mailboxmanager.torque;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.james.api.user.UserMetaDataRespository;
+import org.apache.james.api.user.UserRepositoryException;
+import org.apache.james.api.user.UsersRepository;
+import org.apache.james.mailboxmanager.manager.SubscriptionException;
+
+/**
+ * Stores subscription data in the user meta-data repository.
+ */
+public class PheonixUserManager implements UserManager {
+
+ public static final String META_DATA_KEY
+ ="org.apache.james.IMAP_SUBSCRIPTIONS";
+
+ private Log log = LogFactory.getLog(PheonixUserManager.class);
+
+ private final UserMetaDataRespository repository;
+ private final Map userSubscriptionsByUser;
+
+ private final UsersRepository usersRepository;
+
+ public PheonixUserManager(final UserMetaDataRespository repository, final UsersRepository usersRepository) {
+ super();
+ this.repository = repository;
+ userSubscriptionsByUser = new HashMap();
+ this.usersRepository = usersRepository;
+ }
+
+ public void subscribe(String user, String mailbox)
+ throws SubscriptionException {
+ try {
+ final UserSubscription subscription = getUserSubscription(user);
+ subscription.subscribe(mailbox);
+ } catch (UserRepositoryException e) {
+ throw new SubscriptionException(e);
+ }
+ }
+
+ public Collection subscriptions(String user) throws SubscriptionException {
+ try {
+ final UserSubscription subscription = getUserSubscription(user);
+ final Collection results = (Collection) subscription.subscriptions().clone();
+ return results;
+ } catch (UserRepositoryException e) {
+ throw new SubscriptionException(e);
+ }
+ }
+
+ public void unsubscribe(String user, String mailbox) throws SubscriptionException {
+ try {
+ final UserSubscription subscription = getUserSubscription(user);
+ subscription.unsubscribe(mailbox);
+ } catch (UserRepositoryException e) {
+ throw new SubscriptionException(e);
+ }
+ }
+
+ private synchronized UserSubscription getUserSubscription(final String user) {
+ UserSubscription subscription = (UserSubscription) userSubscriptionsByUser.get(user);
+ if (subscription == null) {
+ subscription = new UserSubscription(user, repository, log);
+ }
+ return subscription;
+ }
+
+ /**
+ * Manages subscriptions for a user.
+ * Subscriptions are stored in a single collection.
+ * This class synchronizes access for write operations.
+ */
+ private static final class UserSubscription {
+
+ private final String user;
+ private final UserMetaDataRespository repository;
+ private Log log;
+
+ public UserSubscription(final String user, final UserMetaDataRespository repository,
+ Log log) {
+ super();
+ this.user = user;
+ this.repository = repository;
+ }
+
+ public synchronized void subscribe(String mailbox) throws UserRepositoryException {
+ final HashSet existingSubscriptions = subscriptions();
+ if (!existingSubscriptions.contains(mailbox)) {
+ final HashSet newSubscriptions;
+ if (existingSubscriptions == null) {
+ newSubscriptions = new HashSet();
+ } else {
+ existingSubscriptions.add(mailbox);
+ newSubscriptions = existingSubscriptions;
+ }
+ repository.setAttribute(user, newSubscriptions, META_DATA_KEY);
+ }
+ }
+
+ public synchronized void unsubscribe(String mailbox) throws UserRepositoryException {
+ final HashSet subscriptions = subscriptions();
+ if (subscriptions.remove(mailbox)) {
+ repository.setAttribute(user, subscriptions, META_DATA_KEY);
+ }
+ }
+
+ public HashSet subscriptions() throws UserRepositoryException {
+ try {
+ final HashSet storedSubscriptions = (HashSet) repository.getAttribute(user, META_DATA_KEY);
+ final HashSet results;
+ if (storedSubscriptions == null) {
+ results = new HashSet();
+ } else {
+ results = storedSubscriptions;
+ }
+ return results;
+ } catch (ClassCastException e) {
+ log.error("ClassCastException during retrieval. Reseting subscriptions for user " + user);
+ log.debug("HashSet expected but not retrieved.", e);
+ return new HashSet();
+ }
+
+ }
+ }
+
+ public boolean isAuthentic(String userid, String passwd) {
+ return usersRepository.test(userid, passwd);
+ }
+}
Modified: james/server/trunk/phoenix-deployment/src/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManagerFactory.java
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManagerFactory.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/phoenix-deployment/src/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManagerFactory.java (original)
+++ james/server/trunk/phoenix-deployment/src/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManagerFactory.java Wed Aug 27 12:27:27 2008
@@ -38,8 +38,11 @@
import org.apache.commons.configuration.BaseConfiguration;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.logging.impl.AvalonLogger;
+import org.apache.james.api.user.UserMetaDataRespository;
+import org.apache.james.api.user.UsersRepository;
import org.apache.james.mailboxmanager.MailboxManagerException;
import org.apache.james.mailboxmanager.manager.MailboxManager;
+import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
import org.apache.james.mailboxmanager.torque.om.MailboxRowPeer;
import org.apache.james.mailboxmanager.torque.om.MessageBodyPeer;
import org.apache.james.mailboxmanager.torque.om.MessageFlagsPeer;
@@ -55,6 +58,10 @@
public class TorqueMailboxManagerFactory extends TorqueMailboxManager implements MailboxManager,
Configurable, Initializable, Serviceable, LogEnabled {
+ public TorqueMailboxManagerFactory(UserManager userManager) {
+ super(userManager);
+ }
+
private BaseConfiguration torqueConf;
private boolean initialized;
@@ -198,6 +205,10 @@
public void service(ServiceManager serviceManager) throws ServiceException {
setFileSystem((FileSystem) serviceManager.lookup(FileSystem.ROLE));
+// UsersRepository usersRepository = ( UsersRepository ) serviceManager.
+// lookup( UsersRepository.ROLE );
+// UserMetaDataRespository userMetaDataRepository =
+// (UserMetaDataRespository) serviceManager.lookup( UserMetaDataRespository.ROLE );
}
protected void setFileSystem(FileSystem system) {
Modified: james/server/trunk/phoenix-deployment/src/test/org/apache/james/experimental/imapserver/HostSystemFactory.java
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/test/org/apache/james/experimental/imapserver/HostSystemFactory.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/phoenix-deployment/src/test/org/apache/james/experimental/imapserver/HostSystemFactory.java (original)
+++ james/server/trunk/phoenix-deployment/src/test/org/apache/james/experimental/imapserver/HostSystemFactory.java Wed Aug 27 12:27:27 2008
@@ -25,12 +25,12 @@
import org.apache.james.imapserver.codec.encode.main.DefaultImapEncoderFactory;
import org.apache.james.imapserver.mock.MailboxManagerProviderSingleton;
import org.apache.james.imapserver.processor.main.DefaultImapProcessorFactory;
+import org.apache.james.mailboxmanager.mock.TorqueMailboxManagerProviderSingleton;
import org.apache.james.test.functional.imap.HostSystem;
-import org.apache.james.user.impl.file.FileUserMetaDataRepository;
public class HostSystemFactory {
- private static final String META_DATA_DIRECTORY = "target/user-meta-data";
+ public static final String META_DATA_DIRECTORY = "target/user-meta-data";
public static void resetUserMetaData() throws Exception {
@@ -43,13 +43,12 @@
public static HostSystem createStandardImap() throws Exception {
- ExperimentalHostSystem result = new ExperimentalHostSystem();
+ ExperimentalHostSystem host = TorqueMailboxManagerProviderSingleton.host;
final DefaultImapProcessorFactory defaultImapProcessorFactory = new DefaultImapProcessorFactory();
resetUserMetaData();
- defaultImapProcessorFactory.configure(result,
- MailboxManagerProviderSingleton.getMailboxManagerProviderInstance(),
- new FileUserMetaDataRepository(META_DATA_DIRECTORY));
- result.configure(new DefaultImapDecoderFactory().buildImapDecoder(),
+ defaultImapProcessorFactory.configure(
+ MailboxManagerProviderSingleton.getMailboxManagerProviderInstance());
+ host.configure(new DefaultImapDecoderFactory().buildImapDecoder(),
new DefaultImapEncoderFactory().buildImapEncoder(),
defaultImapProcessorFactory.buildImapProcessor(), new ExperimentalHostSystem.Resetable() {
@@ -59,6 +58,6 @@
}
});
- return result;
+ return host;
}
}
Modified: james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/mock/TorqueMailboxManagerProviderSingleton.java
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/mock/TorqueMailboxManagerProviderSingleton.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/mock/TorqueMailboxManagerProviderSingleton.java (original)
+++ james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/mock/TorqueMailboxManagerProviderSingleton.java Wed Aug 27 12:27:27 2008
@@ -20,15 +20,20 @@
package org.apache.james.mailboxmanager.mock;
import org.apache.commons.configuration.ConfigurationException;
+import org.apache.james.experimental.imapserver.ExperimentalHostSystem;
+import org.apache.james.experimental.imapserver.HostSystemFactory;
import org.apache.james.mailboxmanager.impl.DefaultMailboxManagerProvider;
import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
+import org.apache.james.mailboxmanager.torque.PheonixUserManager;
import org.apache.james.mailboxmanager.torque.TorqueMailboxManagerFactory;
import org.apache.james.test.mock.james.MockFileSystem;
+import org.apache.james.user.impl.file.FileUserMetaDataRepository;
public class TorqueMailboxManagerProviderSingleton {
private static TorqueMailboxManagerFactory torqueMailboxManagerFactory;
private static DefaultMailboxManagerProvider defaultMailboxManagerProvider;
+ public static final ExperimentalHostSystem host = new ExperimentalHostSystem();
public synchronized static MailboxManagerProvider getTorqueMailboxManagerProviderInstance() throws Exception {
if (defaultMailboxManagerProvider==null) {
@@ -42,7 +47,8 @@
private static TorqueMailboxManagerFactory getTorqueFactory() throws ConfigurationException, Exception {
if (torqueMailboxManagerFactory == null) {
- torqueMailboxManagerFactory=new TorqueMailboxManagerFactory() {{
+ torqueMailboxManagerFactory=new TorqueMailboxManagerFactory(new PheonixUserManager(
+ new FileUserMetaDataRepository(HostSystemFactory.META_DATA_DIRECTORY), host)) {{
setFileSystem(new MockFileSystem());
}};
torqueMailboxManagerFactory.configureDefaults();
Modified: james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
URL: http://svn.apache.org/viewvc/james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java?rev=689578&r1=689577&r2=689578&view=diff
==============================================================================
--- james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java (original)
+++ james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java Wed Aug 27 12:27:27 2008
@@ -21,6 +21,7 @@
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -40,6 +41,7 @@
import org.apache.james.mailboxmanager.mailbox.Mailbox;
import org.apache.james.mailboxmanager.manager.MailboxExpression;
import org.apache.james.mailboxmanager.manager.MailboxManager;
+import org.apache.james.mailboxmanager.manager.SubscriptionException;
import org.apache.james.mailboxmanager.torque.om.MailboxRow;
import org.apache.james.mailboxmanager.torque.om.MailboxRowPeer;
import org.apache.torque.TorqueException;
@@ -58,11 +60,14 @@
private final ReadWriteLock lock;
- private final Map managers;
+ private final Map mailboxes;
- public TorqueMailboxManager() {
+ private final UserManager userManager;
+
+ public TorqueMailboxManager(final UserManager userManager) {
this.lock = new ReentrantWriterPreferenceReadWriteLock();
- managers = new HashMap();
+ mailboxes = new HashMap();
+ this.userManager = userManager;
}
public Mailbox getMailbox(String mailboxName, boolean autoCreate)
@@ -76,17 +81,17 @@
createMailbox(mailboxName);
}
try {
- synchronized (managers) {
+ synchronized (mailboxes) {
MailboxRow mailboxRow = MailboxRowPeer
.retrieveByName(mailboxName);
if (mailboxRow != null) {
getLog().debug("Loaded mailbox "+mailboxName);
- TorqueMailbox torqueMailbox = (TorqueMailbox) managers.get(mailboxName);
+ TorqueMailbox torqueMailbox = (TorqueMailbox) mailboxes.get(mailboxName);
if (torqueMailbox == null) {
torqueMailbox = new TorqueMailbox(mailboxRow, lock, getLog());
- managers.put(mailboxName, torqueMailbox);
+ mailboxes.put(mailboxName, torqueMailbox);
}
return torqueMailbox;
@@ -109,7 +114,7 @@
} else if (namespaceName.charAt(length - 1) == HIERARCHY_DELIMITER) {
createMailbox(namespaceName.substring(0, length - 1));
} else {
- synchronized (managers) {
+ synchronized (mailboxes) {
// Create root first
// If any creation fails then mailbox will not be created
// TODO: transaction
@@ -147,7 +152,7 @@
public void deleteMailbox(String mailboxName, MailboxSession session)
throws MailboxManagerException {
getLog().info("deleteMailbox "+mailboxName);
- synchronized (managers) {
+ synchronized (mailboxes) {
try {
// TODO put this into a serilizable transaction
MailboxRow mr = MailboxRowPeer.retrieveByName(mailboxName);
@@ -155,7 +160,7 @@
throw new MailboxNotFoundException("Mailbox not found");
}
MailboxRowPeer.doDelete(mr);
- TorqueMailbox mailbox = (TorqueMailbox) managers.remove(mailboxName);
+ TorqueMailbox mailbox = (TorqueMailbox) mailboxes.remove(mailboxName);
if (mailbox != null) {
mailbox.deleted(session);
}
@@ -169,7 +174,7 @@
throws MailboxManagerException {
getLog().debug("renameMailbox "+from+" to "+to);
try {
- synchronized (managers) {
+ synchronized (mailboxes) {
if (existsMailbox(to)) {
throw new MailboxExistsException(to);
}
@@ -184,7 +189,7 @@
mr.setName(to);
mr.save();
- managers.remove(from);
+ mailboxes.remove(from);
// rename submailbox
Criteria c = new Criteria();
@@ -260,10 +265,10 @@
CountHelper countHelper=new CountHelper();
int count;
try {
- synchronized (managers) {
+ synchronized (mailboxes) {
count = countHelper.count(c);
if (count == 0) {
- managers.remove(mailboxName);
+ mailboxes.remove(mailboxName);
return false;
} else {
if (count == 1) {
@@ -283,7 +288,7 @@
try {
MailboxRowPeer.doDelete(new Criteria().and(MailboxRowPeer.MAILBOX_ID,
new Integer(-1), Criteria.GREATER_THAN));
- managers.clear();
+ mailboxes.clear();
} catch (TorqueException e) {
throw new MailboxManagerException(e);
}
@@ -308,4 +313,20 @@
return result;
}
+ public boolean isAuthentic(String userid, String passwd) {
+ return userManager.isAuthentic(userid, passwd);
+ }
+
+ public void subscribe(String user, String mailbox) throws SubscriptionException {
+ userManager.subscribe(user, mailbox);
+ }
+
+ public Collection subscriptions(String user) throws SubscriptionException {
+ return userManager.subscriptions(user);
+ }
+
+ public void unsubscribe(String user, String mailbox) throws SubscriptionException {
+ userManager.unsubscribe(user, mailbox);
+ }
+
}
Added: james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/UserManager.java
URL: http://svn.apache.org/viewvc/james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/UserManager.java?rev=689578&view=auto
==============================================================================
--- james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/UserManager.java (added)
+++ james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/UserManager.java Wed Aug 27 12:27:27 2008
@@ -0,0 +1,35 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mailboxmanager.torque;
+
+import java.util.Collection;
+
+import org.apache.james.mailboxmanager.manager.SubscriptionException;
+
+public interface UserManager {
+
+ public boolean isAuthentic(String userid, String passwd);
+
+ public void subscribe(String user, String mailbox) throws SubscriptionException;
+
+ public Collection subscriptions(String user) throws SubscriptionException;
+
+ public void unsubscribe(String user, String mailbox) throws SubscriptionException;
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
Re: svn commit: r689578 - in /james/server/trunk: imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/
imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/
imap-mailbox-processo...
Posted by Stefano Bagnara <ap...@bago.org>.
rdonkin@apache.org ha scritto:
> Author: rdonkin
> Date: Wed Aug 27 12:27:27 2008
> New Revision: 689578
>
> URL: http://svn.apache.org/viewvc?rev=689578&view=rev
> Log:
> Decouple IMAP processing from user-api. Deployment adapts JAMES core API to protocol specific interfaces. JAMES-860
>
> Added:
> james/server/trunk/mailbox-library/src/main/java/org/apache/james/mailboxmanager/manager/SubscriptionException.java
Hi Robert,
this change add "imap-api" as a dependency for mailbox-library that was
imap-api indipendent.
Is this something you wanted or a mistake?
Stefano
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org