JAMES-2344 remove optimization on quota computation

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

Branch: refs/heads/master
Commit: b90ce47a6daa15f8af74f47fb66d95ecf62b689e
Parents: a11ce53
Author: Matthieu Baechler <matth...@apache.org>
Authored: Wed Mar 7 17:38:54 2018 +0100
Committer: Matthieu Baechler <matth...@apache.org>
Committed: Tue Mar 13 16:10:28 2018 +0100

----------------------------------------------------------------------
 .../org/apache/james/mailbox/model/Quota.java   | 21 +++++----------
 .../apache/james/mailbox/model/QuotaTest.java   | 10 --------
 .../manager/InMemoryIntegrationResources.java   |  1 -
 .../store/mail/model/SerializableQuota.java     | 10 ++++++--
 .../mailbox/store/quota/NoQuotaManager.java     | 15 +++++++++--
 .../james/mailbox/store/quota/QuotaChecker.java |  4 +--
 .../mailbox/store/quota/StoreQuotaManager.java  | 27 +++++---------------
 .../AbstractMessageIdManagerSideEffectTest.java |  8 +++---
 .../store/quota/StoreQuotaManagerTest.java      | 20 ---------------
 .../james/imap/encode/QuotaResponseEncoder.java |  6 ++---
 .../james/imap/processor/GetQuotaProcessor.java |  4 +--
 .../imap/processor/GetQuotaRootProcessor.java   |  4 +--
 .../org/apache/james/cli/ServerCmdTest.java     |  5 ++--
 .../apache/james/jmap/model/MailboxFactory.java |  4 +--
 14 files changed, 48 insertions(+), 91 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/b90ce47a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Quota.java
----------------------------------------------------------------------
diff --git 
a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Quota.java 
b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Quota.java
index 14e1494..c1dc033 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Quota.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Quota.java
@@ -18,8 +18,6 @@
  ****************************************************************/
 package org.apache.james.mailbox.model;
 
-import java.util.Optional;
-
 import org.apache.james.mailbox.quota.QuotaValue;
 
 import com.google.common.base.Objects;
@@ -29,17 +27,13 @@ public class Quota<T extends QuotaValue<T>> {
 
     public static <T extends QuotaValue<T>> Quota<T> quota(T used, T max) {
         Preconditions.checkNotNull(used);
-        return new Quota<>(Optional.of(used), max);
-    }
-
-    public static <T extends QuotaValue<T>> Quota<T> unknownUsedQuota(T max) {
-        return new Quota<>(Optional.empty(), max);
+        return new Quota<>(used, max);
     }
 
     private final T max;
-    private final Optional<T> used;
+    private final T used;
 
-    private Quota(Optional<T> used, T max) {
+    private Quota(T used, T max) {
         this.used = used;
         this.max = max;
     }
@@ -48,12 +42,12 @@ public class Quota<T extends QuotaValue<T>> {
         return max;
     }
 
-    public Optional<T> getUsed() {
+    public T getUsed() {
         return used;
     }
 
     public Quota<T> addValueToQuota(T value) {
-        return new Quota<T>(used.map(x -> x.add(value)), max);
+        return new Quota<>(used.add(value), max);
     }
 
     /**
@@ -67,10 +61,7 @@ public class Quota<T extends QuotaValue<T>> {
 
     public boolean isOverQuotaWithAdditionalValue(long additionalValue) {
         Preconditions.checkArgument(additionalValue >= 0);
-        if (!max.isLimited()) {
-            return false;
-        }
-        return used.map(x -> 
x.add(additionalValue).isGreaterThan(max)).orElse(false);
+        return max.isLimited() && used.add(additionalValue).isGreaterThan(max);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/b90ce47a/mailbox/api/src/test/java/org/apache/james/mailbox/model/QuotaTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/api/src/test/java/org/apache/james/mailbox/model/QuotaTest.java 
b/mailbox/api/src/test/java/org/apache/james/mailbox/model/QuotaTest.java
index 82f4c95..79ce320 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/QuotaTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/QuotaTest.java
@@ -33,11 +33,6 @@ public class QuotaTest {
     public ExpectedException expectedException = ExpectedException.none();
 
     @Test
-    public void unlimitedQuotaShouldNotBeOverQuota() {
-        
assertThat(Quota.unknownUsedQuota(QuotaCount.unlimited()).isOverQuota()).isFalse();
-    }
-
-    @Test
     public void isOverQuotaShouldReturnFalseWhenQuotaIsNotExceeded() {
         assertThat(Quota.quota(QuotaCount.count(36), 
QuotaCount.count(360)).isOverQuota()).isFalse();
     }
@@ -48,11 +43,6 @@ public class QuotaTest {
     }
 
     @Test
-    public void isOverQuotaShouldReturnFalseWhenUsedValueIsUnknown() {
-        
assertThat(Quota.unknownUsedQuota(QuotaCount.count(36)).isOverQuota()).isFalse();
-    }
-
-    @Test
     public void isOverQuotaShouldReturnTrueWhenQuotaIsExceeded() {
         assertThat(Quota.quota(QuotaCount.count(360), 
QuotaCount.count(36)).isOverQuota()).isTrue();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b90ce47a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
index b440613..1e8ae1f 100644
--- 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
+++ 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
@@ -151,7 +151,6 @@ public class InMemoryIntegrationResources implements 
IntegrationResources<StoreM
 
         ListeningCurrentQuotaUpdater listeningCurrentQuotaUpdater = new 
ListeningCurrentQuotaUpdater(currentQuotaManager, quotaRootResolver);
         StoreQuotaManager quotaManager = new 
StoreQuotaManager(currentQuotaManager, maxQuotaManager);
-        quotaManager.setCalculateWhenUnlimited(false);
         mailboxManager.setQuotaManager(quotaManager);
         mailboxManager.addGlobalListener(listeningCurrentQuotaUpdater, null);
         return quotaManager;

http://git-wip-us.apache.org/repos/asf/james-project/blob/b90ce47a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/SerializableQuota.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/SerializableQuota.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/SerializableQuota.java
index b090cf7..d5a6c24 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/SerializableQuota.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/SerializableQuota.java
@@ -34,9 +34,15 @@ public class SerializableQuota<T extends QuotaValue<T>> 
implements Serializable
     public static final long UNLIMITED = -1;
 
     public static <U extends QuotaValue<U>> SerializableQuota<U> 
newInstance(Quota<U> quota) {
-        return new SerializableQuota<>(new 
SerializableQuotaValue<>(quota.getMax()), getUsed(quota.getUsed(), 
SerializableQuotaValue::new));
+        return newInstance(quota.getUsed(), quota.getMax());
     }
 
+    public static <U extends QuotaValue<U>> SerializableQuota<U> newInstance(U 
used, U max) {
+        return new SerializableQuota<>(
+            new SerializableQuotaValue<>(used),
+            new SerializableQuotaValue<>(max)
+        );
+    }
 
     private static <U extends QuotaValue<U>> SerializableQuotaValue<U> 
getUsed(Optional<U> quota, Function<U, SerializableQuotaValue<U>> factory) {
         return quota.map(factory).orElse(null);
@@ -45,7 +51,7 @@ public class SerializableQuota<T extends QuotaValue<T>> 
implements Serializable
     private final SerializableQuotaValue<T> max;
     private final SerializableQuotaValue<T> used;
 
-    public SerializableQuota(SerializableQuotaValue<T> max, 
SerializableQuotaValue<T> used) {
+    private SerializableQuota(SerializableQuotaValue<T> used, 
SerializableQuotaValue<T> max) {
         this.max = max;
         this.used = used;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b90ce47a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/NoQuotaManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/NoQuotaManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/NoQuotaManager.java
index 8f3f932..0c3b583 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/NoQuotaManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/NoQuotaManager.java
@@ -19,9 +19,12 @@
 
 package org.apache.james.mailbox.store.quota;
 
+import javax.inject.Inject;
+
 import org.apache.james.mailbox.exception.MailboxException;
 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.QuotaCount;
 import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.quota.QuotaSize;
@@ -31,13 +34,21 @@ import org.apache.james.mailbox.quota.QuotaSize;
  */
 public class NoQuotaManager implements QuotaManager {
 
+    @Inject
+    public NoQuotaManager() {
+    }
+
     @Override
     public Quota<QuotaCount> getMessageQuota(QuotaRoot quotaRoot) throws 
MailboxException {
-        return Quota.unknownUsedQuota(QuotaCount.unlimited());
+        return Quota.quota(
+            QuotaCount.count(0),
+            QuotaCount.unlimited());
     }
 
     @Override
     public Quota<QuotaSize> getStorageQuota(QuotaRoot quotaRoot) throws 
MailboxException {
-        return Quota.unknownUsedQuota(QuotaSize.unlimited());
+        return Quota.quota(
+            QuotaSize.size(0),
+            QuotaSize.unlimited());
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b90ce47a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/QuotaChecker.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/QuotaChecker.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/QuotaChecker.java
index e7fc9bf..3c1d17e 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/QuotaChecker.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/QuotaChecker.java
@@ -58,7 +58,7 @@ public class QuotaChecker {
             throw new OverQuotaException(
                 "You use too much space in " + quotaRoot.getValue(),
                 afterAdditionQuotaSize.getMax(),
-                afterAdditionQuotaSize.getUsed().get());
+                afterAdditionQuotaSize.getUsed());
         }
     }
 
@@ -68,7 +68,7 @@ public class QuotaChecker {
             throw new OverQuotaException(
                 "You have too many messages in " + quotaRoot.getValue(),
                 messageQuota.getMax(),
-                messageQuota.getUsed().get());
+                messageQuota.getUsed());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b90ce47a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreQuotaManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreQuotaManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreQuotaManager.java
index a4fd86b..671d368 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreQuotaManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreQuotaManager.java
@@ -19,8 +19,6 @@
 
 package org.apache.james.mailbox.store.quota;
 
-import java.util.Optional;
-
 import javax.inject.Inject;
 
 import org.apache.james.mailbox.exception.MailboxException;
@@ -40,7 +38,6 @@ import org.apache.james.mailbox.quota.QuotaSize;
 public class StoreQuotaManager implements QuotaManager {
     private final CurrentQuotaManager currentQuotaManager;
     private final MaxQuotaManager maxQuotaManager;
-    private boolean calculateWhenUnlimited = false;
 
     @Inject
     public StoreQuotaManager(CurrentQuotaManager currentQuotaManager, 
MaxQuotaManager maxQuotaManager) {
@@ -48,29 +45,17 @@ public class StoreQuotaManager implements QuotaManager {
         this.maxQuotaManager = maxQuotaManager;
     }
 
-    public void setCalculateWhenUnlimited(boolean calculateWhenUnlimited) {
-        this.calculateWhenUnlimited = calculateWhenUnlimited;
-    }
-
     public Quota<QuotaCount> getMessageQuota(QuotaRoot quotaRoot) throws 
MailboxException {
-        Optional<QuotaCount> maxValue = 
maxQuotaManager.getMaxMessage(quotaRoot);
-        if (maxValue.filter(QuotaCount::isUnlimited).isPresent() && 
!calculateWhenUnlimited) {
-            return Quota.unknownUsedQuota(QuotaCount.unlimited());
-        }
-        QuotaCount currentMessageCount = 
currentQuotaManager.getCurrentMessageCount(quotaRoot);
-        QuotaCount limit = maxValue.orElse(QuotaCount.unlimited());
-        return Quota.quota(currentMessageCount, limit);
+        return Quota.quota(
+            currentQuotaManager.getCurrentMessageCount(quotaRoot),
+            
maxQuotaManager.getMaxMessage(quotaRoot).orElse(QuotaCount.unlimited()));
     }
 
 
     public Quota<QuotaSize> getStorageQuota(QuotaRoot quotaRoot) throws 
MailboxException {
-        Optional<QuotaSize> maxValue = 
maxQuotaManager.getMaxStorage(quotaRoot);
-        if (maxValue.filter(QuotaSize::isUnlimited).isPresent() && 
!calculateWhenUnlimited) {
-            return Quota.unknownUsedQuota(QuotaSize.unlimited());
-        }
-        QuotaSize currentStorage = 
currentQuotaManager.getCurrentStorage(quotaRoot);
-        QuotaSize limit = maxValue.orElse(QuotaSize.unlimited());
-        return Quota.quota(currentStorage, limit);
+        return Quota.quota(
+            currentQuotaManager.getCurrentStorage(quotaRoot),
+            
maxQuotaManager.getMaxStorage(quotaRoot).orElse(QuotaSize.unlimited()));
     }
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/b90ce47a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
index 3afdaf6..91d2ae3 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
@@ -166,9 +166,9 @@ public abstract class 
AbstractMessageIdManagerSideEffectTest {
     public void setInMailboxesShouldThrowExceptionWhenOverQuota() throws 
Exception {
         MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
         reset(dispatcher);
-        
when(quotaManager.getStorageQuota(any(QuotaRoot.class))).thenReturn(Quota.unknownUsedQuota(QuotaSize.unlimited()));
+        
when(quotaManager.getStorageQuota(any(QuotaRoot.class))).thenReturn(Quota.quota(QuotaSize.size(2),
 QuotaSize.unlimited()));
         
when(quotaManager.getMessageQuota(any(QuotaRoot.class))).thenReturn(OVER_QUOTA);
-        
when(quotaManager.getStorageQuota(any(QuotaRoot.class))).thenReturn(Quota.unknownUsedQuota(QuotaSize.unlimited()));
+        
when(quotaManager.getStorageQuota(any(QuotaRoot.class))).thenReturn(Quota.quota(QuotaSize.size(2),
 QuotaSize.unlimited()));
 
         expectedException.expect(OverQuotaException.class);
 
@@ -311,8 +311,8 @@ public abstract class 
AbstractMessageIdManagerSideEffectTest {
     }
 
     private void givenUnlimitedQuota() throws MailboxException {
-        
when(quotaManager.getMessageQuota(any(QuotaRoot.class))).thenReturn(Quota.unknownUsedQuota(QuotaCount.unlimited()));
-        
when(quotaManager.getStorageQuota(any(QuotaRoot.class))).thenReturn(Quota.unknownUsedQuota(QuotaSize.unlimited()));
+        
when(quotaManager.getMessageQuota(any(QuotaRoot.class))).thenReturn(Quota.quota(QuotaCount.count(2),
 QuotaCount.unlimited()));
+        
when(quotaManager.getStorageQuota(any(QuotaRoot.class))).thenReturn(Quota.quota(QuotaSize.size(2),
 QuotaSize.unlimited()));
     }
 
     private SimpleMessageMetaData fromMessageResult(MessageId messageId, 
MessageResult messageResult) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/b90ce47a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreQuotaManagerTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreQuotaManagerTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreQuotaManagerTest.java
index e85460a..a1ae745 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreQuotaManagerTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreQuotaManagerTest.java
@@ -66,26 +66,7 @@ public class StoreQuotaManagerTest {
     }
 
     @Test
-    public void getStorageQuotaShouldNotCalculateCurrentQuotaWhenUnlimited() 
throws Exception {
-        testee.setCalculateWhenUnlimited(false);
-        
when(mockedMaxQuotaManager.getMaxStorage(quotaRoot)).thenReturn(Optional.of(QuotaSize.unlimited()));
-
-        
assertThat(testee.getStorageQuota(quotaRoot)).isEqualTo(Quota.unknownUsedQuota(QuotaSize.unlimited()));
-        verify(mockedCurrentQuotaManager, 
never()).getCurrentStorage(quotaRoot);
-    }
-
-    @Test
-    public void getMessageQuotaShouldNotCalculateCurrentQuotaWhenUnlimited() 
throws Exception {
-        testee.setCalculateWhenUnlimited(false);
-        
when(mockedMaxQuotaManager.getMaxMessage(quotaRoot)).thenReturn(Optional.of(QuotaCount.unlimited()));
-
-        
assertThat(testee.getMessageQuota(quotaRoot)).isEqualTo(Quota.unknownUsedQuota(QuotaCount.unlimited()));
-        verify(mockedCurrentQuotaManager, 
never()).getCurrentMessageCount(quotaRoot);
-    }
-
-    @Test
     public void getStorageQuotaShouldCalculateCurrentQuotaWhenUnlimited() 
throws Exception {
-        testee.setCalculateWhenUnlimited(true);
         
when(mockedMaxQuotaManager.getMaxStorage(quotaRoot)).thenReturn(Optional.of(QuotaSize.unlimited()));
         
when(mockedCurrentQuotaManager.getCurrentStorage(quotaRoot)).thenReturn(QuotaSize.size(36L));
 
@@ -94,7 +75,6 @@ public class StoreQuotaManagerTest {
 
     @Test
     public void getMessageQuotaShouldCalculateCurrentQuotaWhenUnlimited() 
throws Exception {
-        testee.setCalculateWhenUnlimited(true);
         
when(mockedMaxQuotaManager.getMaxMessage(quotaRoot)).thenReturn(Optional.of(QuotaCount.unlimited()));
         
when(mockedCurrentQuotaManager.getCurrentMessageCount(quotaRoot)).thenReturn(QuotaCount.count(36L));
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b90ce47a/protocols/imap/src/main/java/org/apache/james/imap/encode/QuotaResponseEncoder.java
----------------------------------------------------------------------
diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/encode/QuotaResponseEncoder.java
 
b/protocols/imap/src/main/java/org/apache/james/imap/encode/QuotaResponseEncoder.java
index d09c11f..6a2d111 100644
--- 
a/protocols/imap/src/main/java/org/apache/james/imap/encode/QuotaResponseEncoder.java
+++ 
b/protocols/imap/src/main/java/org/apache/james/imap/encode/QuotaResponseEncoder.java
@@ -66,14 +66,12 @@ public class QuotaResponseEncoder extends 
AbstractChainedImapEncoder {
     }
 
     private void writeMessagesSize(ImapResponseComposer composer, Quota<?> 
quota) throws IOException {
-        //we know there's a quota because Quota*Processor ask us to print it
-        composer.message(quota.getUsed().get().asLong() / 1024);
+        composer.message(quota.getUsed().asLong() / 1024);
         composer.message(quota.getMax().asLong() / 1024);
     }
 
     private void writeMessagesCount(ImapResponseComposer composer, Quota<?> 
quota) throws IOException {
-        //we know there's a quota because Quota*Processor ask us to print it
-        composer.message(quota.getUsed().get().asLong());
+        composer.message(quota.getUsed().asLong());
         composer.message(quota.getMax().asLong());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b90ce47a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaProcessor.java
----------------------------------------------------------------------
diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaProcessor.java
 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaProcessor.java
index f7cbfbb..701272c 100644
--- 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaProcessor.java
+++ 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaProcessor.java
@@ -81,10 +81,10 @@ public class GetQuotaProcessor extends 
AbstractMailboxProcessor<GetQuotaRequest>
                 QuotaRoot quotaRoot = 
QuotaRoot.quotaRoot(message.getQuotaRoot());
                 Quota<QuotaCount> messageQuota = 
quotaManager.getMessageQuota(quotaRoot);
                 Quota<QuotaSize> storageQuota = 
quotaManager.getStorageQuota(quotaRoot);
-                if (messageQuota.getMax().isLimited() && 
messageQuota.getUsed().isPresent()) {
+                if (messageQuota.getMax().isLimited()) {
                     responder.respond(new 
QuotaResponse(ImapConstants.MESSAGE_QUOTA_RESOURCE, quotaRoot.getValue(), 
messageQuota));
                 }
-                if (storageQuota.getMax().isLimited() && 
storageQuota.getUsed().isPresent()) {
+                if (storageQuota.getMax().isLimited()) {
                     responder.respond(new 
QuotaResponse(ImapConstants.STORAGE_QUOTA_RESOURCE, quotaRoot.getValue(), 
storageQuota));
                 }
                 okComplete(command, tag, responder);

http://git-wip-us.apache.org/repos/asf/james-project/blob/b90ce47a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaRootProcessor.java
----------------------------------------------------------------------
diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaRootProcessor.java
 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaRootProcessor.java
index 345cc31..2740865 100644
--- 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaRootProcessor.java
+++ 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaRootProcessor.java
@@ -83,10 +83,10 @@ public class GetQuotaRootProcessor extends 
AbstractMailboxProcessor<GetQuotaRoot
                 Quota<QuotaCount> messageQuota = 
quotaManager.getMessageQuota(quotaRoot);
                 Quota<QuotaSize> storageQuota = 
quotaManager.getStorageQuota(quotaRoot);
                 responder.respond(new 
QuotaRootResponse(message.getMailboxName(), quotaRoot.getValue()));
-                if (messageQuota.getMax().isLimited() && 
messageQuota.getUsed().isPresent()) {
+                if (messageQuota.getMax().isLimited()) {
                     responder.respond(new 
QuotaResponse(ImapConstants.MESSAGE_QUOTA_RESOURCE, quotaRoot.getValue(), 
messageQuota));
                 }
-                if (storageQuota.getMax().isLimited() && 
storageQuota.getUsed().isPresent()) {
+                if (storageQuota.getMax().isLimited()) {
                     responder.respond(new 
QuotaResponse(ImapConstants.STORAGE_QUOTA_RESOURCE, quotaRoot.getValue(), 
storageQuota));
                 }
                 okComplete(command, tag, responder);

http://git-wip-us.apache.org/repos/asf/james-project/blob/b90ce47a/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
----------------------------------------------------------------------
diff --git 
a/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java 
b/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
index e9a5d98..6792f17 100644
--- a/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
+++ b/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
@@ -35,7 +35,6 @@ import 
org.apache.james.cli.exceptions.MissingCommandException;
 import org.apache.james.cli.exceptions.UnrecognizedCommandException;
 import org.apache.james.cli.type.CmdType;
 import org.apache.james.mailbox.model.MailboxId;
-import org.apache.james.mailbox.model.Quota;
 import org.apache.james.mailbox.quota.QuotaCount;
 import org.apache.james.mailbox.quota.QuotaSize;
 import org.apache.james.mailbox.store.mail.model.SerializableQuota;
@@ -577,7 +576,7 @@ public class ServerCmdTest {
         String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
CmdType.GETSTORAGEQUOTA.getCommand(), quotaroot};
         CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
 
-        
expect(quotaProbe.getStorageQuota(quotaroot)).andReturn(SerializableQuota.newInstance(Quota.unknownUsedQuota(QuotaSize.unlimited())));
+        
expect(quotaProbe.getStorageQuota(quotaroot)).andReturn(SerializableQuota.newInstance(QuotaSize.unlimited(),
 QuotaSize.size(12)));
 
         control.replay();
         testee.executeCommandLine(commandLine);
@@ -590,7 +589,7 @@ public class ServerCmdTest {
         String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
CmdType.GETMESSAGECOUNTQUOTA.getCommand(), quotaroot};
         CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
 
-        
expect(quotaProbe.getMessageCountQuota(quotaroot)).andReturn(SerializableQuota.newInstance(Quota.unknownUsedQuota(QuotaCount.unlimited())));
+        
expect(quotaProbe.getMessageCountQuota(quotaroot)).andReturn(SerializableQuota.newInstance(QuotaCount.unlimited(),
 QuotaCount.count(12)));
 
         control.replay();
         testee.executeCommandLine(commandLine);

http://git-wip-us.apache.org/repos/asf/james-project/blob/b90ce47a/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 13b2593..42a80ab 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
@@ -152,9 +152,7 @@ public class MailboxFactory {
 
     private <T extends QuotaValue<T>> Quotas.Value<T> quotaToValue(Quota<T> 
quota) {
         return new Quotas.Value<>(
-                quota.getUsed()
-                    .map(this::quotaValueToNumber)
-                    .orElse(Number.ZERO),
+                quotaValueToNumber(quota.getUsed()),
                 quotaValueToOptionalNumber(quota.getMax()));
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to