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]
