You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rc...@apache.org on 2020/02/06 03:54:42 UTC
[james-project] 09/16: [REFACTORING] QuotaProbe strong typing
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 <bt...@linagora.com>
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&alice@domain.tld", QuotaCountLimit.count(42));
- quotaProbe.setMaxMessageCount("#private&bob@domain.tld", 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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org