This is an automated email from the ASF dual-hosted git repository. rcordier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit d21161532cafb6711d45a788e128c52fdbdb4f36 Author: Benoit Tellier <[email protected]> AuthorDate: Tue Feb 4 10:11:22 2020 +0700 [REFACTORING] QuotaProbe strong typing --- .../org/apache/james/mailbox/probe/QuotaProbe.java | 16 +++++++----- .../james/cli/QuotaCommandsIntegrationTest.java | 4 +-- .../org/apache/james/modules/QuotaProbesImpl.java | 30 +++++++++++----------- .../integration/GetMailboxesMethodTest.java | 4 +-- .../methods/integration/QuotaMailingTest.java | 12 ++++----- .../methods/integration/SendMDNMethodTest.java | 4 ++- .../methods/integration/SetMessagesMethodTest.java | 7 ++--- 7 files changed, 40 insertions(+), 37 deletions(-) diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/probe/QuotaProbe.java b/mailbox/api/src/main/java/org/apache/james/mailbox/probe/QuotaProbe.java index 617fa07..b3fa677 100644 --- a/mailbox/api/src/main/java/org/apache/james/mailbox/probe/QuotaProbe.java +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/probe/QuotaProbe.java @@ -26,27 +26,29 @@ import org.apache.james.core.quota.QuotaCountUsage; import org.apache.james.core.quota.QuotaSizeLimit; import org.apache.james.core.quota.QuotaSizeUsage; import org.apache.james.mailbox.exception.MailboxException; +import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.Quota; +import org.apache.james.mailbox.model.QuotaRoot; public interface QuotaProbe { - String getQuotaRoot(String namespace, String user, String name) throws MailboxException; + QuotaRoot getQuotaRoot(MailboxPath mailboxPath) throws MailboxException; - Quota<QuotaCountLimit, QuotaCountUsage> getMessageCountQuota(String quotaRoot) throws MailboxException; + Quota<QuotaCountLimit, QuotaCountUsage> getMessageCountQuota(QuotaRoot quotaRoot) throws MailboxException; - Quota<QuotaSizeLimit, QuotaSizeUsage> getStorageQuota(String quotaRoot) throws MailboxException; + Quota<QuotaSizeLimit, QuotaSizeUsage> getStorageQuota(QuotaRoot quotaRoot) throws MailboxException; - Optional<QuotaCountLimit> getMaxMessageCount(String quotaRoot) throws MailboxException; + Optional<QuotaCountLimit> getMaxMessageCount(QuotaRoot quotaRoot) throws MailboxException; - Optional<QuotaSizeLimit> getMaxStorage(String quotaRoot) throws MailboxException; + Optional<QuotaSizeLimit> getMaxStorage(QuotaRoot quotaRoot) throws MailboxException; Optional<QuotaCountLimit> getGlobalMaxMessageCount() throws MailboxException; Optional<QuotaSizeLimit> getGlobalMaxStorage() throws MailboxException; - void setMaxMessageCount(String quotaRoot, QuotaCountLimit maxMessageCount) throws MailboxException; + void setMaxMessageCount(QuotaRoot quotaRoot, QuotaCountLimit maxMessageCount) throws MailboxException; - void setMaxStorage(String quotaRoot, QuotaSizeLimit maxSize) throws MailboxException; + void setMaxStorage(QuotaRoot quotaRoot, QuotaSizeLimit maxSize) throws MailboxException; void setGlobalMaxMessageCount(QuotaCountLimit maxGlobalMessageCount) throws MailboxException; diff --git a/server/container/cli-integration/src/test/java/org/apache/james/cli/QuotaCommandsIntegrationTest.java b/server/container/cli-integration/src/test/java/org/apache/james/cli/QuotaCommandsIntegrationTest.java index 07ca0ee..50d61ff 100644 --- a/server/container/cli-integration/src/test/java/org/apache/james/cli/QuotaCommandsIntegrationTest.java +++ b/server/container/cli-integration/src/test/java/org/apache/james/cli/QuotaCommandsIntegrationTest.java @@ -102,7 +102,7 @@ public class QuotaCommandsIntegrationTest { public void setMaxStorageShouldWork() throws Exception { ServerCmd.doMain(new String[] {"-h", "127.0.0.1", "-p", "9999", "setmaxstoragequota", QUOTA_ROOT.getValue(), "36"}); - assertThat(quotaProbe.getMaxStorage(QUOTA_ROOT.getValue()).map(QuotaSizeLimit::asLong)).contains(36L); + assertThat(quotaProbe.getMaxStorage(QUOTA_ROOT).map(QuotaSizeLimit::asLong)).contains(36L); } @Test @@ -120,7 +120,7 @@ public class QuotaCommandsIntegrationTest { public void setMaxMessageCountShouldWork() throws Exception { ServerCmd.doMain(new String[] {"-h", "127.0.0.1", "-p", "9999", "setmaxmessagecountquota", QUOTA_ROOT.getValue(), "36"}); - assertThat(quotaProbe.getMaxMessageCount(QUOTA_ROOT.getValue()).map(QuotaCountLimit::asLong)).contains(36L); + assertThat(quotaProbe.getMaxMessageCount(QUOTA_ROOT).map(QuotaCountLimit::asLong)).contains(36L); } @Test diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/QuotaProbesImpl.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/QuotaProbesImpl.java index 7adf9f2..58fa279 100644 --- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/QuotaProbesImpl.java +++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/QuotaProbesImpl.java @@ -23,7 +23,6 @@ import java.util.Optional; import javax.inject.Inject; -import org.apache.james.core.Username; import org.apache.james.core.quota.QuotaCountLimit; import org.apache.james.core.quota.QuotaCountUsage; import org.apache.james.core.quota.QuotaSizeLimit; @@ -31,6 +30,7 @@ import org.apache.james.core.quota.QuotaSizeUsage; import org.apache.james.mailbox.exception.MailboxException; 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.probe.QuotaProbe; import org.apache.james.mailbox.quota.MaxQuotaManager; import org.apache.james.mailbox.quota.QuotaManager; @@ -51,28 +51,28 @@ public class QuotaProbesImpl implements QuotaProbe, GuiceProbe { } @Override - public String getQuotaRoot(String namespace, String user, String name) throws MailboxException { - return quotaRootResolver.getQuotaRoot(new MailboxPath(namespace, Username.of(user), name)).getValue(); + public QuotaRoot getQuotaRoot(MailboxPath mailboxPath) throws MailboxException { + return quotaRootResolver.getQuotaRoot(mailboxPath); } @Override - public Quota<QuotaCountLimit, QuotaCountUsage> getMessageCountQuota(String quotaRoot) throws MailboxException { - return quotaManager.getMessageQuota(quotaRootResolver.fromString(quotaRoot)); + public Quota<QuotaCountLimit, QuotaCountUsage> getMessageCountQuota(QuotaRoot quotaRoot) throws MailboxException { + return quotaManager.getMessageQuota(quotaRoot); } @Override - public Quota<QuotaSizeLimit, QuotaSizeUsage> getStorageQuota(String quotaRoot) throws MailboxException { - return quotaManager.getStorageQuota(quotaRootResolver.fromString(quotaRoot)); + public Quota<QuotaSizeLimit, QuotaSizeUsage> getStorageQuota(QuotaRoot quotaRoot) throws MailboxException { + return quotaManager.getStorageQuota(quotaRoot); } @Override - public Optional<QuotaCountLimit> getMaxMessageCount(String quotaRoot) throws MailboxException { - return maxQuotaManager.getMaxMessage(quotaRootResolver.fromString(quotaRoot)); + public Optional<QuotaCountLimit> getMaxMessageCount(QuotaRoot quotaRoot) throws MailboxException { + return maxQuotaManager.getMaxMessage(quotaRoot); } @Override - public Optional<QuotaSizeLimit> getMaxStorage(String quotaRoot) throws MailboxException { - return maxQuotaManager.getMaxStorage(quotaRootResolver.fromString(quotaRoot)); + public Optional<QuotaSizeLimit> getMaxStorage(QuotaRoot quotaRoot) throws MailboxException { + return maxQuotaManager.getMaxStorage(quotaRoot); } @Override @@ -86,13 +86,13 @@ public class QuotaProbesImpl implements QuotaProbe, GuiceProbe { } @Override - public void setMaxMessageCount(String quotaRoot, QuotaCountLimit maxMessageCount) throws MailboxException { - maxQuotaManager.setMaxMessage(quotaRootResolver.fromString(quotaRoot), maxMessageCount); + public void setMaxMessageCount(QuotaRoot quotaRoot, QuotaCountLimit maxMessageCount) throws MailboxException { + maxQuotaManager.setMaxMessage(quotaRoot, maxMessageCount); } @Override - public void setMaxStorage(String quotaRoot, QuotaSizeLimit maxSize) throws MailboxException { - maxQuotaManager.setMaxStorage(quotaRootResolver.fromString(quotaRoot), maxSize); + public void setMaxStorage(QuotaRoot quotaRoot, QuotaSizeLimit maxSize) throws MailboxException { + maxQuotaManager.setMaxStorage(quotaRoot, maxSize); } @Override diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java index bedb01e..a3d4320 100644 --- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java +++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java @@ -827,8 +827,8 @@ public abstract class GetMailboxesMethodTest { MailboxPath bobMailboxPath = MailboxPath.forUser(BOB, sharedMailboxName); aclProbe.replaceRights(bobMailboxPath, ALICE.asString(), new Rfc4314Rights(Right.Lookup, Right.Read)); - quotaProbe.setMaxMessageCount("#private&[email protected]", QuotaCountLimit.count(42)); - quotaProbe.setMaxMessageCount("#private&[email protected]", QuotaCountLimit.count(43)); + quotaProbe.setMaxMessageCount(quotaProbe.getQuotaRoot(MailboxPath.inbox(ALICE)), QuotaCountLimit.count(42)); + quotaProbe.setMaxMessageCount(quotaProbe.getQuotaRoot(MailboxPath.inbox(BOB)), QuotaCountLimit.count(43)); given() .header("Authorization", accessToken.asString()) diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java index b990feb..da25670 100644 --- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java +++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java @@ -43,7 +43,7 @@ import org.apache.james.jmap.AccessToken; import org.apache.james.jmap.draft.JmapGuiceProbe; import org.apache.james.junit.categories.BasicFeature; import org.apache.james.mailbox.DefaultMailboxes; -import org.apache.james.mailbox.model.MailboxConstants; +import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.probe.MailboxProbe; import org.apache.james.modules.MailboxProbeImpl; import org.apache.james.modules.QuotaProbesImpl; @@ -67,6 +67,7 @@ public abstract class QuotaMailingTest { private static final String PASSWORD = "password"; private static final String BOB_PASSWORD = "bobPassword"; private static final ConditionFactory WAIT_TWO_MINUTES = calmlyAwait.atMost(Duration.TWO_MINUTES); + private QuotaProbesImpl quotaProbe; protected abstract GuiceJamesServer createJmapServer() throws IOException; @@ -80,6 +81,7 @@ public abstract class QuotaMailingTest { jmapServer.start(); MailboxProbe mailboxProbe = jmapServer.getProbe(MailboxProbeImpl.class); DataProbe dataProbe = jmapServer.getProbe(DataProbeImpl.class); + quotaProbe = jmapServer.getProbe(QuotaProbesImpl.class); RestAssured.requestSpecification = jmapRequestSpecBuilder .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort().getValue()) @@ -102,9 +104,7 @@ public abstract class QuotaMailingTest { @Category(BasicFeature.class) @Test public void shouldSendANoticeWhenThresholdExceeded() throws Exception { - jmapServer.getProbe(QuotaProbesImpl.class) - .setMaxStorage(MailboxConstants.USER_NAMESPACE + "&" + HOMER.asString(), - QuotaSizeLimit.size(100 * 1000)); + quotaProbe.setMaxStorage(quotaProbe.getQuotaRoot(MailboxPath.inbox(HOMER)), QuotaSizeLimit.size(100 * 1000)); bartSendMessageToHomer(); // Homer receives a mail big enough to trigger a configured threshold @@ -128,9 +128,7 @@ public abstract class QuotaMailingTest { @Test public void configurationShouldBeWellLoaded() throws Exception { - jmapServer.getProbe(QuotaProbesImpl.class) - .setMaxStorage(MailboxConstants.USER_NAMESPACE + "&" + HOMER.asString(), - QuotaSizeLimit.size(100 * 1000)); + quotaProbe.setMaxStorage(quotaProbe.getQuotaRoot(MailboxPath.inbox(HOMER)), QuotaSizeLimit.size(100 * 1000)); bartSendMessageToHomer(); // Homer receives a mail big enough to trigger a 10% configured threshold diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java index 2b2b855..6667197 100644 --- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java +++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java @@ -53,7 +53,9 @@ import org.apache.james.junit.categories.BasicFeature; import org.apache.james.mailbox.DefaultMailboxes; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MailboxConstants; +import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageId; +import org.apache.james.mailbox.model.QuotaRoot; import org.apache.james.mailbox.probe.MailboxProbe; import org.apache.james.mailbox.probe.QuotaProbe; import org.apache.james.modules.MailboxProbeImpl; @@ -403,7 +405,7 @@ public abstract class SendMDNMethodTest { List<String> messageIds = listMessageIdsForAccount(homerAccessToken); QuotaProbe quotaProbe = jmapServer.getProbe(QuotaProbesImpl.class); - String inboxQuotaRoot = quotaProbe.getQuotaRoot("#private", HOMER.asString(), DefaultMailboxes.INBOX); + QuotaRoot inboxQuotaRoot = quotaProbe.getQuotaRoot(MailboxPath.inbox(HOMER)); quotaProbe.setMaxStorage(inboxQuotaRoot, QuotaSizeLimit.size(100)); MessageAppender.fillMailbox(jmapServer.getProbe(MailboxProbeImpl.class), HOMER.asString(), MailboxConstants.INBOX); diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java index 79a7c69..39470b5 100644 --- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java +++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java @@ -94,6 +94,7 @@ import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.model.MessageResult; +import org.apache.james.mailbox.model.QuotaRoot; import org.apache.james.mailbox.probe.ACLProbe; import org.apache.james.mailbox.probe.MailboxProbe; import org.apache.james.mailbox.probe.QuotaProbe; @@ -1325,7 +1326,7 @@ public abstract class SetMessagesMethodTest { @Test public void setMessagesShouldNotAllowDraftCreationWhenOverQuota() throws MailboxException { QuotaProbe quotaProbe = jmapServer.getProbe(QuotaProbesImpl.class); - String inboxQuotaRoot = quotaProbe.getQuotaRoot("#private", USERNAME.asString(), DefaultMailboxes.INBOX); + QuotaRoot inboxQuotaRoot = quotaProbe.getQuotaRoot(MailboxPath.inbox(USERNAME)); quotaProbe.setMaxStorage(inboxQuotaRoot, QuotaSizeLimit.size(100)); MessageAppender.fillMailbox(mailboxProbe, USERNAME.asString(), MailboxConstants.INBOX); @@ -1442,7 +1443,7 @@ public abstract class SetMessagesMethodTest { @Test public void setMessagesShouldNotAllowCopyWhenOverQuota() throws MailboxException { QuotaProbe quotaProbe = jmapServer.getProbe(QuotaProbesImpl.class); - String inboxQuotaRoot = quotaProbe.getQuotaRoot("#private", USERNAME.asString(), DefaultMailboxes.INBOX); + QuotaRoot inboxQuotaRoot = quotaProbe.getQuotaRoot(MailboxPath.inbox(USERNAME)); quotaProbe.setMaxStorage(inboxQuotaRoot, QuotaSizeLimit.size(100)); List<ComposedMessageId> composedMessageIds = MessageAppender.fillMailbox(mailboxProbe, USERNAME.asString(), MailboxConstants.INBOX); @@ -2772,7 +2773,7 @@ public abstract class SetMessagesMethodTest { @Test public void setMessagesShouldTriggerMaxQuotaReachedWhenTryingToSendMessageAndQuotaReached() throws Exception { QuotaProbe quotaProbe = jmapServer.getProbe(QuotaProbesImpl.class); - String inboxQuotaRoot = quotaProbe.getQuotaRoot("#private", USERNAME.asString(), DefaultMailboxes.INBOX); + QuotaRoot inboxQuotaRoot = quotaProbe.getQuotaRoot(MailboxPath.inbox(USERNAME)); quotaProbe.setMaxStorage(inboxQuotaRoot, QuotaSizeLimit.size(100)); MessageAppender.fillMailbox(mailboxProbe, USERNAME.asString(), MailboxConstants.INBOX); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
