You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2021/05/18 05:04:56 UTC
[james-project] 06/07: [REFACTORING] SetMessagesUpdateProcessor:
Remove unused DraftMessageMailboxUpdateException
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit a59013bef0851db3e51f0f562d32f76ba06013e5
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Sat May 15 11:35:54 2021 +0700
[REFACTORING] SetMessagesUpdateProcessor: Remove unused DraftMessageMailboxUpdateException
---
.../DraftMessageMailboxUpdateException.java | 29 ----------
.../draft/methods/SetMessagesUpdateProcessor.java | 65 +++++++++-------------
2 files changed, 26 insertions(+), 68 deletions(-)
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/exceptions/DraftMessageMailboxUpdateException.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/exceptions/DraftMessageMailboxUpdateException.java
deleted file mode 100644
index fe82448..0000000
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/exceptions/DraftMessageMailboxUpdateException.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/****************************************************************
- * 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.jmap.draft.exceptions;
-
-import org.apache.james.mailbox.exception.MailboxException;
-
-public class DraftMessageMailboxUpdateException extends MailboxException {
-
- public DraftMessageMailboxUpdateException(String message) {
- super(message);
- }
-}
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessor.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessor.java
index 9e1930f..fea0e2a 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessor.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessor.java
@@ -29,7 +29,6 @@ import java.util.Optional;
import java.util.Properties;
import java.util.Set;
import java.util.stream.Collectors;
-import java.util.stream.Stream;
import javax.inject.Inject;
import javax.mail.Flags;
@@ -38,7 +37,6 @@ import javax.mail.Session;
import javax.mail.internet.MimeMessage;
import org.apache.james.core.Username;
-import org.apache.james.jmap.draft.exceptions.DraftMessageMailboxUpdateException;
import org.apache.james.jmap.draft.exceptions.InvalidOutboxMoveException;
import org.apache.james.jmap.draft.model.Keyword;
import org.apache.james.jmap.draft.model.Keywords;
@@ -124,16 +122,13 @@ public class SetMessagesUpdateProcessor implements SetMessagesProcessor {
public Mono<SetMessagesResponse> processReactive(SetMessagesRequest request, MailboxSession mailboxSession) {
return Mono.from(metricFactory.decoratePublisherWithTimerMetricLogP99(JMAP_PREFIX + "SetMessagesUpdateProcessor",
listMailboxIdsForRole(mailboxSession, Role.OUTBOX)
- .flatMap(outboxIds -> Mono.fromCallable(() -> prepareResponse(request, mailboxSession, outboxIds).build())
- .subscribeOn(Schedulers.elastic()))
+ .flatMap(outboxIds -> prepareResponse(request, mailboxSession, outboxIds).map(SetMessagesResponse.Builder::build))
.onErrorResume(e ->
- Mono.fromCallable(() ->
- request.buildUpdatePatches(updatePatchConverter).entrySet().stream()
- .map(entry -> prepareResponseIfCantReadOutboxes(e, entry.getKey(), entry.getValue()))
- .reduce(SetMessagesResponse.Builder::mergeWith)
- .orElse(SetMessagesResponse.builder())
- .build())
- .subscribeOn(Schedulers.elastic()))));
+ Mono.just(request.buildUpdatePatches(updatePatchConverter).entrySet().stream()
+ .map(entry -> prepareResponseIfCantReadOutboxes(e, entry.getKey(), entry.getValue()))
+ .reduce(SetMessagesResponse.Builder::mergeWith)
+ .orElse(SetMessagesResponse.builder())
+ .build()))));
}
private SetMessagesResponse.Builder prepareResponseIfCantReadOutboxes(Throwable e, MessageId id, UpdateMessagePatch patch) {
@@ -144,28 +139,31 @@ public class SetMessagesUpdateProcessor implements SetMessagesProcessor {
}
}
- private SetMessagesResponse.Builder prepareResponse(SetMessagesRequest request, MailboxSession mailboxSession, Set<MailboxId> outboxes) {
+ private Mono<SetMessagesResponse.Builder> prepareResponse(SetMessagesRequest request, MailboxSession mailboxSession, Set<MailboxId> outboxes) {
Map<MessageId, UpdateMessagePatch> patches = request.buildUpdatePatches(updatePatchConverter);
- Multimap<MessageId, ComposedMessageIdWithMetaData> messages = Flux.from(messageIdManager.messagesMetadata(patches.keySet(), mailboxSession))
+ return Flux.from(messageIdManager.messagesMetadata(patches.keySet(), mailboxSession))
.collect(Guavate.toImmutableListMultimap(metaData -> metaData.getComposedMessageId().getMessageId()))
- .block();
-
- if (isAMassiveFlagUpdate(patches, messages)) {
- return applyRangedFlagUpdate(patches, messages, mailboxSession);
- } else if (isAMassiveMove(patches, messages)) {
- return applyMove(patches, messages, mailboxSession);
- } else {
- return patches.entrySet().stream()
- .map(entry -> {
- if (entry.getValue().isValid()) {
- return update(outboxes, entry.getKey(), entry.getValue(), mailboxSession, messages);
+ .flatMap(messages -> {
+ if (isAMassiveFlagUpdate(patches, messages)) {
+ return Mono.fromCallable(() -> applyRangedFlagUpdate(patches, messages, mailboxSession))
+ .subscribeOn(Schedulers.elastic());
+ } else if (isAMassiveMove(patches, messages)) {
+ return Mono.fromCallable(() -> applyMove(patches, messages, mailboxSession))
+ .subscribeOn(Schedulers.elastic());
} else {
- return handleInvalidRequest(entry.getKey(), entry.getValue().getValidationErrors(), entry.getValue());
+ return Flux.fromIterable(patches.entrySet())
+ .flatMap(entry -> {
+ if (entry.getValue().isValid()) {
+ return update(outboxes, entry.getKey(), entry.getValue(), mailboxSession, messages);
+ } else {
+ return Mono.just(handleInvalidRequest(entry.getKey(), entry.getValue().getValidationErrors(), entry.getValue()));
+ }
+
+ }).reduce(SetMessagesResponse.Builder::mergeWith)
+ .switchIfEmpty(Mono.just(SetMessagesResponse.builder()));
}
- }).reduce(SetMessagesResponse.Builder::mergeWith)
- .orElse(SetMessagesResponse.builder());
- }
+ });
}
private boolean isAMassiveFlagUpdate(Map<MessageId, UpdateMessagePatch> patches, Multimap<MessageId, ComposedMessageIdWithMetaData> messages) {
@@ -305,8 +303,6 @@ public class SetMessagesUpdateProcessor implements SetMessagesProcessor {
builder.mergeWith(sendMessageWhenOutboxInTargetMailboxIds(outboxes, messageId, updateMessagePatch, mailboxSession));
}
return builder;
- } catch (DraftMessageMailboxUpdateException e) {
- return handleDraftMessageMailboxUpdateException(messageId, e);
} catch (InvalidOutboxMoveException e) {
ValidationResult invalidPropertyMailboxIds = ValidationResult.builder()
.property(MessageProperties.MessageProperty.mailboxIds.asFieldName())
@@ -468,15 +464,6 @@ public class SetMessagesUpdateProcessor implements SetMessagesProcessor {
.build()));
}
- private SetMessagesResponse.Builder handleDraftMessageMailboxUpdateException(MessageId messageId,
- DraftMessageMailboxUpdateException e) {
- return SetMessagesResponse.builder().notUpdated(ImmutableMap.of(messageId, SetError.builder()
- .type(SetError.Type.INVALID_ARGUMENTS)
- .properties(MessageProperties.MessageProperty.mailboxIds)
- .description(e.getMessage())
- .build()));
- }
-
private SetMessagesResponse.Builder handleMessageUpdateException(MessageId messageId,
Throwable e) {
LOGGER.error("An error occurred when updating a message", e);
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org