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