JAMES-2345 Use QuotaManager instead of CurrentQuotaManager + MaxQuotaManager


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/89bd2918
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/89bd2918
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/89bd2918

Branch: refs/heads/master
Commit: 89bd2918172e0547fc23e1c187901a594eb5e664
Parents: 3037fa5
Author: Raphael Ouazana <[email protected]>
Authored: Wed Mar 7 10:14:04 2018 +0100
Committer: Raphael Ouazana <[email protected]>
Committed: Thu Mar 8 09:29:53 2018 +0100

----------------------------------------------------------------------
 .../apache/james/jmap/model/MailboxFactory.java | 45 +++++++++-----------
 .../jmap/methods/GetMailboxesMethodTest.java    |  6 +--
 .../james/jmap/model/MailboxFactoryTest.java    |  6 +--
 3 files changed, 26 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/89bd2918/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
index 7ad48f0..1f96ae8 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
@@ -41,9 +41,9 @@ import org.apache.james.mailbox.model.MailboxCounters;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.Quota;
 import org.apache.james.mailbox.model.QuotaRoot;
-import org.apache.james.mailbox.quota.CurrentQuotaManager;
-import org.apache.james.mailbox.quota.MaxQuotaManager;
+import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
 import org.apache.james.mailbox.quota.QuotaValue;
 
@@ -56,8 +56,7 @@ import com.google.common.collect.ImmutableMap;
 public class MailboxFactory {
     public static final boolean NO_RESET_RECENT = false;
     private final MailboxManager mailboxManager;
-    private final MaxQuotaManager maxQuotaManager;
-    private final CurrentQuotaManager currentQuotaManager;
+    private final QuotaManager quotaManager;
     private final QuotaRootResolver quotaRootResolver;
 
     public static class MailboxBuilder {
@@ -101,10 +100,9 @@ public class MailboxFactory {
     }
 
     @Inject
-    public MailboxFactory(MailboxManager mailboxManager, MaxQuotaManager 
maxQuotaManager, CurrentQuotaManager currentQuotaManager, QuotaRootResolver 
quotaRootResolver) {
+    public MailboxFactory(MailboxManager mailboxManager, QuotaManager 
quotaManager, QuotaRootResolver quotaRootResolver) {
         this.mailboxManager = mailboxManager;
-        this.maxQuotaManager = maxQuotaManager;
-        this.currentQuotaManager = currentQuotaManager;
+        this.quotaManager = quotaManager;
         this.quotaRootResolver = quotaRootResolver;
     }
 
@@ -148,32 +146,29 @@ public class MailboxFactory {
     private Quotas getQuotas(MailboxPath mailboxPath) throws MailboxException {
         QuotaRoot quotaRoot = quotaRootResolver.getQuotaRoot(mailboxPath);
         return new Quotas(ImmutableMap.of(new QuotaId(quotaRoot), new 
Quotas.Quota(ImmutableMap.of(
-                Type.STORAGE, new 
Quotas.Value(getCurrentStorageQuota(quotaRoot), getStorageMaxQuota(quotaRoot)),
-                Type.MESSAGE, new 
Quotas.Value(getCurrentMessageQuota(quotaRoot), 
getMessageMaxQuota(quotaRoot))))));
+                Type.STORAGE, 
quotaToValue(quotaManager.getStorageQuota(quotaRoot)),
+                Type.MESSAGE, 
quotaToValue(quotaManager.getMessageQuota(quotaRoot))))));
     }
 
-    private Number getCurrentStorageQuota(QuotaRoot quotaRoot) throws 
MailboxException {
-        return 
quotaValueToNumber(currentQuotaManager.getCurrentStorage(quotaRoot));
-    }
-
-    private Number getCurrentMessageQuota(QuotaRoot quotaRoot) throws 
MailboxException {
-        return 
quotaValueToNumber(currentQuotaManager.getCurrentMessageCount(quotaRoot));
-    }
-
-    private Optional<Number> getStorageMaxQuota(QuotaRoot quotaRoot) throws 
MailboxException {
-        return maxQuotaManager.getMaxStorage(quotaRoot)
-            .map(this::quotaValueToNumber);
-    }
-
-    private Optional<Number> getMessageMaxQuota(QuotaRoot quotaRoot) throws 
MailboxException {
-        return maxQuotaManager.getMaxMessage(quotaRoot)
-            .map(this::quotaValueToNumber);
+    private Quotas.Value quotaToValue(Quota<? extends QuotaValue<?>> quota) {
+        return new Quotas.Value(
+                quota.getUsed()
+                    .map(this::quotaValueToNumber)
+                    .orElse(Number.ZERO),
+                quotaValueToOptionalNumber(quota.getMax()));
     }
 
     private Number quotaValueToNumber(QuotaValue<?> value) {
         return Number.BOUND_SANITIZING_FACTORY.from(value.asLong());
     }
 
+    private Optional<Number> quotaValueToOptionalNumber(QuotaValue<?> value) {
+        if (value.isUnlimited()) {
+            return Optional.empty();
+        }
+        return Optional.of(quotaValueToNumber(value));
+    }
+
     private MailboxNamespace getNamespace(MailboxPath mailboxPath, boolean 
isOwner) {
         if (isOwner) {
             return MailboxNamespace.personal();

http://git-wip-us.apache.org/repos/asf/james-project/blob/89bd2918/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
index 719c626..6dbc7dc 100644
--- 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
+++ 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
@@ -48,8 +48,8 @@ import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.quota.CurrentQuotaManager;
 import org.apache.james.mailbox.quota.MaxQuotaManager;
+import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
 import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.metrics.logger.DefaultMetricFactory;
@@ -77,8 +77,8 @@ public class GetMailboxesMethodTest {
         mailboxManager = 
inMemoryIntegrationResources.createMailboxManager(groupMembershipResolver);
         MaxQuotaManager maxQuotaManager = 
inMemoryIntegrationResources.createMaxQuotaManager();
         QuotaRootResolver quotaRootResolver = 
inMemoryIntegrationResources.createQuotaRootResolver(mailboxManager);
-        CurrentQuotaManager currentQuotaManager = 
inMemoryIntegrationResources.createCurrentQuotaManager(mailboxManager);
-        mailboxFactory = new MailboxFactory(mailboxManager, maxQuotaManager, 
currentQuotaManager, quotaRootResolver);
+        QuotaManager quotaManager = 
inMemoryIntegrationResources.createQuotaManager(maxQuotaManager, 
mailboxManager);
+        mailboxFactory = new MailboxFactory(mailboxManager, quotaManager, 
quotaRootResolver);
 
         getMailboxesMethod = new GetMailboxesMethod(mailboxManager, 
mailboxFactory, new DefaultMetricFactory());
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/89bd2918/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
index ce2f541..d9244ac 100644
--- 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
+++ 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
@@ -31,8 +31,8 @@ import org.apache.james.mailbox.manager.ManagerTestResources;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.quota.CurrentQuotaManager;
 import org.apache.james.mailbox.quota.MaxQuotaManager;
+import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
 import org.apache.james.mailbox.store.SimpleMailboxMetaData;
 import org.apache.james.mailbox.store.StoreMailboxManager;
@@ -62,13 +62,13 @@ public class MailboxFactoryTest {
         mailboxManager = 
inMemoryIntegrationResources.createMailboxManager(inMemoryIntegrationResources.createGroupMembershipResolver());
         MaxQuotaManager maxQuotaManager = 
inMemoryIntegrationResources.createMaxQuotaManager();
         QuotaRootResolver quotaRootResolver = 
inMemoryIntegrationResources.createQuotaRootResolver(mailboxManager);
-        CurrentQuotaManager currentQuotaManager = 
inMemoryIntegrationResources.createCurrentQuotaManager(mailboxManager);
+        QuotaManager quotaManager = 
inMemoryIntegrationResources.createQuotaManager(maxQuotaManager, 
mailboxManager);
 
         user = ManagerTestResources.USER;
         otherUser = ManagerTestResources.OTHER_USER;
         mailboxSession = mailboxManager.login(user, 
ManagerTestResources.USER_PASS);
         otherMailboxSession = mailboxManager.login(otherUser, 
ManagerTestResources.OTHER_USER_PASS);
-        sut = new MailboxFactory(mailboxManager, maxQuotaManager, 
currentQuotaManager, quotaRootResolver);
+        sut = new MailboxFactory(mailboxManager, quotaManager, 
quotaRootResolver);
     }
 
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to