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