This is an automated email from the ASF dual-hosted git repository. rcordier pushed a commit to branch 3.6.x in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 0eed32519222fbf8097aec89f9c8d0ffa2bfe39f Author: Benoit Tellier <[email protected]> AuthorDate: Fri Apr 9 12:18:18 2021 +0700 JAMES-3557 JMAP */changes: Increase default maxChanges 5 -> 256 We rely on an injected constant to lower this value in our integration tests. --- .../james/modules/mailbox/CassandraMailboxModule.java | 4 ++++ .../james/modules/mailbox/MemoryMailboxModule.java | 4 ++++ .../change/CassandraEmailChangeRepository.java | 15 +++++++++------ .../change/CassandraMailboxChangeRepository.java | 15 +++++++++------ .../change/CassandraEmailChangeRepositoryTest.java | 2 +- .../change/CassandraMailboxChangeRepositoryTest.java | 3 +-- .../memory/change/MemoryEmailChangeRepository.java | 14 ++++++++++---- .../memory/change/MemoryMailboxChangeRepository.java | 18 ++++++++++++------ .../jmap/api/change/EmailChangeRepositoryContract.java | 1 + .../api/change/MailboxChangeRepositoryContract.java | 3 ++- .../memory/change/MemoryEmailChangeRepositoryTest.java | 3 ++- .../change/MemoryMailboxChangeRepositoryTest.java | 4 ++-- .../distributed/DistributedEmailChangeMethodTest.java | 9 ++++++++- .../DistributedMailboxChangeMethodTest.java | 9 ++++++++- .../rfc8621/memory/MemoryEmailChangesMethodTest.java | 9 ++++++++- .../rfc8621/memory/MemoryMailboxChangesMethodTest.java | 9 ++++++++- .../james/jmap/change/MailboxChangeListenerTest.scala | 9 +++++---- 17 files changed, 94 insertions(+), 37 deletions(-) diff --git a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java index 0e8c809..01e47ca 100644 --- a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java +++ b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java @@ -30,6 +30,7 @@ import org.apache.james.eventsourcing.Event; import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTO; import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule; import org.apache.james.jmap.api.change.EmailChangeRepository; +import org.apache.james.jmap.api.change.Limit; import org.apache.james.jmap.api.change.MailboxChangeRepository; import org.apache.james.jmap.api.change.State; import org.apache.james.jmap.cassandra.change.CassandraEmailChangeRepository; @@ -200,6 +201,9 @@ public class CassandraMailboxModule extends AbstractModule { bind(SessionProvider.class).to(SessionProviderImpl.class); bind(AttachmentContentLoader.class).to(AttachmentManager.class); + bind(Limit.class).annotatedWith(Names.named(CassandraEmailChangeRepository.LIMIT_NAME)).toInstance(Limit.of(256)); + bind(Limit.class).annotatedWith(Names.named(CassandraMailboxChangeRepository.LIMIT_NAME)).toInstance(Limit.of(256)); + bind(ReIndexer.class).to(ReIndexerImpl.class); bind(MessageIdReIndexer.class).to(MessageIdReIndexerImpl.class); diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java index 790af62..90c0e2a 100644 --- a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java +++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java @@ -27,6 +27,7 @@ import org.apache.james.adapter.mailbox.UserRepositoryAuthenticator; import org.apache.james.adapter.mailbox.UserRepositoryAuthorizator; import org.apache.james.events.EventListener; import org.apache.james.jmap.api.change.EmailChangeRepository; +import org.apache.james.jmap.api.change.Limit; import org.apache.james.jmap.api.change.MailboxChangeRepository; import org.apache.james.jmap.api.change.State; import org.apache.james.jmap.memory.change.MemoryEmailChangeRepository; @@ -140,6 +141,9 @@ public class MemoryMailboxModule extends AbstractModule { bind(MemoryDeletedMessageMetadataVault.class).in(Scopes.SINGLETON); bind(SessionProviderImpl.class).in(Scopes.SINGLETON); + bind(Limit.class).annotatedWith(Names.named(MemoryEmailChangeRepository.LIMIT_NAME)).toInstance(Limit.of(256)); + bind(Limit.class).annotatedWith(Names.named(MemoryMailboxChangeRepository.LIMIT_NAME)).toInstance(Limit.of(256)); + Multibinder.newSetBinder(binder(), MailboxManagerDefinition.class) .addBinding() .to(MemoryMailboxManagerDefinition.class); diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraEmailChangeRepository.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraEmailChangeRepository.java index 59b1f77..deb4eba 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraEmailChangeRepository.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraEmailChangeRepository.java @@ -22,6 +22,7 @@ package org.apache.james.jmap.cassandra.change; import java.util.Optional; import javax.inject.Inject; +import javax.inject.Named; import org.apache.james.jmap.api.change.EmailChange; import org.apache.james.jmap.api.change.EmailChangeRepository; @@ -37,13 +38,15 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; public class CassandraEmailChangeRepository implements EmailChangeRepository { - public static final Limit DEFAULT_NUMBER_OF_CHANGES = Limit.of(5); + public static final String LIMIT_NAME = "emailChangeDefaultLimit"; private final EmailChangeRepositoryDAO emailChangeRepositoryDAO; + private final Limit defaultLimit; @Inject - public CassandraEmailChangeRepository(EmailChangeRepositoryDAO emailChangeRepositoryDAO) { + public CassandraEmailChangeRepository(EmailChangeRepositoryDAO emailChangeRepositoryDAO, @Named(LIMIT_NAME) Limit defaultLimit) { this.emailChangeRepositoryDAO = emailChangeRepositoryDAO; + this.defaultLimit = defaultLimit; } @Override @@ -60,14 +63,14 @@ public class CassandraEmailChangeRepository implements EmailChangeRepository { if (state.equals(State.INITIAL)) { return emailChangeRepositoryDAO.getAllChanges(accountId) .filter(change -> !change.isDelegated()) - .collect(new EmailChanges.Builder.EmailChangeCollector(state, maxChanges.orElse(DEFAULT_NUMBER_OF_CHANGES))); + .collect(new EmailChanges.Builder.EmailChangeCollector(state, maxChanges.orElse(defaultLimit))); } return emailChangeRepositoryDAO.getChangesSince(accountId, state) .switchIfEmpty(Flux.error(new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) .filter(change -> !change.isDelegated()) .filter(change -> !change.getState().equals(state)) - .collect(new EmailChanges.Builder.EmailChangeCollector(state, maxChanges.orElse(DEFAULT_NUMBER_OF_CHANGES))); + .collect(new EmailChanges.Builder.EmailChangeCollector(state, maxChanges.orElse(defaultLimit))); } @Override @@ -78,13 +81,13 @@ public class CassandraEmailChangeRepository implements EmailChangeRepository { if (state.equals(State.INITIAL)) { return emailChangeRepositoryDAO.getAllChanges(accountId) - .collect(new EmailChanges.Builder.EmailChangeCollector(state, maxChanges.orElse(DEFAULT_NUMBER_OF_CHANGES))); + .collect(new EmailChanges.Builder.EmailChangeCollector(state, maxChanges.orElse(defaultLimit))); } return emailChangeRepositoryDAO.getChangesSince(accountId, state) .switchIfEmpty(Flux.error(new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) .filter(change -> !change.getState().equals(state)) - .collect(new EmailChanges.Builder.EmailChangeCollector(state, maxChanges.orElse(DEFAULT_NUMBER_OF_CHANGES))); + .collect(new EmailChanges.Builder.EmailChangeCollector(state, maxChanges.orElse(defaultLimit))); } @Override diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraMailboxChangeRepository.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraMailboxChangeRepository.java index b0d9f05..ce2b5b9 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraMailboxChangeRepository.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraMailboxChangeRepository.java @@ -22,6 +22,7 @@ package org.apache.james.jmap.cassandra.change; import java.util.Optional; import javax.inject.Inject; +import javax.inject.Named; import org.apache.james.jmap.api.change.Limit; import org.apache.james.jmap.api.change.MailboxChange; @@ -37,13 +38,15 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; public class CassandraMailboxChangeRepository implements MailboxChangeRepository { - public static final Limit DEFAULT_NUMBER_OF_CHANGES = Limit.of(5); + public static final String LIMIT_NAME = "mailboxChangeDefaultLimit"; private final MailboxChangeRepositoryDAO mailboxChangeRepositoryDAO; + private final Limit defaultLimit; @Inject - public CassandraMailboxChangeRepository(MailboxChangeRepositoryDAO mailboxChangeRepositoryDAO) { + public CassandraMailboxChangeRepository(MailboxChangeRepositoryDAO mailboxChangeRepositoryDAO, @Named(LIMIT_NAME) Limit defaultLimit) { this.mailboxChangeRepositoryDAO = mailboxChangeRepositoryDAO; + this.defaultLimit = defaultLimit; } @Override @@ -60,14 +63,14 @@ public class CassandraMailboxChangeRepository implements MailboxChangeRepository if (state.equals(State.INITIAL)) { return mailboxChangeRepositoryDAO.getAllChanges(accountId) .filter(change -> !change.isDelegated()) - .collect(new MailboxChanges.MailboxChangesBuilder.MailboxChangeCollector(state, maxChanges.orElse(DEFAULT_NUMBER_OF_CHANGES))); + .collect(new MailboxChanges.MailboxChangesBuilder.MailboxChangeCollector(state, maxChanges.orElse(defaultLimit))); } return mailboxChangeRepositoryDAO.getChangesSince(accountId, state) .switchIfEmpty(Flux.error(new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) .filter(change -> !change.isDelegated()) .filter(change -> !change.getState().equals(state)) - .collect(new MailboxChanges.MailboxChangesBuilder.MailboxChangeCollector(state, maxChanges.orElse(DEFAULT_NUMBER_OF_CHANGES))); + .collect(new MailboxChanges.MailboxChangesBuilder.MailboxChangeCollector(state, maxChanges.orElse(defaultLimit))); } @Override @@ -78,13 +81,13 @@ public class CassandraMailboxChangeRepository implements MailboxChangeRepository if (state.equals(State.INITIAL)) { return mailboxChangeRepositoryDAO.getAllChanges(accountId) - .collect(new MailboxChanges.MailboxChangesBuilder.MailboxChangeCollector(state, maxChanges.orElse(DEFAULT_NUMBER_OF_CHANGES))); + .collect(new MailboxChanges.MailboxChangesBuilder.MailboxChangeCollector(state, maxChanges.orElse(defaultLimit))); } return mailboxChangeRepositoryDAO.getChangesSince(accountId, state) .switchIfEmpty(Flux.error(new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) .filter(change -> !change.getState().equals(state)) - .collect(new MailboxChanges.MailboxChangesBuilder.MailboxChangeCollector(state, maxChanges.orElse(DEFAULT_NUMBER_OF_CHANGES))); + .collect(new MailboxChanges.MailboxChangesBuilder.MailboxChangeCollector(state, maxChanges.orElse(defaultLimit))); } @Override diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/change/CassandraEmailChangeRepositoryTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/change/CassandraEmailChangeRepositoryTest.java index 8094155..5741f80 100644 --- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/change/CassandraEmailChangeRepositoryTest.java +++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/change/CassandraEmailChangeRepositoryTest.java @@ -46,7 +46,7 @@ public class CassandraEmailChangeRepositoryTest implements EmailChangeRepository @BeforeEach public void setUp(CassandraCluster cassandra) { emailChangeRepositoryDAO = new EmailChangeRepositoryDAO(cassandra.getConf(), cassandra.getTypesProvider()); - emailChangeRepository = new CassandraEmailChangeRepository(emailChangeRepositoryDAO); + emailChangeRepository = new CassandraEmailChangeRepository(emailChangeRepositoryDAO, DEFAULT_NUMBER_OF_CHANGES); } @Override diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/change/CassandraMailboxChangeRepositoryTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/change/CassandraMailboxChangeRepositoryTest.java index a6e743a..2c7e5e2 100644 --- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/change/CassandraMailboxChangeRepositoryTest.java +++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/change/CassandraMailboxChangeRepositoryTest.java @@ -24,7 +24,6 @@ import org.apache.james.backends.cassandra.CassandraClusterExtension; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.init.CassandraZonedDateTimeModule; import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule; -import org.apache.james.jmap.api.change.MailboxChange; import org.apache.james.jmap.api.change.MailboxChangeRepository; import org.apache.james.jmap.api.change.MailboxChangeRepositoryContract; import org.apache.james.jmap.api.change.State; @@ -47,7 +46,7 @@ public class CassandraMailboxChangeRepositoryTest implements MailboxChangeReposi @BeforeEach public void setUp(CassandraCluster cassandra) { mailboxChangeRepositoryDAO = new MailboxChangeRepositoryDAO(cassandra.getConf(), cassandra.getTypesProvider()); - mailboxChangeRepository = new CassandraMailboxChangeRepository(mailboxChangeRepositoryDAO); + mailboxChangeRepository = new CassandraMailboxChangeRepository(mailboxChangeRepositoryDAO, DEFAULT_NUMBER_OF_CHANGES); } @Override diff --git a/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryEmailChangeRepository.java b/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryEmailChangeRepository.java index 4f8ee2c..58d595b 100644 --- a/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryEmailChangeRepository.java +++ b/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryEmailChangeRepository.java @@ -22,6 +22,9 @@ package org.apache.james.jmap.memory.change; import java.util.Comparator; import java.util.Optional; +import javax.inject.Inject; +import javax.inject.Named; + import org.apache.james.jmap.api.change.EmailChange; import org.apache.james.jmap.api.change.EmailChangeRepository; import org.apache.james.jmap.api.change.EmailChanges; @@ -40,11 +43,14 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; public class MemoryEmailChangeRepository implements EmailChangeRepository { - public static final Limit DEFAULT_NUMBER_OF_CHANGES = Limit.of(5); + public static final String LIMIT_NAME = "emailChangeDefaultLimit"; private final Multimap<AccountId, EmailChange> emailChangeMap; + private final Limit defaultLimit; - public MemoryEmailChangeRepository() { + @Inject + public MemoryEmailChangeRepository(@Named(LIMIT_NAME) Limit defaultLimit) { + this.defaultLimit = defaultLimit; this.emailChangeMap = Multimaps.synchronizedListMultimap(ArrayListMultimap.create()); } @@ -72,7 +78,7 @@ public class MemoryEmailChangeRepository implements EmailChangeRepository { return resolveAllChanges(accountId, state) .filter(change -> !change.isDelegated()) - .collect(new EmailChangeCollector(state, maxChanges.orElse(DEFAULT_NUMBER_OF_CHANGES))); + .collect(new EmailChangeCollector(state, maxChanges.orElse(defaultLimit))); } @Override @@ -81,7 +87,7 @@ public class MemoryEmailChangeRepository implements EmailChangeRepository { Preconditions.checkNotNull(state); return resolveAllChanges(accountId, state) - .collect(new EmailChangeCollector(state, maxChanges.orElse(DEFAULT_NUMBER_OF_CHANGES))); + .collect(new EmailChangeCollector(state, maxChanges.orElse(defaultLimit))); } @Override diff --git a/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryMailboxChangeRepository.java b/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryMailboxChangeRepository.java index efcc22a..b034b9b 100644 --- a/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryMailboxChangeRepository.java +++ b/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryMailboxChangeRepository.java @@ -23,6 +23,9 @@ import java.util.Comparator; import java.util.Optional; import java.util.function.Predicate; +import javax.inject.Inject; +import javax.inject.Named; + import org.apache.james.jmap.api.change.Limit; import org.apache.james.jmap.api.change.MailboxChange; import org.apache.james.jmap.api.change.MailboxChangeRepository; @@ -41,11 +44,14 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; public class MemoryMailboxChangeRepository implements MailboxChangeRepository { - public static final Limit DEFAULT_NUMBER_OF_CHANGES = Limit.of(5); + public static final String LIMIT_NAME = "mailboxChangeDefaultLimit"; private final Multimap<AccountId, MailboxChange> mailboxChangeMap; + private final Limit defaultLimit; - public MemoryMailboxChangeRepository() { + @Inject + public MemoryMailboxChangeRepository(@Named(LIMIT_NAME) Limit defaultLimit) { + this.defaultLimit = defaultLimit; this.mailboxChangeMap = Multimaps.synchronizedListMultimap(ArrayListMultimap.create()); } @@ -63,7 +69,7 @@ public class MemoryMailboxChangeRepository implements MailboxChangeRepository { return Flux.fromIterable(mailboxChangeMap.get(accountId)) .filter(Predicate.not(MailboxChange::isDelegated)) .sort(Comparator.comparing(MailboxChange::getDate)) - .collect(new MailboxChangeCollector(state, maxChanges.orElse(DEFAULT_NUMBER_OF_CHANGES))); + .collect(new MailboxChangeCollector(state, maxChanges.orElse(defaultLimit))); } return findByState(accountId, state) @@ -71,7 +77,7 @@ public class MemoryMailboxChangeRepository implements MailboxChangeRepository { .filter(change -> change.getDate().isAfter(currentState.getDate())) .filter(Predicate.not(MailboxChange::isDelegated)) .sort(Comparator.comparing(MailboxChange::getDate))) - .collect(new MailboxChangeCollector(state, maxChanges.orElse(DEFAULT_NUMBER_OF_CHANGES))); + .collect(new MailboxChangeCollector(state, maxChanges.orElse(defaultLimit))); } @Override @@ -82,14 +88,14 @@ public class MemoryMailboxChangeRepository implements MailboxChangeRepository { if (state.equals(State.INITIAL)) { return Flux.fromIterable(mailboxChangeMap.get(accountId)) .sort(Comparator.comparing(MailboxChange::getDate)) - .collect(new MailboxChangeCollector(state, maxChanges.orElse(DEFAULT_NUMBER_OF_CHANGES))); + .collect(new MailboxChangeCollector(state, maxChanges.orElse(defaultLimit))); } return findByState(accountId, state) .flatMapMany(currentState -> Flux.fromIterable(mailboxChangeMap.get(accountId)) .filter(change -> change.getDate().isAfter(currentState.getDate())) .sort(Comparator.comparing(MailboxChange::getDate))) - .collect(new MailboxChangeCollector(state, maxChanges.orElse(DEFAULT_NUMBER_OF_CHANGES))); + .collect(new MailboxChangeCollector(state, maxChanges.orElse(defaultLimit))); } private Mono<MailboxChange> findByState(AccountId accountId, State state) { diff --git a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/change/EmailChangeRepositoryContract.java b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/change/EmailChangeRepositoryContract.java index d2a6641..7112ab6 100644 --- a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/change/EmailChangeRepositoryContract.java +++ b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/change/EmailChangeRepositoryContract.java @@ -34,6 +34,7 @@ import org.assertj.core.api.SoftAssertions; import org.junit.jupiter.api.Test; public interface EmailChangeRepositoryContract { + Limit DEFAULT_NUMBER_OF_CHANGES = Limit.of(5); AccountId ACCOUNT_ID = AccountId.fromUsername(BOB); ZonedDateTime DATE = ZonedDateTime.now(); diff --git a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/change/MailboxChangeRepositoryContract.java b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/change/MailboxChangeRepositoryContract.java index cd6ad4a..57b4cf5 100644 --- a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/change/MailboxChangeRepositoryContract.java +++ b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/change/MailboxChangeRepositoryContract.java @@ -38,6 +38,7 @@ import com.google.common.collect.ImmutableList; public interface MailboxChangeRepositoryContract { AccountId ACCOUNT_ID = AccountId.fromUsername(BOB); ZonedDateTime DATE = ZonedDateTime.now(); + Limit DEFAULT_NUMBER_OF_CHANGES = Limit.of(5); State.Factory stateFactory(); @@ -376,7 +377,7 @@ public interface MailboxChangeRepositoryContract { } @Test - default void getChangesShouldReturnThrowWhenNumberOfChangesExceedMaxChanges() { + default void getChangesShouldThrowWhenNumberOfChangesExceedMaxChanges() { MailboxChangeRepository repository = mailboxChangeRepository(); State.Factory stateFactory = stateFactory(); State referenceState = stateFactory.generate(); diff --git a/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/change/MemoryEmailChangeRepositoryTest.java b/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/change/MemoryEmailChangeRepositoryTest.java index f7711db..84770f5 100644 --- a/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/change/MemoryEmailChangeRepositoryTest.java +++ b/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/change/MemoryEmailChangeRepositoryTest.java @@ -29,11 +29,12 @@ import org.apache.james.mailbox.model.TestMessageId; import org.junit.jupiter.api.BeforeEach; public class MemoryEmailChangeRepositoryTest implements EmailChangeRepositoryContract { + EmailChangeRepository emailChangeRepository; @BeforeEach void setup() { - emailChangeRepository = new MemoryEmailChangeRepository(); + emailChangeRepository = new MemoryEmailChangeRepository(DEFAULT_NUMBER_OF_CHANGES); } @Override diff --git a/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/change/MemoryMailboxChangeRepositoryTest.java b/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/change/MemoryMailboxChangeRepositoryTest.java index 660f18f..81a5245 100644 --- a/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/change/MemoryMailboxChangeRepositoryTest.java +++ b/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/change/MemoryMailboxChangeRepositoryTest.java @@ -25,8 +25,8 @@ import org.apache.james.jmap.api.change.MailboxChangeRepository; import org.apache.james.jmap.api.change.MailboxChangeRepositoryContract; import org.apache.james.jmap.api.change.State; import org.apache.james.mailbox.model.MailboxId; -import org.junit.jupiter.api.BeforeEach; import org.apache.james.mailbox.model.TestId; +import org.junit.jupiter.api.BeforeEach; public class MemoryMailboxChangeRepositoryTest implements MailboxChangeRepositoryContract { MailboxChangeRepository mailboxChangeRepository; @@ -35,7 +35,7 @@ public class MemoryMailboxChangeRepositoryTest implements MailboxChangeRepositor @BeforeEach void setup() { - mailboxChangeRepository = new MemoryMailboxChangeRepository(); + mailboxChangeRepository = new MemoryMailboxChangeRepository(DEFAULT_NUMBER_OF_CHANGES); stateFactory = new State.DefaultFactory(); } diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailChangeMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailChangeMethodTest.java index d471d81..9d0c344 100644 --- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailChangeMethodTest.java +++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailChangeMethodTest.java @@ -25,7 +25,10 @@ import org.apache.james.CassandraRabbitMQJamesServerMain; import org.apache.james.DockerElasticSearchExtension; import org.apache.james.JamesServerBuilder; import org.apache.james.JamesServerExtension; +import org.apache.james.jmap.api.change.Limit; import org.apache.james.jmap.api.change.State; +import org.apache.james.jmap.cassandra.change.CassandraEmailChangeRepository; +import org.apache.james.jmap.cassandra.change.CassandraMailboxChangeRepository; import org.apache.james.jmap.cassandra.change.CassandraStateFactory; import org.apache.james.jmap.rfc8621.contract.EmailChangesMethodContract; import org.apache.james.modules.AwsS3BlobStoreExtension; @@ -34,6 +37,8 @@ import org.apache.james.modules.TestJMAPServerModule; import org.apache.james.modules.blobstore.BlobStoreConfiguration; import org.junit.jupiter.api.extension.RegisterExtension; +import com.google.inject.name.Names; + public class DistributedEmailChangeMethodTest implements EmailChangesMethodContract { @RegisterExtension static JamesServerExtension testExtension = new JamesServerBuilder<CassandraRabbitMQJamesConfiguration>(tmpDir -> @@ -50,7 +55,9 @@ public class DistributedEmailChangeMethodTest implements EmailChangesMethodContr .extension(new RabbitMQExtension()) .extension(new AwsS3BlobStoreExtension()) .server(configuration -> CassandraRabbitMQJamesServerMain.createServer(configuration) - .overrideWith(new TestJMAPServerModule())) + .overrideWith(new TestJMAPServerModule()) + .overrideWith(binder -> binder.bind(Limit.class).annotatedWith(Names.named(CassandraMailboxChangeRepository.LIMIT_NAME)).toInstance(Limit.of(5))) + .overrideWith(binder -> binder.bind(Limit.class).annotatedWith(Names.named(CassandraEmailChangeRepository.LIMIT_NAME)).toInstance(Limit.of(5)))) .build(); @Override diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxChangeMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxChangeMethodTest.java index 76d5c5f..db65a99 100644 --- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxChangeMethodTest.java +++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxChangeMethodTest.java @@ -25,7 +25,10 @@ import org.apache.james.CassandraRabbitMQJamesServerMain; import org.apache.james.DockerElasticSearchExtension; import org.apache.james.JamesServerBuilder; import org.apache.james.JamesServerExtension; +import org.apache.james.jmap.api.change.Limit; import org.apache.james.jmap.api.change.State; +import org.apache.james.jmap.cassandra.change.CassandraEmailChangeRepository; +import org.apache.james.jmap.cassandra.change.CassandraMailboxChangeRepository; import org.apache.james.jmap.cassandra.change.CassandraStateFactory; import org.apache.james.jmap.rfc8621.contract.MailboxChangesMethodContract; import org.apache.james.mailbox.cassandra.ids.CassandraId; @@ -36,6 +39,8 @@ import org.apache.james.modules.TestJMAPServerModule; import org.apache.james.modules.blobstore.BlobStoreConfiguration; import org.junit.jupiter.api.extension.RegisterExtension; +import com.google.inject.name.Names; + public class DistributedMailboxChangeMethodTest implements MailboxChangesMethodContract { @RegisterExtension static JamesServerExtension testExtension = new JamesServerBuilder<CassandraRabbitMQJamesConfiguration>(tmpDir -> @@ -52,7 +57,9 @@ public class DistributedMailboxChangeMethodTest implements MailboxChangesMethodC .extension(new RabbitMQExtension()) .extension(new AwsS3BlobStoreExtension()) .server(configuration -> CassandraRabbitMQJamesServerMain.createServer(configuration) - .overrideWith(new TestJMAPServerModule())) + .overrideWith(new TestJMAPServerModule()) + .overrideWith(binder -> binder.bind(Limit.class).annotatedWith(Names.named(CassandraMailboxChangeRepository.LIMIT_NAME)).toInstance(Limit.of(5))) + .overrideWith(binder -> binder.bind(Limit.class).annotatedWith(Names.named(CassandraEmailChangeRepository.LIMIT_NAME)).toInstance(Limit.of(5)))) .build(); @Override diff --git a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailChangesMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailChangesMethodTest.java index 79634b0..d38dac6 100644 --- a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailChangesMethodTest.java +++ b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailChangesMethodTest.java @@ -24,17 +24,24 @@ import static org.apache.james.MemoryJamesServerMain.IN_MEMORY_SERVER_AGGREGATE_ import org.apache.james.GuiceJamesServer; import org.apache.james.JamesServerBuilder; import org.apache.james.JamesServerExtension; +import org.apache.james.jmap.api.change.Limit; import org.apache.james.jmap.api.change.State; +import org.apache.james.jmap.memory.change.MemoryEmailChangeRepository; +import org.apache.james.jmap.memory.change.MemoryMailboxChangeRepository; import org.apache.james.jmap.rfc8621.contract.EmailChangesMethodContract; import org.apache.james.modules.TestJMAPServerModule; import org.junit.jupiter.api.extension.RegisterExtension; +import com.google.inject.name.Names; + public class MemoryEmailChangesMethodTest implements EmailChangesMethodContract { @RegisterExtension static JamesServerExtension testExtension = new JamesServerBuilder<>(JamesServerBuilder.defaultConfigurationProvider()) .server(configuration -> GuiceJamesServer.forConfiguration(configuration) .combineWith(IN_MEMORY_SERVER_AGGREGATE_MODULE) - .overrideWith(new TestJMAPServerModule())) + .overrideWith(new TestJMAPServerModule()) + .overrideWith(binder -> binder.bind(Limit.class).annotatedWith(Names.named(MemoryMailboxChangeRepository.LIMIT_NAME)).toInstance(Limit.of(5))) + .overrideWith(binder -> binder.bind(Limit.class).annotatedWith(Names.named(MemoryEmailChangeRepository.LIMIT_NAME)).toInstance(Limit.of(5)))) .build(); @Override diff --git a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryMailboxChangesMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryMailboxChangesMethodTest.java index e0cce3f..bf0f9a9 100644 --- a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryMailboxChangesMethodTest.java +++ b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryMailboxChangesMethodTest.java @@ -26,20 +26,27 @@ import java.util.concurrent.ThreadLocalRandom; import org.apache.james.GuiceJamesServer; import org.apache.james.JamesServerBuilder; import org.apache.james.JamesServerExtension; +import org.apache.james.jmap.api.change.Limit; import org.apache.james.jmap.api.change.State; +import org.apache.james.jmap.memory.change.MemoryEmailChangeRepository; +import org.apache.james.jmap.memory.change.MemoryMailboxChangeRepository; import org.apache.james.jmap.rfc8621.contract.MailboxChangesMethodContract; import org.apache.james.mailbox.inmemory.InMemoryId; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.modules.TestJMAPServerModule; import org.junit.jupiter.api.extension.RegisterExtension; +import com.google.inject.name.Names; + public class MemoryMailboxChangesMethodTest implements MailboxChangesMethodContract { @RegisterExtension static JamesServerExtension testExtension = new JamesServerBuilder<>(JamesServerBuilder.defaultConfigurationProvider()) .server(configuration -> GuiceJamesServer.forConfiguration(configuration) .combineWith(IN_MEMORY_SERVER_AGGREGATE_MODULE) - .overrideWith(new TestJMAPServerModule())) + .overrideWith(new TestJMAPServerModule()) + .overrideWith(binder -> binder.bind(Limit.class).annotatedWith(Names.named(MemoryMailboxChangeRepository.LIMIT_NAME)).toInstance(Limit.of(5))) + .overrideWith(binder -> binder.bind(Limit.class).annotatedWith(Names.named(MemoryEmailChangeRepository.LIMIT_NAME)).toInstance(Limit.of(5)))) .build(); @Override diff --git a/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/change/MailboxChangeListenerTest.scala b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/change/MailboxChangeListenerTest.scala index 23e5a2e..f4c0f7d 100644 --- a/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/change/MailboxChangeListenerTest.scala +++ b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/change/MailboxChangeListenerTest.scala @@ -25,9 +25,9 @@ import java.util import javax.mail.Flags import org.apache.james.events.delivery.InVmEventDelivery import org.apache.james.events.{Event, EventBus, EventListener, Group, InVMEventBus, MemoryEventDeadLetters, Registration, RegistrationKey, RetryBackoffConfiguration} -import org.apache.james.jmap.api.change.{EmailChange, EmailChangeRepository, MailboxChange, MailboxChangeRepository, State} +import org.apache.james.jmap.api.change.{EmailChange, EmailChangeRepository, Limit, MailboxChange, MailboxChangeRepository, State} import org.apache.james.jmap.api.model.AccountId -import org.apache.james.jmap.change.MailboxChangeListenerTest.ACCOUNT_ID +import org.apache.james.jmap.change.MailboxChangeListenerTest.{ACCOUNT_ID, DEFAULT_NUMBER_OF_CHANGES} import org.apache.james.jmap.memory.change.{MemoryEmailChangeRepository, MemoryMailboxChangeRepository} import org.apache.james.mailbox.MessageManager.{AppendCommand, AppendResult, FlagsUpdateMode} import org.apache.james.mailbox.fixture.MailboxFixture.{ALICE, BOB} @@ -45,6 +45,7 @@ import scala.jdk.OptionConverters._ object MailboxChangeListenerTest { val ACCOUNT_ID = AccountId.fromUsername(BOB) + val DEFAULT_NUMBER_OF_CHANGES: Limit = Limit.of(5) } class MailboxChangeListenerTest { @@ -71,9 +72,9 @@ class MailboxChangeListenerTest { mailboxManager = resources.getMailboxManager stateFactory = new State.DefaultFactory mailboxChangeFactory = new MailboxChange.Factory(stateFactory) - mailboxChangeRepository = new MemoryMailboxChangeRepository() + mailboxChangeRepository = new MemoryMailboxChangeRepository(DEFAULT_NUMBER_OF_CHANGES) emailChangeFactory = new EmailChange.Factory(stateFactory, resources.getMessageIdManager, resources.getMailboxManager) - emailChangeRepository = new MemoryEmailChangeRepository() + emailChangeRepository = new MemoryEmailChangeRepository(DEFAULT_NUMBER_OF_CHANGES) val eventBus = new EventBus { override def register(listener: EventListener.ReactiveEventListener, key: RegistrationKey): Publisher[Registration] = Mono.empty() --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
