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 f4312b6ce2bc69052c827d4134fd84d37cb68879 Author: Rene Cordier <rcord...@linagora.com> AuthorDate: Fri Apr 17 17:42:38 2020 +0700 JAMES-3138 Move increase and decrease to CurrentQuotaManager to have a allow a neutral RecomputeCurrentQuotasServiceContract --- .../org/apache/james/mailbox/quota/CurrentQuotaManager.java | 5 +++++ .../task/CassandraRecomputeCurrentQuotasServiceTest.java | 3 ++- .../jpa/mail/task/JPARecomputeCurrentQuotasServiceTest.java | 3 ++- .../mail/task/MemoryRecomputeCurrentQuotasServiceTest.java | 4 ++-- .../mailbox/store/quota/ListeningCurrentQuotaUpdater.java | 8 ++++---- .../james/mailbox/store/quota/StoreCurrentQuotaManager.java | 10 ++-------- .../mail/task/RecomputeCurrentQuotasServiceContract.java | 8 ++++---- .../mailbox/store/quota/StoreCurrentQuotaManagerTest.java | 12 ++++++------ 8 files changed, 27 insertions(+), 26 deletions(-) diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/quota/CurrentQuotaManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/quota/CurrentQuotaManager.java index 1e84e09..f99df4b 100644 --- a/mailbox/api/src/main/java/org/apache/james/mailbox/quota/CurrentQuotaManager.java +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/quota/CurrentQuotaManager.java @@ -22,6 +22,7 @@ package org.apache.james.mailbox.quota; import org.apache.james.core.quota.QuotaCountUsage; import org.apache.james.core.quota.QuotaSizeUsage; import org.apache.james.mailbox.model.CurrentQuotas; +import org.apache.james.mailbox.model.QuotaOperation; import org.apache.james.mailbox.model.QuotaRoot; import org.reactivestreams.Publisher; @@ -35,4 +36,8 @@ public interface CurrentQuotaManager { Publisher<QuotaSizeUsage> getCurrentStorage(QuotaRoot quotaRoot); Publisher<CurrentQuotas> getCurrentQuotas(QuotaRoot quotaRoot); + + Publisher<Void> increase(QuotaOperation quotaOperation); + + Publisher<Void> decrease(QuotaOperation quotaOperation); } diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/CassandraRecomputeCurrentQuotasServiceTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/CassandraRecomputeCurrentQuotasServiceTest.java index fc53f32..93d019c 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/CassandraRecomputeCurrentQuotasServiceTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/CassandraRecomputeCurrentQuotasServiceTest.java @@ -34,6 +34,7 @@ import org.apache.james.mailbox.SessionProvider; import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory; import org.apache.james.mailbox.cassandra.CassandraTestSystemFixture; import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule; +import org.apache.james.mailbox.quota.CurrentQuotaManager; import org.apache.james.mailbox.quota.UserQuotaRootResolver; import org.apache.james.mailbox.store.StoreMailboxManager; import org.apache.james.mailbox.store.mail.task.RecomputeCurrentQuotasService; @@ -104,7 +105,7 @@ public class CassandraRecomputeCurrentQuotasServiceTest implements RecomputeCurr } @Override - public StoreCurrentQuotaManager currentQuotaManager() { + public CurrentQuotaManager currentQuotaManager() { return currentQuotaManager; } diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/task/JPARecomputeCurrentQuotasServiceTest.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/task/JPARecomputeCurrentQuotasServiceTest.java index 95ba065..722848c 100644 --- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/task/JPARecomputeCurrentQuotasServiceTest.java +++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/task/JPARecomputeCurrentQuotasServiceTest.java @@ -32,6 +32,7 @@ import org.apache.james.mailbox.jpa.JpaMailboxManagerProvider; import org.apache.james.mailbox.jpa.mail.JPAModSeqProvider; import org.apache.james.mailbox.jpa.mail.JPAUidProvider; import org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager; +import org.apache.james.mailbox.quota.CurrentQuotaManager; import org.apache.james.mailbox.quota.UserQuotaRootResolver; import org.apache.james.mailbox.store.StoreMailboxManager; import org.apache.james.mailbox.store.mail.task.RecomputeCurrentQuotasService; @@ -112,7 +113,7 @@ class JPARecomputeCurrentQuotasServiceTest implements RecomputeCurrentQuotasServ } @Override - public StoreCurrentQuotaManager currentQuotaManager() { + public CurrentQuotaManager currentQuotaManager() { return currentQuotaManager; } diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/task/MemoryRecomputeCurrentQuotasServiceTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/task/MemoryRecomputeCurrentQuotasServiceTest.java index f9a550d..85c3b1c 100644 --- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/task/MemoryRecomputeCurrentQuotasServiceTest.java +++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/task/MemoryRecomputeCurrentQuotasServiceTest.java @@ -26,10 +26,10 @@ import org.apache.james.domainlist.memory.MemoryDomainList; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.SessionProvider; import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources; +import org.apache.james.mailbox.quota.CurrentQuotaManager; import org.apache.james.mailbox.quota.UserQuotaRootResolver; import org.apache.james.mailbox.store.mail.task.RecomputeCurrentQuotasService; import org.apache.james.mailbox.store.mail.task.RecomputeCurrentQuotasServiceContract; -import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager; import org.apache.james.user.api.UsersRepository; import org.apache.james.user.memory.MemoryUsersRepository; import org.junit.jupiter.api.BeforeEach; @@ -72,7 +72,7 @@ class MemoryRecomputeCurrentQuotasServiceTest implements RecomputeCurrentQuotasS } @Override - public StoreCurrentQuotaManager currentQuotaManager() { + public CurrentQuotaManager currentQuotaManager() { return resources.getCurrentQuotaManager(); } diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java index c8bc83a..6223e0d 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java @@ -91,7 +91,7 @@ public class ListeningCurrentQuotaUpdater implements MailboxListener.GroupMailbo private void handleExpungedEvent(Expunged expunged, QuotaRoot quotaRoot) { computeQuotaOperation(expunged, quotaRoot).ifPresent(Throwing.<QuotaOperation>consumer(quotaOperation -> { - currentQuotaManager.decrease(quotaOperation) + Mono.from(currentQuotaManager.decrease(quotaOperation)) .then(Mono.defer(Throwing.supplier(() -> eventBus.dispatch( EventFactory.quotaUpdated() .randomEventId() @@ -108,7 +108,7 @@ public class ListeningCurrentQuotaUpdater implements MailboxListener.GroupMailbo private void handleAddedEvent(Added added, QuotaRoot quotaRoot) { computeQuotaOperation(added, quotaRoot).ifPresent(Throwing.<QuotaOperation>consumer(quotaOperation -> { - currentQuotaManager.increase(quotaOperation) + Mono.from(currentQuotaManager.increase(quotaOperation)) .then(Mono.defer(Throwing.supplier(() -> eventBus.dispatch( EventFactory.quotaUpdated() .randomEventId() @@ -143,9 +143,9 @@ public class ListeningCurrentQuotaUpdater implements MailboxListener.GroupMailbo private void handleMailboxDeletionEvent(MailboxDeletion mailboxDeletionEvent) throws MailboxException { boolean mailboxContainedMessages = mailboxDeletionEvent.getDeletedMessageCount().asLong() > 0; if (mailboxContainedMessages) { - currentQuotaManager.decrease(new QuotaOperation(mailboxDeletionEvent.getQuotaRoot(), + Mono.from(currentQuotaManager.decrease(new QuotaOperation(mailboxDeletionEvent.getQuotaRoot(), mailboxDeletionEvent.getDeletedMessageCount(), - mailboxDeletionEvent.getTotalDeletedSize())) + mailboxDeletionEvent.getTotalDeletedSize()))) .block(); } } diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java index 3891326..a60c729 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java @@ -26,20 +26,14 @@ import org.apache.james.mailbox.quota.CurrentQuotaManager; import reactor.core.publisher.Mono; public interface StoreCurrentQuotaManager extends CurrentQuotaManager { - - Mono<Void> increase(QuotaOperation quotaOperation); - - Mono<Void> decrease(QuotaOperation quotaOperation); - default Mono<Void> resetCurrentQuotas(QuotaOperation quotaOperation) { return Mono.from(getCurrentQuotas(quotaOperation.quotaRoot())) .flatMap(storedQuotas -> { if (!storedQuotas.equals(CurrentQuotas.from(quotaOperation))) { - return decrease(new QuotaOperation(quotaOperation.quotaRoot(), storedQuotas.count(), storedQuotas.size())) - .then(increase(quotaOperation)); + return Mono.from(decrease(new QuotaOperation(quotaOperation.quotaRoot(), storedQuotas.count(), storedQuotas.size()))) + .then(Mono.from(increase(quotaOperation))); } return Mono.empty(); }); } - } diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/task/RecomputeCurrentQuotasServiceContract.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/task/RecomputeCurrentQuotasServiceContract.java index d4bb3b0..f9a8f45 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/task/RecomputeCurrentQuotasServiceContract.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/task/RecomputeCurrentQuotasServiceContract.java @@ -34,9 +34,9 @@ import org.apache.james.mailbox.model.CurrentQuotas; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.QuotaOperation; import org.apache.james.mailbox.model.QuotaRoot; +import org.apache.james.mailbox.quota.CurrentQuotaManager; import org.apache.james.mailbox.quota.UserQuotaRootResolver; import org.apache.james.mailbox.store.mail.task.RecomputeCurrentQuotasService.Context; -import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager; import org.apache.james.mime4j.dom.Message; import org.apache.james.task.Task; import org.apache.james.user.api.UsersRepository; @@ -55,7 +55,7 @@ public interface RecomputeCurrentQuotasServiceContract { UsersRepository usersRepository(); SessionProvider sessionProvider(); MailboxManager mailboxManager(); - StoreCurrentQuotaManager currentQuotaManager(); + CurrentQuotaManager currentQuotaManager(); UserQuotaRootResolver userQuotaRootResolver(); RecomputeCurrentQuotasService testee(); @@ -126,7 +126,7 @@ public interface RecomputeCurrentQuotasServiceContract { QuotaRoot quotaRoot = userQuotaRootResolver().forUser(USER_1); QuotaOperation operation = new QuotaOperation(quotaRoot, QuotaCountUsage.count(3L), QuotaSizeUsage.size(390L)); - currentQuotaManager().increase(operation).block(); + Mono.from(currentQuotaManager().increase(operation)).block(); testee().recomputeCurrentQuotas(new Context()).block(); @@ -184,7 +184,7 @@ public interface RecomputeCurrentQuotasServiceContract { QuotaRoot quotaRoot = userQuotaRootResolver().forUser(USER_1); QuotaOperation operation = new QuotaOperation(quotaRoot, QuotaCountUsage.count(3L), QuotaSizeUsage.size(390L)); - currentQuotaManager().increase(operation).block(); + Mono.from(currentQuotaManager().increase(operation)).block(); Context context = new Context(); testee().recomputeCurrentQuotas(context).block(); diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManagerTest.java index 4ba155c..0a673a2 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManagerTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManagerTest.java @@ -67,7 +67,7 @@ public abstract class StoreCurrentQuotaManagerTest { @Test void increaseShouldWork() { - testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100))).block(); + Mono.from(testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100)))).block(); SoftAssertions.assertSoftly(Throwing.consumer(softly -> { softly.assertThat(Mono.from(testee.getCurrentQuotas(QUOTA_ROOT)).block()).isEqualTo(CURRENT_QUOTAS); @@ -78,9 +78,9 @@ public abstract class StoreCurrentQuotaManagerTest { @Test void decreaseShouldWork() { - testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(20), QuotaSizeUsage.size(200))).block(); + Mono.from(testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(20), QuotaSizeUsage.size(200)))).block(); - testee.decrease(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100))).block(); + Mono.from(testee.decrease(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100)))).block(); SoftAssertions.assertSoftly(Throwing.consumer(softly -> { softly.assertThat(Mono.from(testee.getCurrentQuotas(QUOTA_ROOT)).block()).isEqualTo(CURRENT_QUOTAS); @@ -91,7 +91,7 @@ public abstract class StoreCurrentQuotaManagerTest { @Test void decreaseShouldNotFailWhenItLeadsToNegativeValues() { - testee.decrease(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100))).block(); + Mono.from(testee.decrease(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100)))).block(); SoftAssertions.assertSoftly(Throwing.consumer(softly -> { softly.assertThat(Mono.from(testee.getCurrentQuotas(QUOTA_ROOT)).block()) @@ -121,7 +121,7 @@ public abstract class StoreCurrentQuotaManagerTest { @Test void resetCurrentQuotasShouldReInitQuotasWhenData() { - testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(20), QuotaSizeUsage.size(200))).block(); + Mono.from(testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(20), QuotaSizeUsage.size(200)))).block(); testee.resetCurrentQuotas(RESET_QUOTA_OPERATION).block(); @@ -131,7 +131,7 @@ public abstract class StoreCurrentQuotaManagerTest { @Test void resetCurrentQuotasShouldBeIdempotent() { - testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(20), QuotaSizeUsage.size(200))).block(); + Mono.from(testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(20), QuotaSizeUsage.size(200)))).block(); testee.resetCurrentQuotas(RESET_QUOTA_OPERATION).block(); testee.resetCurrentQuotas(RESET_QUOTA_OPERATION).block(); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org