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 ro...@apache.org on 2019/05/02 12:43:00 UTC
[james-project] 02/06: JAMES-2746 extract QuotaLoader from
MailboxFactory
This is an automated email from the ASF dual-hosted git repository.
rouazana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 3897673e44bf72a334947d7099bb7631ddbcbea3
Author: RĂ©mi Kowalski <rk...@linagora.com>
AuthorDate: Tue Apr 30 16:31:56 2019 +0200
JAMES-2746 extract QuotaLoader from MailboxFactory
---
.../james/jmap/methods/GetMailboxesMethod.java | 31 +++++----
.../apache/james/jmap/model/MailboxFactory.java | 79 +++++----------------
.../jmap/utils/quotas/DefaultQuotaLoader.java | 52 ++++++++++++++
.../james/jmap/utils/quotas/QuotaLoader.java | 50 ++++++++++++++
.../quotas/QuotaLoaderWithDefaultPreloaded.java | 80 ++++++++++++++++++++++
.../james/jmap/methods/GetMailboxesMethodTest.java | 31 +++++----
.../james/jmap/model/MailboxFactoryTest.java | 2 +
7 files changed, 237 insertions(+), 88 deletions(-)
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
index ab22edc..485d364 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
@@ -33,13 +33,16 @@ import org.apache.james.jmap.model.GetMailboxesResponse;
import org.apache.james.jmap.model.MailboxFactory;
import org.apache.james.jmap.model.MailboxProperty;
import org.apache.james.jmap.model.mailbox.Mailbox;
-import org.apache.james.jmap.model.mailbox.Quotas;
+import org.apache.james.jmap.utils.quotas.QuotaLoader;
+import org.apache.james.jmap.utils.quotas.QuotaLoaderWithDefaultPreloaded;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxMetaData;
import org.apache.james.mailbox.model.search.MailboxQuery;
+import org.apache.james.mailbox.quota.QuotaManager;
+import org.apache.james.mailbox.quota.QuotaRootResolver;
import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.util.MDCBuilder;
import org.apache.james.util.OptionalUtils;
@@ -57,17 +60,21 @@ public class GetMailboxesMethod implements Method {
private static final Method.Request.Name METHOD_NAME = Method.Request.name("getMailboxes");
private static final Method.Response.Name RESPONSE_NAME = Method.Response.name("mailboxes");
private static final Optional<List<MailboxMetaData>> NO_PRELOADED_METADATA = Optional.empty();
- private static final Optional<Quotas> NO_PRELOADED_QUOTAS = Optional.empty();
- private final MailboxManager mailboxManager;
+ private final MailboxManager mailboxManager;
private final MailboxFactory mailboxFactory;
private final MetricFactory metricFactory;
+ private final QuotaRootResolver quotaRootResolver;
+ private final QuotaManager quotaManager;
@Inject
- @VisibleForTesting public GetMailboxesMethod(MailboxManager mailboxManager, MailboxFactory mailboxFactory, MetricFactory metricFactory) {
+ @VisibleForTesting
+ public GetMailboxesMethod(MailboxManager mailboxManager, QuotaRootResolver quotaRootResolver, QuotaManager quotaManager, MailboxFactory mailboxFactory, MetricFactory metricFactory) {
this.mailboxManager = mailboxManager;
this.mailboxFactory = mailboxFactory;
this.metricFactory = metricFactory;
+ this.quotaRootResolver = quotaRootResolver;
+ this.quotaManager = quotaManager;
}
@Override
@@ -126,15 +133,13 @@ public class GetMailboxesMethod implements Method {
}
-
private Stream<Mailbox> retrieveSpecificMailboxes(MailboxSession mailboxSession, ImmutableList<MailboxId> mailboxIds) {
return mailboxIds
.stream()
- .map(mailboxId -> mailboxFactory.builder()
+ .map(mailboxId -> mailboxFactory.builder()
.id(mailboxId)
.session(mailboxSession)
.usingPreloadedMailboxesMetadata(NO_PRELOADED_METADATA)
- .usingPreloadedUserDefaultQuotas(NO_PRELOADED_QUOTAS)
.build()
)
.flatMap(OptionalUtils::toStream);
@@ -142,7 +147,7 @@ public class GetMailboxesMethod implements Method {
private Stream<Mailbox> retrieveAllMailboxes(MailboxSession mailboxSession) throws MailboxException {
List<MailboxMetaData> userMailboxes = getAllMailboxesMetaData(mailboxSession);
- Quotas mailboxQuotas = mailboxFactory.getUserDefaultQuotas(mailboxSession);
+ QuotaLoader quotaLoader = new QuotaLoaderWithDefaultPreloaded(quotaRootResolver, quotaManager, mailboxSession);
return userMailboxes
.stream()
@@ -151,17 +156,17 @@ public class GetMailboxesMethod implements Method {
.id(mailboxId)
.session(mailboxSession)
.usingPreloadedMailboxesMetadata(Optional.of(userMailboxes))
- .usingPreloadedUserDefaultQuotas(Optional.of(mailboxQuotas))
+ .quotaLoader(quotaLoader)
.build())
.flatMap(OptionalUtils::toStream);
}
private List<MailboxMetaData> getAllMailboxesMetaData(MailboxSession mailboxSession) throws MailboxException {
return mailboxManager.search(
- MailboxQuery.builder()
- .matchesAllMailboxNames()
- .build(),
- mailboxSession);
+ MailboxQuery.builder()
+ .matchesAllMailboxNames()
+ .build(),
+ mailboxSession);
}
}
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 d2506fb..2e88972 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
@@ -23,14 +23,14 @@ import java.util.Optional;
import javax.inject.Inject;
-import org.apache.james.core.quota.QuotaValue;
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.Rights;
import org.apache.james.jmap.model.mailbox.Rights.Username;
import org.apache.james.jmap.model.mailbox.SortOrder;
+import org.apache.james.jmap.utils.quotas.DefaultQuotaLoader;
+import org.apache.james.jmap.utils.quotas.QuotaLoader;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
@@ -41,8 +41,6 @@ import org.apache.james.mailbox.model.MailboxCounters;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxMetaData;
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.quota.QuotaManager;
import org.apache.james.mailbox.quota.QuotaRootResolver;
@@ -57,13 +55,14 @@ public class MailboxFactory {
public static class MailboxBuilder {
private final MailboxFactory mailboxFactory;
+ private QuotaLoader quotaLoader;
private MailboxSession session;
private MailboxId id;
private Optional<List<MailboxMetaData>> userMailboxesMetadata = Optional.empty();
- private Optional<Quotas> preloadedUserDefaultQuotas = Optional.empty();
- private MailboxBuilder(MailboxFactory mailboxFactory) {
+ private MailboxBuilder(MailboxFactory mailboxFactory, QuotaLoader quotaLoader) {
this.mailboxFactory = mailboxFactory;
+ this.quotaLoader = quotaLoader;
}
public MailboxBuilder id(MailboxId id) {
@@ -76,13 +75,13 @@ public class MailboxFactory {
return this;
}
- public MailboxBuilder usingPreloadedMailboxesMetadata(Optional<List<MailboxMetaData>> userMailboxesMetadata) {
- this.userMailboxesMetadata = userMailboxesMetadata;
+ public MailboxBuilder quotaLoader(QuotaLoader quotaLoader) {
+ this.quotaLoader = quotaLoader;
return this;
}
- public MailboxBuilder usingPreloadedUserDefaultQuotas(Optional<Quotas> preloadedUserDefaultQuotas) {
- this.preloadedUserDefaultQuotas = preloadedUserDefaultQuotas;
+ public MailboxBuilder usingPreloadedMailboxesMetadata(Optional<List<MailboxMetaData>> userMailboxesMetadata) {
+ this.userMailboxesMetadata = userMailboxesMetadata;
return this;
}
@@ -92,7 +91,7 @@ public class MailboxFactory {
try {
MessageManager mailbox = mailboxFactory.mailboxManager.getMailbox(id, session);
- return Optional.of(mailboxFactory.fromMessageManager(mailbox, userMailboxesMetadata, preloadedUserDefaultQuotas, session));
+ return Optional.of(mailboxFactory.fromMessageManager(mailbox, userMailboxesMetadata, quotaLoader, session));
} catch (MailboxNotFoundException e) {
return Optional.empty();
} catch (MailboxException e) {
@@ -109,12 +108,13 @@ public class MailboxFactory {
}
public MailboxBuilder builder() {
- return new MailboxBuilder(this);
+ QuotaLoader defaultQuotaLoader = new DefaultQuotaLoader(quotaRootResolver, quotaManager);
+ return new MailboxBuilder(this, defaultQuotaLoader);
}
private Mailbox fromMessageManager(MessageManager messageManager,
Optional<List<MailboxMetaData>> userMailboxesMetadata,
- Optional<Quotas> preloadedDefaultUserQuotas,
+ QuotaLoader quotaLoader,
MailboxSession mailboxSession) throws MailboxException {
MailboxPath mailboxPath = messageManager.getMailboxPath();
boolean isOwner = mailboxPath.belongsTo(mailboxSession);
@@ -125,7 +125,7 @@ public class MailboxFactory {
.removeEntriesFor(Username.forMailboxPath(mailboxPath));
Username username = Username.fromSession(mailboxSession);
- Quotas quotas = getQuotas(mailboxPath, preloadedDefaultUserQuotas);
+ Quotas quotas = quotaLoader.getQuotas(mailboxPath);
return Mailbox.builder()
.id(messageManager.getId())
@@ -147,49 +147,6 @@ public class MailboxFactory {
.build();
}
- private Quotas getQuotas(MailboxPath mailboxPath, Optional<Quotas> preloadedUserDefaultQuotas) throws MailboxException {
- QuotaRoot quotaRoot = quotaRootResolver.getQuotaRoot(mailboxPath);
- QuotaId quotaId = QuotaId.fromQuotaRoot(quotaRoot);
-
- if (containsQuotaId(preloadedUserDefaultQuotas, quotaId)) {
- return preloadedUserDefaultQuotas.get();
- }
- return Quotas.from(
- quotaId,
- Quotas.Quota.from(
- quotaToValue(quotaManager.getStorageQuota(quotaRoot)),
- quotaToValue(quotaManager.getMessageQuota(quotaRoot))));
- }
-
- private boolean containsQuotaId(Optional<Quotas> preloadedUserDefaultQuotas, QuotaId quotaId) {
- return preloadedUserDefaultQuotas
- .map(Quotas::getQuotas)
- .map(quotaIdQuotaMap -> quotaIdQuotaMap.containsKey(quotaId))
- .orElse(false);
- }
-
- public Quotas getUserDefaultQuotas(MailboxSession mailboxSession) throws MailboxException {
- MailboxPath inboxPath = MailboxPath.inbox(mailboxSession);
- return getQuotas(inboxPath, Optional.empty());
- }
-
- private <T extends QuotaValue<T>> Quotas.Value<T> quotaToValue(Quota<T> quota) {
- return new Quotas.Value<>(
- quotaValueToNumber(quota.getUsed()),
- quotaValueToOptionalNumber(quota.getLimit()));
- }
-
- private Number quotaValueToNumber(QuotaValue<?> value) {
- return Number.BOUND_SANITIZING_FACTORY.from(value.asLong());
- }
-
- private Optional<Number> quotaValueToOptionalNumber(QuotaValue<?> value) {
- if (value.isUnlimited()) {
- return Optional.empty();
- }
- return Optional.of(quotaValueToNumber(value));
- }
-
private MailboxNamespace getNamespace(MailboxPath mailboxPath, boolean isOwner) {
if (isOwner) {
return MailboxNamespace.personal();
@@ -197,7 +154,8 @@ public class MailboxFactory {
return MailboxNamespace.delegated(mailboxPath.getUser());
}
- @VisibleForTesting String getName(MailboxPath mailboxPath, MailboxSession mailboxSession) {
+ @VisibleForTesting
+ String getName(MailboxPath mailboxPath, MailboxSession mailboxSession) {
String name = mailboxPath.getName();
if (name.contains(String.valueOf(mailboxSession.getPathDelimiter()))) {
List<String> levels = Splitter.on(mailboxSession.getPathDelimiter()).splitToList(name);
@@ -206,8 +164,9 @@ public class MailboxFactory {
return name;
}
- @VisibleForTesting Optional<MailboxId> getParentIdFromMailboxPath(MailboxPath mailboxPath, Optional<List<MailboxMetaData>> userMailboxesMetadata,
- MailboxSession mailboxSession) throws MailboxException {
+ @VisibleForTesting
+ Optional<MailboxId> getParentIdFromMailboxPath(MailboxPath mailboxPath, Optional<List<MailboxMetaData>> userMailboxesMetadata,
+ MailboxSession mailboxSession) throws MailboxException {
List<MailboxPath> levels = mailboxPath.getHierarchyLevels(mailboxSession.getPathDelimiter());
if (levels.size() <= 1) {
return Optional.empty();
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/quotas/DefaultQuotaLoader.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/quotas/DefaultQuotaLoader.java
new file mode 100644
index 0000000..816d7cb
--- /dev/null
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/quotas/DefaultQuotaLoader.java
@@ -0,0 +1,52 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.jmap.utils.quotas;
+
+import javax.inject.Inject;
+
+import org.apache.james.jmap.model.mailbox.Quotas;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.QuotaRoot;
+import org.apache.james.mailbox.quota.QuotaManager;
+import org.apache.james.mailbox.quota.QuotaRootResolver;
+
+public class DefaultQuotaLoader extends QuotaLoader {
+
+ private final QuotaRootResolver quotaRootResolver;
+ private final QuotaManager quotaManager;
+
+ @Inject
+ public DefaultQuotaLoader(QuotaRootResolver quotaRootResolver, QuotaManager quotaManager) {
+ this.quotaRootResolver = quotaRootResolver;
+ this.quotaManager = quotaManager;
+ }
+
+ public Quotas getQuotas(MailboxPath mailboxPath) throws MailboxException {
+ QuotaRoot quotaRoot = quotaRootResolver.getQuotaRoot(mailboxPath);
+ Quotas.QuotaId quotaId = Quotas.QuotaId.fromQuotaRoot(quotaRoot);
+
+ return Quotas.from(
+ quotaId,
+ Quotas.Quota.from(
+ quotaToValue(quotaManager.getStorageQuota(quotaRoot)),
+ quotaToValue(quotaManager.getMessageQuota(quotaRoot))));
+ }
+
+}
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/quotas/QuotaLoader.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/quotas/QuotaLoader.java
new file mode 100644
index 0000000..2d16844
--- /dev/null
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/quotas/QuotaLoader.java
@@ -0,0 +1,50 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.jmap.utils.quotas;
+
+import java.util.Optional;
+
+import org.apache.james.core.quota.QuotaValue;
+import org.apache.james.jmap.model.Number;
+import org.apache.james.jmap.model.mailbox.Quotas;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.Quota;
+
+public abstract class QuotaLoader {
+
+ public abstract Quotas getQuotas(MailboxPath mailboxPath) throws MailboxException;
+
+ protected <T extends QuotaValue<T>> Quotas.Value<T> quotaToValue(Quota<T> quota) {
+ return new Quotas.Value<>(
+ quotaValueToNumber(quota.getUsed()),
+ quotaValueToOptionalNumber(quota.getLimit()));
+ }
+
+ protected Number quotaValueToNumber(QuotaValue<?> value) {
+ return Number.BOUND_SANITIZING_FACTORY.from(value.asLong());
+ }
+
+ protected Optional<Number> quotaValueToOptionalNumber(QuotaValue<?> value) {
+ if (value.isUnlimited()) {
+ return Optional.empty();
+ }
+ return Optional.of(quotaValueToNumber(value));
+ }
+}
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/quotas/QuotaLoaderWithDefaultPreloaded.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/quotas/QuotaLoaderWithDefaultPreloaded.java
new file mode 100644
index 0000000..abbda4f
--- /dev/null
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/quotas/QuotaLoaderWithDefaultPreloaded.java
@@ -0,0 +1,80 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.jmap.utils.quotas;
+
+import java.util.Optional;
+
+import org.apache.james.jmap.model.mailbox.Quotas;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.QuotaRoot;
+import org.apache.james.mailbox.quota.QuotaManager;
+import org.apache.james.mailbox.quota.QuotaRootResolver;
+
+public class QuotaLoaderWithDefaultPreloaded extends QuotaLoader {
+
+ private final QuotaRootResolver quotaRootResolver;
+ private final QuotaManager quotaManager;
+ private final Optional<Quotas> preloadedUserDefaultQuotas;
+ private final MailboxSession session;
+
+ public QuotaLoaderWithDefaultPreloaded(QuotaRootResolver quotaRootResolver,
+ QuotaManager quotaManager,
+ MailboxSession session) throws MailboxException {
+ this.quotaRootResolver = quotaRootResolver;
+ this.quotaManager = quotaManager;
+ this.session = session;
+ preloadedUserDefaultQuotas = Optional.of(getUserDefaultQuotas());
+
+ }
+
+ public Quotas getQuotas(MailboxPath mailboxPath) throws MailboxException {
+ QuotaRoot quotaRoot = quotaRootResolver.getQuotaRoot(mailboxPath);
+ Quotas.QuotaId quotaId = Quotas.QuotaId.fromQuotaRoot(quotaRoot);
+
+ if (containsQuotaId(preloadedUserDefaultQuotas, quotaId)) {
+ return preloadedUserDefaultQuotas.get();
+ }
+ return Quotas.from(
+ quotaId,
+ Quotas.Quota.from(
+ quotaToValue(quotaManager.getStorageQuota(quotaRoot)),
+ quotaToValue(quotaManager.getMessageQuota(quotaRoot))));
+ }
+
+ private boolean containsQuotaId(Optional<Quotas> preloadedUserDefaultQuotas, Quotas.QuotaId quotaId) {
+ return preloadedUserDefaultQuotas
+ .map(Quotas::getQuotas)
+ .map(quotaIdQuotaMap -> quotaIdQuotaMap.containsKey(quotaId))
+ .orElse(false);
+ }
+
+ private Quotas getUserDefaultQuotas() throws MailboxException {
+ QuotaRoot quotaRoot = quotaRootResolver.getQuotaRoot(MailboxPath.inbox(session));
+ Quotas.QuotaId quotaId = Quotas.QuotaId.fromQuotaRoot(quotaRoot);
+ return Quotas.from(
+ quotaId,
+ Quotas.Quota.from(
+ quotaToValue(quotaManager.getStorageQuota(quotaRoot)),
+ quotaToValue(quotaManager.getMessageQuota(quotaRoot))));
+
+ }
+
+}
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
index 3f53967..8a20c6c 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
@@ -37,7 +37,6 @@ import org.apache.james.jmap.model.MailboxFactory;
import org.apache.james.jmap.model.Number;
import org.apache.james.jmap.model.mailbox.Mailbox;
import org.apache.james.jmap.model.mailbox.SortOrder;
-import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MailboxSessionUtil;
import org.apache.james.mailbox.MessageManager;
@@ -67,15 +66,17 @@ public class GetMailboxesMethodTest {
private ClientId clientId;
private MailboxFactory mailboxFactory;
+ private QuotaRootResolver quotaRootResolver;
+ private QuotaManager quotaManager;
@Before
public void setup() throws Exception {
clientId = ClientId.of("#0");
mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
- QuotaRootResolver quotaRootResolver = mailboxManager.getQuotaComponents().getQuotaRootResolver();
- QuotaManager quotaManager = mailboxManager.getQuotaComponents().getQuotaManager();
+ quotaRootResolver = mailboxManager.getQuotaComponents().getQuotaRootResolver();
+ quotaManager = mailboxManager.getQuotaComponents().getQuotaManager();
mailboxFactory = new MailboxFactory(mailboxManager, quotaManager, quotaRootResolver);
- getMailboxesMethod = new GetMailboxesMethod(mailboxManager, mailboxFactory, new DefaultMetricFactory());
+ getMailboxesMethod = new GetMailboxesMethod(mailboxManager, quotaRootResolver, quotaManager, mailboxFactory, new DefaultMetricFactory());
}
@Test
@@ -84,9 +85,9 @@ public class GetMailboxesMethodTest {
.build();
MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME);
-
+
List<JmapResponse> getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, clientId, mailboxSession).collect(Collectors.toList());
-
+
assertThat(getMailboxesResponse)
.hasSize(1)
.extracting(JmapResponse::getResponse)
@@ -95,22 +96,22 @@ public class GetMailboxesMethodTest {
.flatExtracting(GetMailboxesResponse::getList)
.isEmpty();
}
-
+
@Test
public void getMailboxesShouldNotFailWhenMailboxManagerErrors() throws Exception {
- MailboxManager mockedMailboxManager = mock(MailboxManager.class);
+ StoreMailboxManager mockedMailboxManager = mock(StoreMailboxManager.class);
when(mockedMailboxManager.list(any()))
.thenReturn(ImmutableList.of(new MailboxPath("namespace", "user", "name")));
when(mockedMailboxManager.getMailbox(any(MailboxPath.class), any()))
.thenThrow(new MailboxException());
- GetMailboxesMethod testee = new GetMailboxesMethod(mockedMailboxManager, mailboxFactory, new DefaultMetricFactory());
-
+ GetMailboxesMethod testee = new GetMailboxesMethod(mockedMailboxManager, quotaRootResolver, quotaManager, mailboxFactory, new DefaultMetricFactory());
+
GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
.build();
MailboxSession session = MailboxSessionUtil.create(USERNAME);
-
+
List<JmapResponse> getMailboxesResponse = testee.process(getMailboxesRequest, clientId, session).collect(Collectors.toList());
-
+
assertThat(getMailboxesResponse)
.hasSize(1)
.extracting(JmapResponse::getResponse)
@@ -140,7 +141,7 @@ public class GetMailboxesMethodTest {
.build();
List<JmapResponse> getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, clientId, mailboxSession).collect(Collectors.toList());
-
+
assertThat(getMailboxesResponse)
.hasSize(1)
.extracting(JmapResponse::getResponse)
@@ -165,7 +166,7 @@ public class GetMailboxesMethodTest {
.build();
List<JmapResponse> getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, clientId, userSession).collect(Collectors.toList());
-
+
assertThat(getMailboxesResponse)
.hasSize(1)
.extracting(JmapResponse::getResponse)
@@ -379,7 +380,7 @@ public class GetMailboxesMethodTest {
mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "Spam"), mailboxSession);
mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "Templates"), mailboxSession);
mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "WITHOUT ROLE"), mailboxSession);
-
+
GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
.build();
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
index 34e8e34..cdbaa54 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
@@ -24,6 +24,8 @@ import java.util.Optional;
import org.apache.james.jmap.model.mailbox.Mailbox;
import org.apache.james.jmap.model.mailbox.MailboxNamespace;
+import org.apache.james.jmap.utils.quotas.DefaultQuotaLoader;
+import org.apache.james.jmap.utils.quotas.QuotaLoader;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org