JAMES-2085 JMAP should consider raw MailboxException as unexpected

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/624cd01d
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/624cd01d
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/624cd01d

Branch: refs/heads/master
Commit: 624cd01db8dc5d495ab28413d4748d8da57117a8
Parents: 6ed945b
Author: benwa <btell...@linagora.com>
Authored: Mon Jul 3 11:51:16 2017 +0700
Committer: benwa <btell...@linagora.com>
Committed: Wed Jul 5 17:13:29 2017 +0700

----------------------------------------------------------------------
 .../james/jmap/methods/SetMailboxesUpdateProcessor.java     | 4 ++++
 .../org/apache/james/jmap/methods/SetMessagesMethod.java    | 9 +--------
 .../java/org/apache/james/jmap/model/MailboxFactory.java    | 7 ++++++-
 3 files changed, 11 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/624cd01d/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
index 208e342..459753c 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
@@ -49,6 +49,8 @@ import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.TimeMetric;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.github.fge.lambdas.Throwing;
 import com.github.fge.lambdas.functions.ThrowingFunction;
@@ -58,6 +60,7 @@ import com.google.common.collect.Iterables;
 
 public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
 
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(SetMailboxesUpdateProcessor.class);
     private final MailboxUtils mailboxUtils;
     private final MailboxManager mailboxManager;
     private final MailboxFactory mailboxFactory;
@@ -132,6 +135,7 @@ public class SetMailboxesUpdateProcessor implements 
SetMailboxesProcessor {
                     .description("Cannot rename a mailbox to an already 
existing mailbox.")
                     .build());
         } catch (MailboxException e) {
+            LOGGER.error("Error while updating mailbox", e);
             responseBuilder.notUpdated(mailboxId, SetError.builder()
                     .type( "anErrorOccurred")
                     .description("An error occurred when updating the mailbox")

http://git-wip-us.apache.org/repos/asf/james-project/blob/624cd01d/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesMethod.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesMethod.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesMethod.java
index eff2345..8f9da9b 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesMethod.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesMethod.java
@@ -28,7 +28,6 @@ import org.apache.james.jmap.model.ClientId;
 import org.apache.james.jmap.model.SetMessagesRequest;
 import org.apache.james.jmap.model.SetMessagesResponse;
 import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.TimeMetric;
 
@@ -69,18 +68,12 @@ public class SetMessagesMethod implements Method {
                     .responseName(RESPONSE_NAME)
                     .build());
             return responses;
-        } catch (MailboxException e) {
-            return Stream.of(
-                    JmapResponse.builder().clientId(clientId)
-                    .error()
-                    .responseName(RESPONSE_NAME)
-                    .build());
         } finally {
             timeMetric.stopAndPublish();
         }
     }
 
-    private SetMessagesResponse setMessagesResponse(SetMessagesRequest 
request, MailboxSession mailboxSession) throws MailboxException {
+    private SetMessagesResponse setMessagesResponse(SetMessagesRequest 
request, MailboxSession mailboxSession) {
         return messagesProcessors.stream()
                 .map(processor -> processor.process(request, mailboxSession))
                 .reduce(SetMessagesResponse.builder(),

http://git-wip-us.apache.org/repos/asf/james-project/blob/624cd01d/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
index 25e274e..6f4e9b1 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
@@ -30,14 +30,17 @@ import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.model.MailboxCounters;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Splitter;
+import com.google.common.base.Throwables;
 
 public class MailboxFactory {
     private final MailboxManager mailboxManager;
@@ -74,8 +77,10 @@ public class MailboxFactory {
             try {
                 MessageManager mailbox = 
mailboxFactory.mailboxManager.getMailbox(id, session);
                 return mailboxFactory.fromMessageManager(mailbox, 
Optional.ofNullable(userMailboxesMetadata), session);
-            } catch (MailboxException e) {
+            } catch (MailboxNotFoundException e) {
                 return Optional.empty();
+            } catch (MailboxException e) {
+                throw Throwables.propagate(e);
             }
         }
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to