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]

Reply via email to