Author: rdonkin
Date: Fri Aug 10 09:28:35 2007
New Revision: 564658
URL: http://svn.apache.org/viewvc?view=rev&rev=564658
Log:
Use new messages to provide more helpful error message.
Modified:
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AppendProcessor.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/main/DefaultImapProcessorFactory.java
james/server/trunk/phoenix-deployment/src/test/org/apache/james/experimental/imapserver/ExperimentalAuthenticatedStateTest.java
Modified:
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AppendProcessor.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AppendProcessor.java?view=diff&rev=564658&r1=564657&r2=564658
==============================================================================
---
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AppendProcessor.java
(original)
+++
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AppendProcessor.java
Fri Aug 10 09:28:35 2007
@@ -23,11 +23,15 @@
import javax.mail.internet.MimeMessage;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.james.api.imap.ImapCommand;
import org.apache.james.api.imap.ImapMessage;
import org.apache.james.api.imap.ProtocolException;
+import org.apache.james.api.imap.display.HumanReadableTextKey;
import org.apache.james.api.imap.message.request.ImapRequest;
import org.apache.james.api.imap.message.response.ImapResponseMessage;
+import org.apache.james.api.imap.message.response.imap4rev1.StatusResponse;
+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.imap.message.request.imap4rev1.AppendRequest;
@@ -43,9 +47,12 @@
public class AppendProcessor extends AbstractMailboxAwareProcessor {
+ final StatusResponseFactory statusResponseFactory;
+
public AppendProcessor(final ImapProcessor next,
- final MailboxManagerProvider mailboxManagerProvider) {
+ final MailboxManagerProvider mailboxManagerProvider, final
StatusResponseFactory statusResponseFactory) {
super(next, mailboxManagerProvider);
+ this.statusResponseFactory = statusResponseFactory;
}
protected boolean isAcceptable(ImapMessage message) {
@@ -76,19 +83,38 @@
MimeMessage message, Date datetime, ImapSession session,
String tag, ImapCommand command) throws MailboxException,
AuthorizationException, ProtocolException {
+
+ ImapResponseMessage result;
// TODO: Flags are ignore: check whether the specification says that
// they should be processed
ImapMailboxSession mailbox = null;
try {
+
mailboxName = buildFullName(session, mailboxName);
final MailboxManager mailboxManager = getMailboxManager(session);
mailbox = mailboxManager.getImapMailboxSession(mailboxName);
+ result = appendToMailbox(message, datetime, session, tag, command,
mailbox);
+
} catch (MailboxManagerException mme) {
- MailboxException me = new MailboxException(mme);
- me.setResponseCode("TRYCREATE");
- throw me;
+ // Mailbox API does not provide facilities for diagnosing the
problem
+ // assume that
+ // TODO: improved API should communicate when this operation
+ // TODO: fails whether the mailbox exists
+ Logger logger = getLogger();
+ if (logger.isInfoEnabled()) {
+ logger.info(mme.getMessage());
+ }
+ if (logger.isDebugEnabled()) {
+ logger.debug("Cannot open mailbox: ", mme);
+ }
+ result = statusResponseFactory.taggedNo(tag, command,
HumanReadableTextKey.FAILURE_NO_SUCH_MAILBOX,
+ StatusResponse.ResponseCode.TRYCREATE);
}
+ return result;
+ }
+
+ private ImapResponseMessage appendToMailbox(MimeMessage message, Date
datetime, ImapSession session, String tag, ImapCommand command,
ImapMailboxSession mailbox) throws MailboxException {
try {
mailbox.appendMessage(message, datetime, 0);
} catch (MailboxManagerException e) {
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?view=diff&rev=564658&r1=564657&r2=564658
==============================================================================
---
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
Fri Aug 10 09:28:35 2007
@@ -19,6 +19,7 @@
package org.apache.james.imapserver.processor.imap4rev1;
+import
org.apache.james.api.imap.message.response.imap4rev1.StatusResponseFactory;
import org.apache.james.api.imap.process.ImapProcessor;
import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
import org.apache.james.services.UsersRepository;
@@ -30,7 +31,9 @@
public static final ImapProcessor createDefaultChain(
final ImapProcessor chainEndProcessor, final UsersRepository users,
- final MailboxManagerProvider mailboxManagerProvider) {
+ final MailboxManagerProvider mailboxManagerProvider,
+ final StatusResponseFactory statusResponseFactory) {
+
final LogoutProcessor logoutProcessor = new LogoutProcessor(
chainEndProcessor);
final CapabilityProcessor capabilityProcessor = new
CapabilityProcessor(
@@ -60,7 +63,7 @@
final ExamineProcessor examineProcessor = new ExamineProcessor(
expungeProcessor, mailboxManagerProvider);
final AppendProcessor appendProcessor = new AppendProcessor(
- examineProcessor, mailboxManagerProvider);
+ examineProcessor, mailboxManagerProvider,
statusResponseFactory);
final StoreProcessor storeProcessor = new StoreProcessor(
appendProcessor);
final NoopProcessor noopProcessor = new NoopProcessor(storeProcessor);
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?view=diff&rev=564658&r1=564657&r2=564658
==============================================================================
---
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
Fri Aug 10 09:28:35 2007
@@ -19,8 +19,10 @@
package org.apache.james.imapserver.processor.main;
+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.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.Imap4Rev1ProcessorFactory;
@@ -34,8 +36,10 @@
public static final ImapProcessor createDefaultProcessor(final
UsersRepository usersRepository,
final MailboxManagerProvider mailboxManagerProvider) {
+ final StatusResponseFactory statusResponseFactory = new
UnpooledStatusResponseFactory();
final UnknownRequestImapProcessor unknownRequestImapProcessor = new
UnknownRequestImapProcessor();
- final ImapProcessor imap4rev1Chain =
Imap4Rev1ProcessorFactory.createDefaultChain(unknownRequestImapProcessor,
usersRepository, mailboxManagerProvider);
+ final ImapProcessor imap4rev1Chain =
Imap4Rev1ProcessorFactory.createDefaultChain(unknownRequestImapProcessor,
+ usersRepository, mailboxManagerProvider,
statusResponseFactory);
final ImapProcessor result = new
ImapResponseMessageProcessor(imap4rev1Chain);
return result;
}
Modified:
james/server/trunk/phoenix-deployment/src/test/org/apache/james/experimental/imapserver/ExperimentalAuthenticatedStateTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/test/org/apache/james/experimental/imapserver/ExperimentalAuthenticatedStateTest.java?view=diff&rev=564658&r1=564657&r2=564658
==============================================================================
---
james/server/trunk/phoenix-deployment/src/test/org/apache/james/experimental/imapserver/ExperimentalAuthenticatedStateTest.java
(original)
+++
james/server/trunk/phoenix-deployment/src/test/org/apache/james/experimental/imapserver/ExperimentalAuthenticatedStateTest.java
Fri Aug 10 09:28:35 2007
@@ -35,10 +35,6 @@
// Check whether this is correct behaviour
}
- public void testAppend() throws Exception {
- // TODO: poor error message returned via exception - replace with
better one
- }
-
public void testExamineEmpty() throws Exception {
// TODO: \recent flag is returned by FLAGS - specification seems
ambiguous on this
}
@@ -70,4 +66,6 @@
public void testListNamespace() throws Exception {
// TODO: root mailbox should be marked as Noselect
}
+
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]