You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2024/03/04 03:57:47 UTC
(james-project) branch master updated (e104a123fb -> 23fcc29845)
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
from e104a123fb JAMES-4007 Document james.mime4j.buffered.body.factory.file.threshold
new 569a5b3047 JAMES-4014 Failing test MessageIdManager::deleteMessageShouldSupportDuplicatedEntries
new 23fcc29845 JAMES-4014 MessageIdManager::delete should take a set as an input
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../api/src/main/java/org/apache/james/mailbox/MessageIdManager.java | 5 +++--
.../src/main/java/org/apache/james/mailbox/model/DeleteResult.java | 1 +
.../java/org/apache/james/vault/DeletedMessageVaultHookTest.java | 5 +++--
.../java/org/apache/james/mailbox/store/StoreMessageIdManager.java | 4 ++--
.../apache/james/mailbox/store/AbstractCombinationManagerTest.java | 3 ++-
.../james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java | 2 +-
.../james/jmap/draft/methods/SetMessagesDestructionProcessor.java | 3 ++-
.../scala/org/apache/james/jmap/method/EmailSetDeletePerformer.scala | 2 +-
8 files changed, 15 insertions(+), 10 deletions(-)
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org
(james-project) 02/02: JAMES-4014 MessageIdManager::delete should take a set as an input
Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 23fcc298452575fe5ff6c08dc545f5fc352a2b3e
Author: Benoit TELLIER <bt...@linagora.com>
AuthorDate: Thu Feb 29 14:10:36 2024 +0100
JAMES-4014 MessageIdManager::delete should take a set as an input
---
.../main/java/org/apache/james/mailbox/MessageIdManager.java | 5 +++--
.../java/org/apache/james/mailbox/model/DeleteResult.java | 1 +
.../org/apache/james/vault/DeletedMessageVaultHookTest.java | 5 +++--
.../apache/james/mailbox/store/StoreMessageIdManager.java | 4 ++--
.../james/mailbox/store/AbstractCombinationManagerTest.java | 3 ++-
.../store/AbstractMessageIdManagerSideEffectTest.java | 2 +-
.../mailbox/store/AbstractMessageIdManagerStorageTest.java | 12 ------------
.../jmap/draft/methods/SetMessagesDestructionProcessor.java | 3 ++-
.../apache/james/jmap/method/EmailSetDeletePerformer.scala | 2 +-
9 files changed, 15 insertions(+), 22 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MessageIdManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MessageIdManager.java
index 1af85ac71c..4605a0fcbd 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MessageIdManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MessageIdManager.java
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.model.MessageResult;
import org.reactivestreams.Publisher;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -69,7 +70,7 @@ public interface MessageIdManager {
Publisher<DeleteResult> deleteReactive(List<MessageId> messageId, List<MailboxId> mailboxIds, MailboxSession mailboxSession);
- Publisher<DeleteResult> delete(List<MessageId> messageId, MailboxSession mailboxSession);
+ Publisher<DeleteResult> delete(Set<MessageId> messageId, MailboxSession mailboxSession);
void setInMailboxes(MessageId messageId, Collection<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxException;
@@ -80,7 +81,7 @@ public interface MessageIdManager {
}
default DeleteResult delete(MessageId messageId, MailboxSession mailboxSession) {
- return Mono.from(delete(ImmutableList.of(messageId), mailboxSession))
+ return Mono.from(delete(ImmutableSet.of(messageId), mailboxSession))
.block();
}
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/DeleteResult.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/DeleteResult.java
index 7bb4351e6f..17eff306f9 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/DeleteResult.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/DeleteResult.java
@@ -109,4 +109,5 @@ public class DeleteResult {
public final int hashCode() {
return Objects.hash(destroyed, notFound);
}
+
}
diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java
index 2862003b21..2ec44ca23b 100644
--- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java
+++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java
@@ -62,6 +62,7 @@ import org.junit.jupiter.api.Test;
import com.github.fge.lambdas.Throwing;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -172,9 +173,9 @@ class DeletedMessageVaultHookTest {
MailboxId aliceMailbox = mailboxManager.createMailbox(MAILBOX_ALICE_ONE, aliceSession).get();
MessageManager messageManager = mailboxManager.getMailbox(aliceMailbox, aliceSession);
- ImmutableList<MessageId> ids = IntStream.range(0, 1000)
+ ImmutableSet<MessageId> ids = IntStream.range(0, 1000)
.mapToObj(Throwing.intFunction(i -> appendMessage(messageManager).getMessageId()))
- .collect(ImmutableList.toImmutableList());
+ .collect(ImmutableSet.toImmutableSet());
assertThatCode(() -> Mono.from(messageIdManager.delete(ids, aliceSession)).subscribeOn(Schedulers.newSingle("test")).block())
.doesNotThrowAnyException();
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index 24dbb9c4e8..b042fba846 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -245,7 +245,7 @@ public class StoreMessageIdManager implements MessageIdManager {
}
@Override
- public Mono<DeleteResult> delete(List<MessageId> messageIds, MailboxSession mailboxSession) {
+ public Mono<DeleteResult> delete(Set<MessageId> messageIds, MailboxSession mailboxSession) {
MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
return messageIdMapper.findReactive(messageIds, MessageMapper.FetchType.METADATA)
@@ -259,7 +259,7 @@ public class StoreMessageIdManager implements MessageIdManager {
.flatMap(allowedMailboxIds -> deleteInAllowedMailboxes(messageIds, mailboxSession, messageIdMapper, messageList, allowedMailboxIds)));
}
- private Mono<DeleteResult> deleteInAllowedMailboxes(List<MessageId> messageIds, MailboxSession mailboxSession, MessageIdMapper messageIdMapper, List<MailboxMessage> messageList, ImmutableSet<MailboxId> allowedMailboxIds) {
+ private Mono<DeleteResult> deleteInAllowedMailboxes(Set<MessageId> messageIds, MailboxSession mailboxSession, MessageIdMapper messageIdMapper, List<MailboxMessage> messageList, ImmutableSet<MailboxId> allowedMailboxIds) {
List<MailboxMessage> accessibleMessages = messageList.stream()
.filter(message -> allowedMailboxIds.contains(message.getMailboxId()))
.collect(ImmutableList.toImmutableList());
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
index a588ce1ae0..c57ec59dcf 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
@@ -26,6 +26,7 @@ import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.function.Predicate;
+import com.google.common.collect.ImmutableSet;
import jakarta.mail.Flags;
import jakarta.mail.Flags.Flag;
@@ -537,7 +538,7 @@ public abstract class AbstractCombinationManagerTest {
.appendMessage(MessageManager.AppendCommand.from(mailContent), session)
.getId().getMessageId();
- Mono.from(messageIdManager.delete(ImmutableList.of(messageId1, messageId2), session))
+ Mono.from(messageIdManager.delete(ImmutableSet.of(messageId1, messageId2), session))
.subscribeOn(Schedulers.newSingle("test"))
.block();
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
index a5d4e09f00..29cc21aa92 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
@@ -174,7 +174,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
MessageMetaData simpleMessageMetaData2 = messageResult2.messageMetaData();
eventBus.register(eventCollector);
- Mono.from(messageIdManager.delete(ImmutableList.of(messageId1, messageId2), session))
+ Mono.from(messageIdManager.delete(ImmutableSet.of(messageId1, messageId2), session))
.subscribeOn(Schedulers.newSingle("test"))
.block();
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
index 3b3ecd2c43..92d568e7ae 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
@@ -28,7 +28,6 @@ import java.util.Map;
import java.util.Set;
import java.util.function.Predicate;
-import com.google.common.collect.ImmutableSet;
import jakarta.mail.Flags;
import org.apache.james.core.Username;
@@ -51,12 +50,10 @@ import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageResult;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import reactor.core.publisher.Mono;
public abstract class AbstractMessageIdManagerStorageTest {
public static final Flags FLAGS = new Flags();
@@ -115,15 +112,6 @@ public abstract class AbstractMessageIdManagerStorageTest {
.isEqualTo(DeleteResult.notFound(messageId));
}
- @Disabled("Fails for cassandra app")
- @Test
- void deleteMessageShouldSupportDuplicatedEntries() throws MailboxException {
- MessageId messageId = testingData.persist(aliceMailbox1.getMailboxId(), messageUid1, FLAGS, aliceSession);
-
- assertThat(Mono.from(messageIdManager.delete(ImmutableList.of(messageId, messageId), aliceSession)).block())
- .isEqualTo(DeleteResult.destroyed(messageId));
- }
-
@Test
void setInMailboxesShouldNotFailWhenMessageDoesNotExist() throws Exception {
MessageId messageId = testingData.createNotUsedMessageId();
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesDestructionProcessor.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesDestructionProcessor.java
index d532cb6ce8..3254ee9b1b 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesDestructionProcessor.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesDestructionProcessor.java
@@ -39,6 +39,7 @@ import org.slf4j.LoggerFactory;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
import reactor.core.publisher.Mono;
@@ -68,7 +69,7 @@ public class SetMessagesDestructionProcessor implements SetMessagesProcessor {
if (toBeDestroyed.isEmpty()) {
return Mono.just(SetMessagesResponse.builder().build());
}
- return Mono.from(messageIdManager.delete(toBeDestroyed, mailboxSession))
+ return Mono.from(messageIdManager.delete(ImmutableSet.copyOf(toBeDestroyed), mailboxSession))
.map(deleteResult -> SetMessagesResponse.builder()
.destroyed(ImmutableList.copyOf(deleteResult.getDestroyed()))
.notDestroyed(deleteResult.getNotFound().stream()
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/EmailSetDeletePerformer.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/EmailSetDeletePerformer.scala
index 871ddd9572..1f4149711b 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/EmailSetDeletePerformer.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/EmailSetDeletePerformer.scala
@@ -96,7 +96,7 @@ class EmailSetDeletePerformer @Inject()(messageIdManager: MessageIdManager,
case _ => None
}
- SMono(messageIdManager.delete(messageIds.toList.asJava, mailboxSession))
+ SMono(messageIdManager.delete(messageIds.toSet.asJava, mailboxSession))
.doOnSuccess(auditTrail(_, mailboxSession))
.map(DestroyResult.from)
.onErrorResume(e => SMono.just(messageIds.map(id => DestroyFailure(EmailSet.asUnparsed(id), e))))
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org
(james-project) 01/02: JAMES-4014 Failing test MessageIdManager::deleteMessageShouldSupportDuplicatedEntries
Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 569a5b304723c2b2fffbd8f2940c062c9c7adbff
Author: Benoit TELLIER <bt...@linagora.com>
AuthorDate: Thu Feb 29 14:09:43 2024 +0100
JAMES-4014 Failing test MessageIdManager::deleteMessageShouldSupportDuplicatedEntries
Or... This leaks on S3 503!
---
.../mailbox/store/AbstractMessageIdManagerStorageTest.java | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
index 92d568e7ae..3b3ecd2c43 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
@@ -28,6 +28,7 @@ import java.util.Map;
import java.util.Set;
import java.util.function.Predicate;
+import com.google.common.collect.ImmutableSet;
import jakarta.mail.Flags;
import org.apache.james.core.Username;
@@ -50,10 +51,12 @@ import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageResult;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import reactor.core.publisher.Mono;
public abstract class AbstractMessageIdManagerStorageTest {
public static final Flags FLAGS = new Flags();
@@ -112,6 +115,15 @@ public abstract class AbstractMessageIdManagerStorageTest {
.isEqualTo(DeleteResult.notFound(messageId));
}
+ @Disabled("Fails for cassandra app")
+ @Test
+ void deleteMessageShouldSupportDuplicatedEntries() throws MailboxException {
+ MessageId messageId = testingData.persist(aliceMailbox1.getMailboxId(), messageUid1, FLAGS, aliceSession);
+
+ assertThat(Mono.from(messageIdManager.delete(ImmutableList.of(messageId, messageId), aliceSession)).block())
+ .isEqualTo(DeleteResult.destroyed(messageId));
+ }
+
@Test
void setInMailboxesShouldNotFailWhenMessageDoesNotExist() throws Exception {
MessageId messageId = testingData.createNotUsedMessageId();
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org