You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2020/04/22 07:24:37 UTC

[james-project] 05/10: JAMES-3138 Move increase and decrease to CurrentQuotaManager to have a allow a neutral RecomputeCurrentQuotasServiceContract

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 <rc...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org