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]

Reply via email to