JAMES-2345 Introduce some factory methods in JMAP Quota DTO
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1ed1e463 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1ed1e463 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1ed1e463 Branch: refs/heads/master Commit: 1ed1e46348b8e2642aed3e947f2cb8247bc8f991 Parents: 89bd291 Author: Raphael Ouazana <[email protected]> Authored: Wed Mar 7 15:10:06 2018 +0100 Committer: Raphael Ouazana <[email protected]> Committed: Thu Mar 8 09:29:53 2018 +0100 ---------------------------------------------------------------------- .../apache/james/jmap/model/MailboxFactory.java | 14 ++++---- .../apache/james/jmap/model/mailbox/Quotas.java | 38 ++++++++++++++++---- 2 files changed, 38 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/1ed1e463/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 1f96ae8..13b2593 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 @@ -27,7 +27,6 @@ import org.apache.james.jmap.model.mailbox.Mailbox; import org.apache.james.jmap.model.mailbox.MailboxNamespace; import org.apache.james.jmap.model.mailbox.Quotas; import org.apache.james.jmap.model.mailbox.Quotas.QuotaId; -import org.apache.james.jmap.model.mailbox.Quotas.Type; import org.apache.james.jmap.model.mailbox.Rights; import org.apache.james.jmap.model.mailbox.Rights.Username; import org.apache.james.jmap.model.mailbox.SortOrder; @@ -51,7 +50,6 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.base.Splitter; import com.google.common.base.Throwables; -import com.google.common.collect.ImmutableMap; public class MailboxFactory { public static final boolean NO_RESET_RECENT = false; @@ -145,13 +143,15 @@ 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, quotaToValue(quotaManager.getStorageQuota(quotaRoot)), - Type.MESSAGE, quotaToValue(quotaManager.getMessageQuota(quotaRoot)))))); + return Quotas.from( + QuotaId.fromQuotaRoot(quotaRoot), + Quotas.Quota.from( + quotaToValue(quotaManager.getStorageQuota(quotaRoot)), + quotaToValue(quotaManager.getMessageQuota(quotaRoot)))); } - private Quotas.Value quotaToValue(Quota<? extends QuotaValue<?>> quota) { - return new Quotas.Value( + private <T extends QuotaValue<T>> Quotas.Value<T> quotaToValue(Quota<T> quota) { + return new Quotas.Value<>( quota.getUsed() .map(this::quotaValueToNumber) .orElse(Number.ZERO), http://git-wip-us.apache.org/repos/asf/james-project/blob/1ed1e463/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Quotas.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Quotas.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Quotas.java index 8116111..1579f32 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Quotas.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Quotas.java @@ -23,6 +23,9 @@ import java.util.Optional; import org.apache.james.jmap.model.Number; import org.apache.james.mailbox.model.QuotaRoot; +import org.apache.james.mailbox.quota.QuotaCount; +import org.apache.james.mailbox.quota.QuotaSize; +import org.apache.james.mailbox.quota.QuotaValue; import com.fasterxml.jackson.annotation.JsonValue; import com.google.common.collect.ImmutableMap; @@ -31,7 +34,15 @@ public class Quotas { private final Map<QuotaId, Quota> quotas; - public Quotas(ImmutableMap<QuotaId, Quota> quotas) { + public static Quotas from(ImmutableMap<QuotaId, Quota> quotas) { + return new Quotas(quotas); + } + + public static Quotas from(QuotaId quotaId, Quota quota) { + return new Quotas(ImmutableMap.of(quotaId, quota)); + } + + private Quotas(ImmutableMap<QuotaId, Quota> quotas) { this.quotas = quotas; } @@ -42,8 +53,12 @@ public class Quotas { public static class QuotaId { private final QuotaRoot quotaRoot; + + public static QuotaId fromQuotaRoot(QuotaRoot quotaRoot) { + return new QuotaId(quotaRoot); + } - public QuotaId(QuotaRoot quotaRoot) { + private QuotaId(QuotaRoot quotaRoot) { this.quotaRoot = quotaRoot; } @@ -54,14 +69,23 @@ public class Quotas { } public static class Quota { - private final Map<Type, Value> quota; - - public Quota(ImmutableMap<Type, Value> quota) { + private final Map<Type, Value<?>> quota; + + public static Quota from(ImmutableMap<Type, Value<?>> quota) { + return new Quota(quota); + } + + public static Quota from(Value<QuotaSize> storage, Value<QuotaCount> message) { + return new Quota(ImmutableMap.of(Type.STORAGE, storage, + Type.MESSAGE, message)); + } + + private Quota(ImmutableMap<Type, Value<?>> quota) { this.quota = quota; } @JsonValue - public Map<Type, Value> getQuota() { + public Map<Type, Value<?>> getQuota() { return quota; } } @@ -71,7 +95,7 @@ public class Quotas { MESSAGE; } - public static class Value { + public static class Value<T extends QuotaValue<T>> { private final Number used; private final Optional<Number> max; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
