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 2018/03/08 08:30:45 UTC
[10/17] james-project git commit: JAMES-2344 define a
UserQuotaRootResolver to manage user based quota
JAMES-2344 define a UserQuotaRootResolver to manage user based quota
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/95c2367e
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/95c2367e
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/95c2367e
Branch: refs/heads/master
Commit: 95c2367e177ba81f4e58b72a9b787472ad5332c5
Parents: 63b010d
Author: Matthieu Baechler <ma...@apache.org>
Authored: Wed Mar 7 11:24:09 2018 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Thu Mar 8 09:29:51 2018 +0100
----------------------------------------------------------------------
mailbox/api/pom.xml | 4 +
.../apache/james/mailbox/model/QuotaRoot.java | 6 -
.../james/mailbox/quota/QuotaRootResolver.java | 2 -
.../mailbox/quota/UserQuotaRootResolver.java | 29 +++++
.../cassandra/CassandraTestSystemFixture.java | 4 +-
.../manager/InMemoryIntegrationResources.java | 8 +-
.../main/resources/META-INF/spring/quota.xml | 2 +-
.../mailbox/store/StoreMailboxManager.java | 4 +-
.../store/quota/DefaultQuotaRootResolver.java | 73 ------------
.../quota/DefaultUserQuotaRootResolver.java | 75 +++++++++++++
.../StoreMessageIdManagerSideEffectTest.java | 4 +-
.../quota/DefaultQuotaRootResolverTest.java | 4 +-
.../cassandra/host/CassandraHostSystem.java | 4 +-
.../host/ElasticSearchHostSystem.java | 4 +-
.../imapmailbox/hbase/host/HBaseHostSystem.java | 4 +-
.../inmemory/host/InMemoryHostSystem.java | 4 +-
.../mpt/imapmailbox/jcr/host/JCRHostSystem.java | 4 +-
.../mpt/imapmailbox/jpa/host/JPAHostSystem.java | 4 +-
.../host/LuceneSearchHostSystem.java | 4 +-
.../maildir/host/MaildirHostSystem.java | 4 +-
.../response/ImmutableStatusResponse.java | 13 +++
.../james/imap/processor/GetQuotaProcessor.java | 4 +-
.../imap/processor/GetQuotaProcessorTest.java | 12 +-
.../modules/mailbox/CassandraQuotaModule.java | 8 +-
.../james/modules/mailbox/JpaQuotaModule.java | 8 +-
.../apache/james/modules/QuotaProbesImpl.java | 13 ++-
.../modules/mailbox/DefaultQuotaModule.java | 8 +-
.../modules/mailbox/MemoryQuotaModule.java | 8 +-
.../james/adapter/mailbox/QuotaManagement.java | 13 ++-
.../mailbox/MaxQuotaConfigurationReader.java | 10 +-
.../META-INF/org/apache/james/spring-server.xml | 1 -
.../transport/matchers/IsOverQuotaTest.java | 6 +-
.../integration/GetMailboxesMethodTest.java | 2 +-
.../james/webadmin/routes/UserQuotaRoutes.java | 21 ++--
.../webadmin/service/UserQuotaService.java | 38 ++++---
.../webadmin/routes/UserQuotaRoutesTest.java | 111 ++++++++++---------
36 files changed, 287 insertions(+), 236 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mailbox/api/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/api/pom.xml b/mailbox/api/pom.xml
index 7e825f9..c7008e1 100644
--- a/mailbox/api/pom.xml
+++ b/mailbox/api/pom.xml
@@ -34,6 +34,10 @@
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>james-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
<artifactId>james-server-util-java8</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mailbox/api/src/main/java/org/apache/james/mailbox/model/QuotaRoot.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/QuotaRoot.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/QuotaRoot.java
index debb37a..885540b 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/QuotaRoot.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/QuotaRoot.java
@@ -26,12 +26,6 @@ import com.google.common.base.Objects;
*/
public class QuotaRoot {
- private static final String USER = "user-";
-
- public static QuotaRoot forUser(String value) {
- return new QuotaRoot(USER + value);
- }
-
public static QuotaRoot quotaRoot(String value) {
return new QuotaRoot(value);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mailbox/api/src/main/java/org/apache/james/mailbox/quota/QuotaRootResolver.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/quota/QuotaRootResolver.java b/mailbox/api/src/main/java/org/apache/james/mailbox/quota/QuotaRootResolver.java
index 0a8ad75..80bf8c9 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/quota/QuotaRootResolver.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/quota/QuotaRootResolver.java
@@ -28,8 +28,6 @@ import org.apache.james.mailbox.model.QuotaRoot;
public interface QuotaRootResolver {
- QuotaRoot createQuotaRoot(String quotaRootString);
-
/**
* Return the quotaRoot associated with the given mailbox name.
*
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mailbox/api/src/main/java/org/apache/james/mailbox/quota/UserQuotaRootResolver.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/quota/UserQuotaRootResolver.java b/mailbox/api/src/main/java/org/apache/james/mailbox/quota/UserQuotaRootResolver.java
new file mode 100644
index 0000000..c643f4b
--- /dev/null
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/quota/UserQuotaRootResolver.java
@@ -0,0 +1,29 @@
+/****************************************************************
+ * 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.mailbox.quota;
+
+import org.apache.james.core.User;
+import org.apache.james.mailbox.model.QuotaRoot;
+import org.apache.james.mailbox.quota.QuotaRootResolver;
+
+public interface UserQuotaRootResolver extends QuotaRootResolver {
+
+ QuotaRoot forUser(User user);
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
index 4d502f9..6f6de00 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
@@ -40,7 +40,7 @@ import org.apache.james.mailbox.store.StoreRightManager;
import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.StoreQuotaManager;
public class CassandraTestSystemFixture {
@@ -77,7 +77,7 @@ public class CassandraTestSystemFixture {
dispatcher,
new CassandraMessageId.Factory(),
quotaManager,
- new DefaultQuotaRootResolver(mapperFactory));
+ new DefaultUserQuotaRootResolver(mapperFactory));
}
public static MaxQuotaManager createMaxQuotaManager(CassandraCluster cassandra) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/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 b96947d..72654e3 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
@@ -50,14 +50,14 @@ import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
import org.apache.james.mailbox.store.quota.StoreQuotaManager;
public class InMemoryIntegrationResources implements IntegrationResources<StoreMailboxManager> {
private SimpleGroupMembershipResolver groupMembershipResolver;
- private DefaultQuotaRootResolver quotaRootResolver;
+ private DefaultUserQuotaRootResolver quotaRootResolver;
@Override
public InMemoryMailboxManager createMailboxManager(GroupMembershipResolver groupMembershipResolver) throws MailboxException {
@@ -171,9 +171,9 @@ public class InMemoryIntegrationResources implements IntegrationResources<StoreM
}
@Override
- public DefaultQuotaRootResolver createQuotaRootResolver(StoreMailboxManager mailboxManager) throws Exception {
+ public DefaultUserQuotaRootResolver createQuotaRootResolver(StoreMailboxManager mailboxManager) throws Exception {
if (quotaRootResolver == null) {
- quotaRootResolver = new DefaultQuotaRootResolver(mailboxManager.getMapperFactory());
+ quotaRootResolver = new DefaultUserQuotaRootResolver(mailboxManager.getMapperFactory());
}
return quotaRootResolver;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mailbox/spring/src/main/resources/META-INF/spring/quota.xml
----------------------------------------------------------------------
diff --git a/mailbox/spring/src/main/resources/META-INF/spring/quota.xml b/mailbox/spring/src/main/resources/META-INF/spring/quota.xml
index 45361d2..2a564aa 100644
--- a/mailbox/spring/src/main/resources/META-INF/spring/quota.xml
+++ b/mailbox/spring/src/main/resources/META-INF/spring/quota.xml
@@ -25,7 +25,7 @@
<bean id="currentQuotaManager" class="org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager">
<constructor-arg index="0" ref="entityManagerFactory" />
</bean>
- <bean id="defaultQuotaRootResolver" class="org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver" lazy-init="true">
+ <bean id="defaultQuotaRootResolver" class="org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver" lazy-init="true">
<constructor-arg index="0" ref="messageMapperFactory"/>
</bean>
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index a48e18f..2e633d6 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -72,7 +72,7 @@ import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.NoQuotaManager;
import org.apache.james.mailbox.store.quota.QuotaUpdater;
import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
@@ -220,7 +220,7 @@ public class StoreMailboxManager implements MailboxManager {
quotaManager = new NoQuotaManager();
}
if (quotaRootResolver == null) {
- quotaRootResolver = new DefaultQuotaRootResolver(mailboxSessionMapperFactory);
+ quotaRootResolver = new DefaultUserQuotaRootResolver(mailboxSessionMapperFactory);
}
if (quotaUpdater != null && quotaUpdater instanceof MailboxListener) {
this.addGlobalListener((MailboxListener) quotaUpdater, session);
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolver.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolver.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolver.java
deleted file mode 100644
index 3125b6f..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolver.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/****************************************************************
- * 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.mailbox.store.quota;
-
-import java.util.List;
-
-import javax.inject.Inject;
-
-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.QuotaRootResolver;
-import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
-import org.apache.james.mailbox.store.mail.model.Mailbox;
-
-import com.google.common.base.Preconditions;
-import com.google.common.base.Splitter;
-import com.google.common.collect.Lists;
-
-public class DefaultQuotaRootResolver implements QuotaRootResolver {
-
- public static final String SEPARATOR = "&"; // Character illegal for mailbox naming in regard of RFC 3501 section 5.1
-
- private final MailboxSessionMapperFactory factory;
-
- @Inject
- public DefaultQuotaRootResolver(MailboxSessionMapperFactory factory) {
- this.factory = factory;
- }
-
- @Override
- public QuotaRoot createQuotaRoot(String quotaRootValue) {
- return QuotaRoot.quotaRoot(quotaRootValue);
- }
-
- @Override
- public QuotaRoot getQuotaRoot(MailboxPath mailboxPath) throws MailboxException {
- Preconditions.checkArgument(!mailboxPath.getNamespace().contains(SEPARATOR), "Namespace should not contain " + SEPARATOR);
- Preconditions.checkArgument(!mailboxPath.getUser().contains(SEPARATOR), "Username should not contain " + SEPARATOR);
- return QuotaRoot.quotaRoot(mailboxPath.getNamespace() + SEPARATOR + mailboxPath.getUser());
- }
-
- @Override
- public List<MailboxPath> retrieveAssociatedMailboxes(QuotaRoot quotaRoot, MailboxSession mailboxSession) throws MailboxException {
- List<String> parts = Lists.newArrayList(Splitter.on(SEPARATOR).split(quotaRoot.getValue()));
- if (parts.size() != 2) {
- throw new MailboxException(quotaRoot + " used as QuotaRoot should not contain 2 \"" + SEPARATOR + "\"");
- }
- String namespace = parts.get(0);
- String user = parts.get(1);
- return Lists.transform(factory.getMailboxMapper(mailboxSession)
- .findMailboxWithPathLike(new MailboxPath(namespace, user, "%")),
- Mailbox::generateAssociatedPath);
- }
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolver.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolver.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolver.java
new file mode 100644
index 0000000..a95c8a5
--- /dev/null
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolver.java
@@ -0,0 +1,75 @@
+/****************************************************************
+ * 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.mailbox.store.quota;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.apache.james.core.User;
+import org.apache.james.mailbox.MailboxSession;
+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.QuotaRoot;
+import org.apache.james.mailbox.quota.UserQuotaRootResolver;
+import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
+
+import com.google.common.base.Preconditions;
+import com.google.common.base.Splitter;
+import com.google.common.collect.Lists;
+
+public class DefaultUserQuotaRootResolver implements UserQuotaRootResolver {
+
+ public static final String SEPARATOR = "&"; // Character illegal for mailbox naming in regard of RFC 3501 section 5.1
+
+ private final MailboxSessionMapperFactory factory;
+
+ @Inject
+ public DefaultUserQuotaRootResolver(MailboxSessionMapperFactory factory) {
+ this.factory = factory;
+ }
+
+ @Override
+ public QuotaRoot forUser(User user) {
+ return QuotaRoot.quotaRoot(MailboxConstants.USER_NAMESPACE + SEPARATOR + user.asString());
+ }
+
+ @Override
+ public QuotaRoot getQuotaRoot(MailboxPath mailboxPath) throws MailboxException {
+ Preconditions.checkArgument(!mailboxPath.getNamespace().contains(SEPARATOR), "Namespace should not contain " + SEPARATOR);
+ Preconditions.checkArgument(!mailboxPath.getUser().contains(SEPARATOR), "Username should not contain " + SEPARATOR);
+ return QuotaRoot.quotaRoot(mailboxPath.getNamespace() + SEPARATOR + mailboxPath.getUser());
+ }
+
+ @Override
+ public List<MailboxPath> retrieveAssociatedMailboxes(QuotaRoot quotaRoot, MailboxSession mailboxSession) throws MailboxException {
+ List<String> parts = Lists.newArrayList(Splitter.on(SEPARATOR).split(quotaRoot.getValue()));
+ if (parts.size() != 2) {
+ throw new MailboxException(quotaRoot + " used as QuotaRoot should not contain 2 \"" + SEPARATOR + "\"");
+ }
+ String namespace = parts.get(0);
+ String user = parts.get(1);
+ return Lists.transform(factory.getMailboxMapper(mailboxSession)
+ .findMailboxWithPathLike(new MailboxPath(namespace, user, "%")),
+ Mailbox::generateAssociatedPath);
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
index 4349dce..c4d3b9a 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
@@ -32,7 +32,7 @@ import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.TestMessageId;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.junit.Before;
public class StoreMessageIdManagerSideEffectTest extends AbstractMessageIdManagerSideEffectTest {
@@ -53,7 +53,7 @@ public class StoreMessageIdManagerSideEffectTest extends AbstractMessageIdManage
MessageIdManager messageIdManager = new StoreMessageIdManager(mailboxManager,
testMailboxSessionMapperFactory, dispatcher, messageIdFactory,
- quotaManager, new DefaultQuotaRootResolver(testMailboxSessionMapperFactory));
+ quotaManager, new DefaultUserQuotaRootResolver(testMailboxSessionMapperFactory));
return new StoreMessageIdManagerTestSystem(messageIdManager,
messageIdFactory,
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolverTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolverTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolverTest.java
index 89c46da..0ca9839 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolverTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolverTest.java
@@ -43,13 +43,13 @@ public class DefaultQuotaRootResolverTest {
public static final SimpleMailbox MAILBOX_2 = new SimpleMailbox(MAILBOX_PATH_2, 10);
public static final QuotaRoot QUOTA_ROOT = QuotaRoot.quotaRoot("#private&benwa");
- private DefaultQuotaRootResolver testee;
+ private DefaultUserQuotaRootResolver testee;
private MailboxSessionMapperFactory mockedFactory;
@Before
public void setUp() {
mockedFactory = mock(MailboxSessionMapperFactory.class);
- testee = new DefaultQuotaRootResolver(mockedFactory);
+ testee = new DefaultUserQuotaRootResolver(mockedFactory);
}
@Test
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
index 89fea73..efe3d1a 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
@@ -61,7 +61,7 @@ import org.apache.james.mailbox.store.StoreSubscriptionManager;
import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
import org.apache.james.mailbox.store.quota.StoreQuotaManager;
import org.apache.james.metrics.logger.DefaultMetricFactory;
@@ -124,7 +124,7 @@ public class CassandraHostSystem extends JamesImapHostSystem {
mailboxManager = new CassandraMailboxManager(mapperFactory, authenticator, authorizator,
new JVMMailboxPathLocker(), new MessageParser(), messageIdFactory,
mailboxEventDispatcher, delegatingMailboxListener, annotationManager, storeRightManager);
- QuotaRootResolver quotaRootResolver = new DefaultQuotaRootResolver(mapperFactory);
+ QuotaRootResolver quotaRootResolver = new DefaultUserQuotaRootResolver(mapperFactory);
perUserMaxQuotaManager = new CassandraPerUserMaxQuotaManager(new CassandraPerUserMaxQuotaDao(session));
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
index 4d19b58..ea9b789 100644
--- a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
+++ b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
@@ -57,7 +57,7 @@ import org.apache.james.mailbox.quota.QuotaSize;
import org.apache.james.mailbox.store.StoreMailboxManager;
import org.apache.james.mailbox.store.StoreSubscriptionManager;
import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.NoQuotaManager;
import org.apache.james.metrics.logger.DefaultMetricFactory;
import org.apache.james.mpt.api.ImapFeatures;
@@ -125,7 +125,7 @@ public class ElasticSearchHostSystem extends JamesImapHostSystem {
DefaultImapProcessorFactory.createDefaultProcessor(this.mailboxManager,
new StoreSubscriptionManager(factory),
new NoQuotaManager(),
- new DefaultQuotaRootResolver(factory),
+ new DefaultUserQuotaRootResolver(factory),
new DefaultMetricFactory());
configure(new DefaultImapDecoderFactory().buildImapDecoder(),
new DefaultImapEncoderFactory().buildImapEncoder(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
index a9ac883..f09749f 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
@@ -51,7 +51,7 @@ import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.NoQuotaManager;
import org.apache.james.metrics.api.NoopMetricFactory;
import org.apache.james.mpt.api.ImapFeatures;
@@ -126,7 +126,7 @@ public class HBaseHostSystem extends JamesImapHostSystem {
mailboxManager,
subscriptionManager,
new NoQuotaManager(),
- new DefaultQuotaRootResolver(mapperFactory),
+ new DefaultUserQuotaRootResolver(mapperFactory),
new NoopMetricFactory());
resetUserMetaData();
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
index feb3163..b9113d9 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
@@ -36,7 +36,7 @@ import org.apache.james.mailbox.quota.QuotaSize;
import org.apache.james.mailbox.store.StoreMailboxManager;
import org.apache.james.mailbox.store.StoreSubscriptionManager;
import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
import org.apache.james.mailbox.store.quota.StoreQuotaManager;
import org.apache.james.metrics.logger.DefaultMetricFactory;
@@ -64,7 +64,7 @@ public class InMemoryHostSystem extends JamesImapHostSystem {
super.beforeTest();
this.mailboxManager = new InMemoryIntegrationResources()
.createMailboxManager(new SimpleGroupMembershipResolver(), authenticator, authorizator);
- QuotaRootResolver quotaRootResolver = new DefaultQuotaRootResolver(mailboxManager.getMapperFactory());
+ QuotaRootResolver quotaRootResolver = new DefaultUserQuotaRootResolver(mailboxManager.getMapperFactory());
perUserMaxQuotaManager = new InMemoryPerUserMaxQuotaManager();
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java b/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
index 985f774..16395e6 100644
--- a/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
+++ b/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
@@ -50,7 +50,7 @@ import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.NoQuotaManager;
import org.apache.james.metrics.logger.DefaultMetricFactory;
import org.apache.james.mpt.api.ImapFeatures;
@@ -110,7 +110,7 @@ public class JCRHostSystem extends JamesImapHostSystem {
DefaultImapProcessorFactory.createDefaultProcessor(mailboxManager,
new JCRSubscriptionManager(mf),
new NoQuotaManager(),
- new DefaultQuotaRootResolver(mf),
+ new DefaultUserQuotaRootResolver(mf),
new DefaultMetricFactory());
resetUserMetaData();
MailboxSession session = mailboxManager.createSystemSession("test");
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
index 4b5d320..b884b28 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
@@ -54,7 +54,7 @@ import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
import org.apache.james.mailbox.store.quota.StoreQuotaManager;
import org.apache.james.metrics.logger.DefaultMetricFactory;
@@ -106,7 +106,7 @@ public class JPAHostSystem extends JamesImapHostSystem {
messageParser, new DefaultMessageId.Factory(), delegatingListener,
mailboxEventDispatcher, annotationManager, storeRightManager);
- DefaultQuotaRootResolver quotaRootResolver = new DefaultQuotaRootResolver(mapperFactory);
+ DefaultUserQuotaRootResolver quotaRootResolver = new DefaultUserQuotaRootResolver(mapperFactory);
JpaCurrentQuotaManager currentQuotaManager = new JpaCurrentQuotaManager(entityManagerFactory);
maxQuotaManager = new JPAPerUserMaxQuotaManager(new JPAPerUserMaxQuotaDAO(entityManagerFactory));
StoreQuotaManager storeQuotaManager = new StoreQuotaManager(currentQuotaManager, maxQuotaManager);
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
index 740594e..5650706 100644
--- a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
+++ b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
@@ -58,7 +58,7 @@ import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.NoQuotaManager;
import org.apache.james.metrics.logger.DefaultMetricFactory;
import org.apache.james.mpt.api.ImapFeatures;
@@ -143,7 +143,7 @@ public class LuceneSearchHostSystem extends JamesImapHostSystem {
mailboxManager,
subscriptionManager,
new NoQuotaManager(),
- new DefaultQuotaRootResolver(factory),
+ new DefaultUserQuotaRootResolver(factory),
new DefaultMetricFactory());
configure(new DefaultImapDecoderFactory().buildImapDecoder(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
index 7861d4d..0243bf0 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
@@ -44,7 +44,7 @@ import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.NoQuotaManager;
import org.apache.james.metrics.logger.DefaultMetricFactory;
import org.apache.james.mpt.api.ImapFeatures;
@@ -89,7 +89,7 @@ public class MaildirHostSystem extends JamesImapHostSystem {
mailboxManager,
sm,
new NoQuotaManager(),
- new DefaultQuotaRootResolver(mailboxSessionMapperFactory),
+ new DefaultUserQuotaRootResolver(mailboxSessionMapperFactory),
new DefaultMetricFactory());
configure(new DefaultImapDecoderFactory().buildImapDecoder(),
new DefaultImapEncoderFactory().buildImapEncoder(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/protocols/imap/src/main/java/org/apache/james/imap/message/response/ImmutableStatusResponse.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/message/response/ImmutableStatusResponse.java b/protocols/imap/src/main/java/org/apache/james/imap/message/response/ImmutableStatusResponse.java
index 4bd9767..8adba0a 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/message/response/ImmutableStatusResponse.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/message/response/ImmutableStatusResponse.java
@@ -23,6 +23,8 @@ import org.apache.james.imap.api.ImapCommand;
import org.apache.james.imap.api.display.HumanReadableText;
import org.apache.james.imap.api.message.response.StatusResponse;
+import com.google.common.base.MoreObjects;
+
/**
* Immutable status response. Suitable for unpooled usage.
*
@@ -83,4 +85,15 @@ public class ImmutableStatusResponse implements StatusResponse {
public ImapCommand getCommand() {
return command;
}
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("responseCode", responseCode)
+ .add("serverResponseType", serverResponseType)
+ .add("tag", tag)
+ .add("textKey", textKey)
+ .add("command", command)
+ .toString();
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/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 bed1740..f7cbfbb 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
@@ -78,7 +78,7 @@ public class GetQuotaProcessor extends AbstractMailboxProcessor<GetQuotaRequest>
protected void doProcess(GetQuotaRequest message, ImapSession session, String tag, ImapCommand command, Responder responder) {
try {
if (hasRight(message.getQuotaRoot(), session)) {
- QuotaRoot quotaRoot = quotaRootResolver.createQuotaRoot(message.getQuotaRoot());
+ 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()) {
@@ -105,7 +105,7 @@ public class GetQuotaProcessor extends AbstractMailboxProcessor<GetQuotaRequest>
private boolean hasRight(String quotaRoot, ImapSession session) throws MailboxException {
// If any of the mailboxes owned by quotaRoot user can be read by the current user, then we should respond to him.
final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
- List<MailboxPath> mailboxList = quotaRootResolver.retrieveAssociatedMailboxes(quotaRootResolver.createQuotaRoot(quotaRoot), mailboxSession);
+ List<MailboxPath> mailboxList = quotaRootResolver.retrieveAssociatedMailboxes(QuotaRoot.quotaRoot(quotaRoot), mailboxSession);
for (MailboxPath mailboxPath : mailboxList) {
if (getMailboxManager().hasRight(mailboxPath, MailboxACL.Right.Read, mailboxSession)) {
return true;
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/protocols/imap/src/test/java/org/apache/james/imap/processor/GetQuotaProcessorTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/GetQuotaProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/GetQuotaProcessorTest.java
index 9f52053..abe0703 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/GetQuotaProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/GetQuotaProcessorTest.java
@@ -84,13 +84,11 @@ public class GetQuotaProcessorTest {
@Test
public void processorShouldWorkOnValidRights() throws Exception {
- GetQuotaRequest getQuotaRequest = new GetQuotaRequest("A004", ImapCommand.anyStateCommand("Name"), "quotaRoot");
+ GetQuotaRequest getQuotaRequest = new GetQuotaRequest("A004", ImapCommand.anyStateCommand("Name"), QUOTA_ROOT.getValue());
when(mockedImapSession.getState()).thenReturn(ImapSessionState.AUTHENTICATED);
when(mockedImapSession.getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY))
.thenReturn(mailboxSession);
- when(mockedQuotaRootResolver.createQuotaRoot("quotaRoot"))
- .thenReturn(QUOTA_ROOT);
when(mockedQuotaRootResolver.retrieveAssociatedMailboxes(QUOTA_ROOT, mailboxSession))
.thenReturn(ImmutableList.of(MAILBOX_PATH));
when(mockedMailboxManager.hasRight(MAILBOX_PATH, MailboxACL.Right.Read, mailboxSession))
@@ -116,13 +114,11 @@ public class GetQuotaProcessorTest {
@Test
public void processorShouldWorkOnExceptionThrown() throws Exception {
- GetQuotaRequest getQuotaRequest = new GetQuotaRequest("A004", ImapCommand.anyStateCommand("Name"), "quotaRoot");
+ GetQuotaRequest getQuotaRequest = new GetQuotaRequest("A004", ImapCommand.anyStateCommand("Name"), QUOTA_ROOT.getValue());
when(mockedImapSession.getState()).thenReturn(ImapSessionState.AUTHENTICATED);
when(mockedImapSession.getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY))
.thenReturn(mailboxSession);
- when(mockedQuotaRootResolver.createQuotaRoot("quotaRoot"))
- .thenReturn(QUOTA_ROOT);
when(mockedQuotaRootResolver.retrieveAssociatedMailboxes(QUOTA_ROOT, mailboxSession))
.thenReturn(ImmutableList.of(MAILBOX_PATH));
when(mockedMailboxManager.hasRight(MAILBOX_PATH, MailboxACL.Right.Read, mailboxSession))
@@ -143,13 +139,11 @@ public class GetQuotaProcessorTest {
@Test
public void processorShouldWorkOnNoRights() throws Exception {
- GetQuotaRequest getQuotaRequest = new GetQuotaRequest("A004", ImapCommand.anyStateCommand("Name"), "quotaRoot");
+ GetQuotaRequest getQuotaRequest = new GetQuotaRequest("A004", ImapCommand.anyStateCommand("Name"), QUOTA_ROOT.getValue());
when(mockedImapSession.getState()).thenReturn(ImapSessionState.AUTHENTICATED);
when(mockedImapSession.getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY))
.thenReturn(mailboxSession);
- when(mockedQuotaRootResolver.createQuotaRoot("quotaRoot"))
- .thenReturn(QUOTA_ROOT);
when(mockedQuotaRootResolver.retrieveAssociatedMailboxes(QUOTA_ROOT, mailboxSession))
.thenReturn(ImmutableList.of(MAILBOX_PATH));
when(mockedMailboxManager.hasRight(MAILBOX_PATH, MailboxACL.Right.Read, mailboxSession))
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraQuotaModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraQuotaModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraQuotaModule.java
index 75d49a3..23aa2ec 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraQuotaModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraQuotaModule.java
@@ -26,7 +26,8 @@ import org.apache.james.mailbox.quota.CurrentQuotaManager;
import org.apache.james.mailbox.quota.MaxQuotaManager;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.quota.QuotaRootResolver;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.quota.UserQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager;
import org.apache.james.mailbox.store.quota.StoreQuotaManager;
@@ -38,12 +39,13 @@ public class CassandraQuotaModule extends AbstractModule {
@Override
protected void configure() {
- bind(DefaultQuotaRootResolver.class).in(Scopes.SINGLETON);
+ bind(DefaultUserQuotaRootResolver.class).in(Scopes.SINGLETON);
bind(CassandraPerUserMaxQuotaManager.class).in(Scopes.SINGLETON);
bind(StoreQuotaManager.class).in(Scopes.SINGLETON);
bind(CassandraCurrentQuotaManager.class).in(Scopes.SINGLETON);
- bind(QuotaRootResolver.class).to(DefaultQuotaRootResolver.class);
+ bind(QuotaRootResolver.class).to(DefaultUserQuotaRootResolver.class);
+ bind(UserQuotaRootResolver.class).to(DefaultUserQuotaRootResolver.class);
bind(MaxQuotaManager.class).to(CassandraPerUserMaxQuotaManager.class);
bind(QuotaManager.class).to(StoreQuotaManager.class);
bind(CurrentQuotaManager.class).to(CassandraCurrentQuotaManager.class);
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JpaQuotaModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JpaQuotaModule.java b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JpaQuotaModule.java
index f85cec7..6cd825c 100644
--- a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JpaQuotaModule.java
+++ b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JpaQuotaModule.java
@@ -25,7 +25,8 @@ import org.apache.james.mailbox.quota.CurrentQuotaManager;
import org.apache.james.mailbox.quota.MaxQuotaManager;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.quota.QuotaRootResolver;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.quota.UserQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager;
import org.apache.james.mailbox.store.quota.StoreQuotaManager;
@@ -36,12 +37,13 @@ public class JpaQuotaModule extends AbstractModule {
@Override
protected void configure() {
- bind(DefaultQuotaRootResolver.class).in(Scopes.SINGLETON);
+ bind(DefaultUserQuotaRootResolver.class).in(Scopes.SINGLETON);
bind(JPAPerUserMaxQuotaManager.class).in(Scopes.SINGLETON);
bind(StoreQuotaManager.class).in(Scopes.SINGLETON);
bind(JpaCurrentQuotaManager.class).in(Scopes.SINGLETON);
- bind(QuotaRootResolver.class).to(DefaultQuotaRootResolver.class);
+ bind(UserQuotaRootResolver.class).to(DefaultUserQuotaRootResolver.class);
+ bind(QuotaRootResolver.class).to(DefaultUserQuotaRootResolver.class);
bind(MaxQuotaManager.class).to(JPAPerUserMaxQuotaManager.class);
bind(QuotaManager.class).to(StoreQuotaManager.class);
bind(CurrentQuotaManager.class).to(JpaCurrentQuotaManager.class);
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/server/container/guice/mailbox/src/main/java/org/apache/james/modules/QuotaProbesImpl.java
----------------------------------------------------------------------
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 4f7dad5..b384573 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,6 +23,7 @@ import javax.inject.Inject;
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.MaxQuotaManager;
import org.apache.james.mailbox.quota.QuotaCount;
import org.apache.james.mailbox.quota.QuotaManager;
@@ -55,22 +56,22 @@ public class QuotaProbesImpl implements QuotaProbe, GuiceProbe {
@Override
public SerializableQuota<QuotaCount> getMessageCountQuota(String quotaRoot) throws MailboxException {
- return SerializableQuota.newInstance(quotaManager.getMessageQuota(quotaRootResolver.createQuotaRoot(quotaRoot)));
+ return SerializableQuota.newInstance(quotaManager.getMessageQuota(QuotaRoot.quotaRoot(quotaRoot)));
}
@Override
public SerializableQuota<QuotaSize> getStorageQuota(String quotaRoot) throws MailboxException {
- return SerializableQuota.newInstance(quotaManager.getStorageQuota(quotaRootResolver.createQuotaRoot(quotaRoot)));
+ return SerializableQuota.newInstance(quotaManager.getStorageQuota(QuotaRoot.quotaRoot(quotaRoot)));
}
@Override
public SerializableQuotaValue<QuotaCount> getMaxMessageCount(String quotaRoot) throws MailboxException {
- return SerializableQuotaValue.valueOf(maxQuotaManager.getMaxMessage(quotaRootResolver.createQuotaRoot(quotaRoot)));
+ return SerializableQuotaValue.valueOf(maxQuotaManager.getMaxMessage(QuotaRoot.quotaRoot(quotaRoot)));
}
@Override
public SerializableQuotaValue<QuotaSize> getMaxStorage(String quotaRoot) throws MailboxException {
- return SerializableQuotaValue.valueOf(maxQuotaManager.getMaxStorage(quotaRootResolver.createQuotaRoot(quotaRoot)));
+ return SerializableQuotaValue.valueOf(maxQuotaManager.getMaxStorage(QuotaRoot.quotaRoot(quotaRoot)));
}
@Override
@@ -88,7 +89,7 @@ public class QuotaProbesImpl implements QuotaProbe, GuiceProbe {
maxMessageCount.toValue(QuotaCount::count, QuotaCount.unlimited())
.ifPresent(
Throwing.consumer(
- (QuotaCount value) -> maxQuotaManager.setMaxMessage(quotaRootResolver.createQuotaRoot(quotaRoot), value))
+ (QuotaCount value) -> maxQuotaManager.setMaxMessage(QuotaRoot.quotaRoot(quotaRoot), value))
.sneakyThrow());
}
@@ -97,7 +98,7 @@ public class QuotaProbesImpl implements QuotaProbe, GuiceProbe {
maxSize.toValue(QuotaSize::size, QuotaSize.unlimited())
.ifPresent(
Throwing.consumer(
- (QuotaSize value) -> maxQuotaManager.setMaxStorage(quotaRootResolver.createQuotaRoot(quotaRoot), value))
+ (QuotaSize value) -> maxQuotaManager.setMaxStorage(QuotaRoot.quotaRoot(quotaRoot), value))
.sneakyThrow());
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultQuotaModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultQuotaModule.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultQuotaModule.java
index 41be7ea..f746791 100644
--- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultQuotaModule.java
+++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultQuotaModule.java
@@ -22,7 +22,8 @@ package org.apache.james.modules.mailbox;
import org.apache.james.mailbox.quota.MaxQuotaManager;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.quota.QuotaRootResolver;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.quota.UserQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.NoMaxQuotaManager;
import org.apache.james.mailbox.store.quota.NoQuotaManager;
@@ -34,12 +35,13 @@ public class DefaultQuotaModule extends AbstractModule {
@Override
protected void configure() {
bind(NoQuotaManager.class).in(Scopes.SINGLETON);
- bind(DefaultQuotaRootResolver.class).in(Scopes.SINGLETON);
+ bind(DefaultUserQuotaRootResolver.class).in(Scopes.SINGLETON);
bind(NoMaxQuotaManager.class).in(Scopes.SINGLETON);
bind(MaxQuotaManager.class).to(NoMaxQuotaManager.class);
bind(QuotaManager.class).to(NoQuotaManager.class);
- bind(QuotaRootResolver.class).to(DefaultQuotaRootResolver.class);
+ bind(QuotaRootResolver.class).to(DefaultUserQuotaRootResolver.class);
+ bind(UserQuotaRootResolver.class).to(DefaultUserQuotaRootResolver.class);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryQuotaModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryQuotaModule.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryQuotaModule.java
index b180b27..bf2e1f0 100644
--- a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryQuotaModule.java
+++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryQuotaModule.java
@@ -25,7 +25,8 @@ import org.apache.james.mailbox.quota.CurrentQuotaManager;
import org.apache.james.mailbox.quota.MaxQuotaManager;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.quota.QuotaRootResolver;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.quota.UserQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager;
import org.apache.james.mailbox.store.quota.StoreQuotaManager;
@@ -36,12 +37,13 @@ public class MemoryQuotaModule extends AbstractModule {
@Override
protected void configure() {
- bind(DefaultQuotaRootResolver.class).in(Scopes.SINGLETON);
+ bind(DefaultUserQuotaRootResolver.class).in(Scopes.SINGLETON);
bind(InMemoryPerUserMaxQuotaManager.class).in(Scopes.SINGLETON);
bind(StoreQuotaManager.class).in(Scopes.SINGLETON);
bind(InMemoryCurrentQuotaManager.class).in(Scopes.SINGLETON);
- bind(QuotaRootResolver.class).to(DefaultQuotaRootResolver.class);
+ bind(UserQuotaRootResolver.class).to(DefaultUserQuotaRootResolver.class);
+ bind(QuotaRootResolver.class).to(DefaultUserQuotaRootResolver.class);
bind(MaxQuotaManager.class).to(InMemoryPerUserMaxQuotaManager.class);
bind(QuotaManager.class).to(StoreQuotaManager.class);
bind(CurrentQuotaManager.class).to(InMemoryCurrentQuotaManager.class);
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/QuotaManagement.java
----------------------------------------------------------------------
diff --git a/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/QuotaManagement.java b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/QuotaManagement.java
index 562b4b2..ebf28d3 100644
--- a/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/QuotaManagement.java
+++ b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/QuotaManagement.java
@@ -26,6 +26,7 @@ import javax.inject.Inject;
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.MaxQuotaManager;
import org.apache.james.mailbox.quota.QuotaCount;
import org.apache.james.mailbox.quota.QuotaManager;
@@ -71,7 +72,7 @@ public class QuotaManagement implements QuotaManagementMBean {
.addContext(MDCBuilder.PROTOCOL, "CLI")
.addContext(MDCBuilder.ACTION, "getMaxMessageCount")
.build()) {
- return SerializableQuotaValue.valueOf(maxQuotaManager.getMaxMessage(quotaRootResolver.createQuotaRoot(quotaRoot)));
+ return SerializableQuotaValue.valueOf(maxQuotaManager.getMaxMessage(QuotaRoot.quotaRoot(quotaRoot)));
} catch (IOException e) {
throw Throwables.propagate(e);
}
@@ -84,7 +85,7 @@ public class QuotaManagement implements QuotaManagementMBean {
.addContext(MDCBuilder.PROTOCOL, "CLI")
.addContext(MDCBuilder.ACTION, "getMaxStorage")
.build()) {
- return SerializableQuotaValue.valueOf(maxQuotaManager.getMaxStorage(quotaRootResolver.createQuotaRoot(quotaRoot)));
+ return SerializableQuotaValue.valueOf(maxQuotaManager.getMaxStorage(QuotaRoot.quotaRoot(quotaRoot)));
} catch (IOException e) {
throw Throwables.propagate(e);
}
@@ -126,7 +127,7 @@ public class QuotaManagement implements QuotaManagementMBean {
maxMessageCount.toValue(QuotaCount::count, QuotaCount.unlimited())
.ifPresent(
Throwing.consumer((QuotaCount value) ->
- maxQuotaManager.setMaxMessage(quotaRootResolver.createQuotaRoot(quotaRoot), value))
+ maxQuotaManager.setMaxMessage(QuotaRoot.quotaRoot(quotaRoot), value))
.sneakyThrow());
} catch (IOException e) {
throw Throwables.propagate(e);
@@ -143,7 +144,7 @@ public class QuotaManagement implements QuotaManagementMBean {
maxSize.toValue(QuotaSize::size, QuotaSize.unlimited())
.ifPresent(
Throwing.consumer((QuotaSize value) ->
- maxQuotaManager.setMaxStorage(quotaRootResolver.createQuotaRoot(quotaRoot), value))
+ maxQuotaManager.setMaxStorage(QuotaRoot.quotaRoot(quotaRoot), value))
.sneakyThrow());
} catch (IOException e) {
throw Throwables.propagate(e);
@@ -187,7 +188,7 @@ public class QuotaManagement implements QuotaManagementMBean {
.addContext(MDCBuilder.PROTOCOL, "CLI")
.addContext(MDCBuilder.ACTION, "getMessageCountQuota")
.build()) {
- return SerializableQuota.newInstance(quotaManager.getMessageQuota(quotaRootResolver.createQuotaRoot(quotaRoot)));
+ return SerializableQuota.newInstance(quotaManager.getMessageQuota(QuotaRoot.quotaRoot(quotaRoot)));
} catch (IOException e) {
throw Throwables.propagate(e);
}
@@ -200,7 +201,7 @@ public class QuotaManagement implements QuotaManagementMBean {
.addContext(MDCBuilder.PROTOCOL, "CLI")
.addContext(MDCBuilder.ACTION, "getStorageQuota")
.build()) {
- return SerializableQuota.newInstance(quotaManager.getStorageQuota(quotaRootResolver.createQuotaRoot(quotaRoot)));
+ return SerializableQuota.newInstance(quotaManager.getStorageQuota(QuotaRoot.quotaRoot(quotaRoot)));
} catch (IOException e) {
throw Throwables.propagate(e);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/server/container/spring/src/main/java/org/apache/james/container/spring/mailbox/MaxQuotaConfigurationReader.java
----------------------------------------------------------------------
diff --git a/server/container/spring/src/main/java/org/apache/james/container/spring/mailbox/MaxQuotaConfigurationReader.java b/server/container/spring/src/main/java/org/apache/james/container/spring/mailbox/MaxQuotaConfigurationReader.java
index b5ab1d6..229d65a 100644
--- a/server/container/spring/src/main/java/org/apache/james/container/spring/mailbox/MaxQuotaConfigurationReader.java
+++ b/server/container/spring/src/main/java/org/apache/james/container/spring/mailbox/MaxQuotaConfigurationReader.java
@@ -27,19 +27,17 @@ import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.james.lifecycle.api.Configurable;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.quota.MaxQuotaManager;
import org.apache.james.mailbox.quota.QuotaCount;
-import org.apache.james.mailbox.quota.QuotaRootResolver;
import org.apache.james.mailbox.quota.QuotaSize;
public class MaxQuotaConfigurationReader implements Configurable {
private final MaxQuotaManager maxQuotaManager;
- private final QuotaRootResolver quotaRootResolver;
- public MaxQuotaConfigurationReader(MaxQuotaManager maxQuotaManager, QuotaRootResolver quotaRootResolver) {
+ public MaxQuotaConfigurationReader(MaxQuotaManager maxQuotaManager) {
this.maxQuotaManager = maxQuotaManager;
- this.quotaRootResolver = quotaRootResolver;
}
@Override
@@ -76,10 +74,10 @@ public class MaxQuotaConfigurationReader implements Configurable {
private void configureQuotaRootSpecificValues(Map<String, Long> maxMessage, Map<String, Long> maxStorage) throws MailboxException {
for (Map.Entry<String, Long> entry : maxMessage.entrySet()) {
- maxQuotaManager.setMaxMessage(quotaRootResolver.createQuotaRoot(entry.getKey()), QuotaCount.count(entry.getValue()));
+ maxQuotaManager.setMaxMessage(QuotaRoot.quotaRoot(entry.getKey()), QuotaCount.count(entry.getValue()));
}
for (Map.Entry<String, Long> entry : maxStorage.entrySet()) {
- maxQuotaManager.setMaxStorage(quotaRootResolver.createQuotaRoot(entry.getKey()), QuotaSize.size(entry.getValue()));
+ maxQuotaManager.setMaxStorage(QuotaRoot.quotaRoot(entry.getKey()), QuotaSize.size(entry.getValue()));
}
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml
----------------------------------------------------------------------
diff --git a/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml b/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml
index f98eae7..6e66c29 100644
--- a/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml
+++ b/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml
@@ -145,7 +145,6 @@
<bean id="quota" class="org.apache.james.container.spring.mailbox.MaxQuotaConfigurationReader">
<constructor-arg index="0" ref="maxQuotaManager"/>
- <constructor-arg index="1" ref="quotaRootResolver"/>
</bean>
<!-- Event system -->
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java
index bc64c64..ae80229 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java
@@ -36,7 +36,7 @@ import org.apache.james.mailbox.quota.QuotaCount;
import org.apache.james.mailbox.quota.QuotaSize;
import org.apache.james.mailbox.store.StoreMailboxManager;
import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator;
-import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.StoreQuotaManager;
import org.apache.james.user.api.UsersRepository;
import org.apache.mailet.base.MailAddressFixture;
@@ -48,7 +48,7 @@ import org.junit.Test;
public class IsOverQuotaTest {
private IsOverQuota testee;
private InMemoryPerUserMaxQuotaManager maxQuotaManager;
- private DefaultQuotaRootResolver quotaRootResolver;
+ private DefaultUserQuotaRootResolver quotaRootResolver;
private StoreMailboxManager mailboxManager;
private UsersRepository usersRepository;
@@ -56,7 +56,7 @@ public class IsOverQuotaTest {
public void setUp() throws Exception {
mailboxManager = new InMemoryIntegrationResources().createMailboxManager(new SimpleGroupMembershipResolver());
- quotaRootResolver = new DefaultQuotaRootResolver(mailboxManager.getMapperFactory());
+ quotaRootResolver = new DefaultUserQuotaRootResolver(mailboxManager.getMapperFactory());
maxQuotaManager = new InMemoryPerUserMaxQuotaManager();
CurrentQuotaCalculator quotaCalculator = new CurrentQuotaCalculator(mailboxManager.getMapperFactory(), quotaRootResolver);
InMemoryCurrentQuotaManager currentQuotaManager = new InMemoryCurrentQuotaManager(quotaCalculator, mailboxManager);
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
index f0cfda7..54cc98b 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
@@ -48,9 +48,9 @@ import org.apache.james.GuiceJamesServer;
import org.apache.james.jmap.HttpJmapAuthentication;
import org.apache.james.jmap.api.access.AccessToken;
import org.apache.james.jmap.model.mailbox.MailboxNamespace;
+import org.apache.james.mailbox.DefaultMailboxes;
import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
import org.apache.james.mailbox.model.MailboxACL.Right;
-import org.apache.james.mailbox.DefaultMailboxes;
import org.apache.james.mailbox.model.MailboxConstants;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/UserQuotaRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/UserQuotaRoutes.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/UserQuotaRoutes.java
index 2196fc4..a5fff50 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/UserQuotaRoutes.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/UserQuotaRoutes.java
@@ -30,6 +30,7 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
+import org.apache.james.core.User;
import org.apache.james.mailbox.quota.QuotaCount;
import org.apache.james.mailbox.quota.QuotaSize;
import org.apache.james.user.api.UsersRepository;
@@ -108,7 +109,7 @@ public class UserQuotaRoutes implements Routes {
})
public void defineUpdateQuota() {
service.put(QUOTA_ENDPOINT, ((request, response) -> {
- String user = checkUserExist(request);
+ User user = checkUserExist(request);
QuotaDTO quotaDTO = parseQuotaDTO(request);
userQuotaService.defineQuota(user, quotaDTO);
response.status(HttpStatus.NO_CONTENT_204);
@@ -127,7 +128,7 @@ public class UserQuotaRoutes implements Routes {
})
public void defineGetQuota() {
service.get(QUOTA_ENDPOINT, (request, response) -> {
- String user = checkUserExist(request);
+ User user = checkUserExist(request);
return userQuotaService.getQuota(user);
}, jsonTransformer);
}
@@ -141,7 +142,7 @@ public class UserQuotaRoutes implements Routes {
})
public void defineDeleteQuotaSize() {
service.delete(SIZE_ENDPOINT, (request, response) -> {
- String user = checkUserExist(request);
+ User user = checkUserExist(request);
userQuotaService.deleteMaxSizeQuota(user);
response.status(HttpStatus.NO_CONTENT_204);
return response;
@@ -162,7 +163,7 @@ public class UserQuotaRoutes implements Routes {
})
public void defineUpdateQuotaSize() {
service.put(SIZE_ENDPOINT, (request, response) -> {
- String user = checkUserExist(request);
+ User user = checkUserExist(request);
QuotaSize quotaSize = Quotas.quotaSize(request.body());
userQuotaService.defineMaxSizeQuota(user, quotaSize);
response.status(HttpStatus.NO_CONTENT_204);
@@ -180,7 +181,7 @@ public class UserQuotaRoutes implements Routes {
})
public void defineGetQuotaSize() {
service.get(SIZE_ENDPOINT, (request, response) -> {
- String user = checkUserExist(request);
+ User user = checkUserExist(request);
Optional<QuotaSize> maxSizeQuota = userQuotaService.getMaxSizeQuota(user);
if (maxSizeQuota.isPresent()) {
return maxSizeQuota;
@@ -199,7 +200,7 @@ public class UserQuotaRoutes implements Routes {
})
public void defineDeleteQuotaCount() {
service.delete(COUNT_ENDPOINT, (request, response) -> {
- String user = checkUserExist(request);
+ User user = checkUserExist(request);
userQuotaService.deleteMaxCountQuota(user);
response.status(HttpStatus.NO_CONTENT_204);
return response;
@@ -220,7 +221,7 @@ public class UserQuotaRoutes implements Routes {
})
public void defineUpdateQuotaCount() {
service.put(COUNT_ENDPOINT, (request, response) -> {
- String user = checkUserExist(request);
+ User user = checkUserExist(request);
QuotaCount quotaCount = Quotas.quotaCount(request.body());
userQuotaService.defineMaxCountQuota(user, quotaCount);
response.status(HttpStatus.NO_CONTENT_204);
@@ -237,7 +238,7 @@ public class UserQuotaRoutes implements Routes {
})
public void defineGetQuotaCount() {
service.get(COUNT_ENDPOINT, (request, response) -> {
- String user = checkUserExist(request);
+ User user = checkUserExist(request);
Optional<QuotaCount> maxCountQuota = userQuotaService.getMaxCountQuota(user);
if (maxCountQuota.isPresent()) {
return maxCountQuota;
@@ -247,7 +248,7 @@ public class UserQuotaRoutes implements Routes {
}, jsonTransformer);
}
- private String checkUserExist(Request request) throws UsersRepositoryException {
+ private User checkUserExist(Request request) throws UsersRepositoryException {
String user = request.params(USER);
if (!usersRepository.contains(user)) {
throw ErrorResponder.builder()
@@ -256,7 +257,7 @@ public class UserQuotaRoutes implements Routes {
.message("User not found")
.haltError();
}
- return user;
+ return User.fromUsername(user);
}
private QuotaDTO parseQuotaDTO(Request request) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/95c2367e/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserQuotaService.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserQuotaService.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserQuotaService.java
index 3b50cc4..1b79e42 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserQuotaService.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserQuotaService.java
@@ -22,11 +22,13 @@ import java.util.Optional;
import javax.inject.Inject;
+import org.apache.james.core.User;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.quota.MaxQuotaManager;
import org.apache.james.mailbox.quota.QuotaCount;
import org.apache.james.mailbox.quota.QuotaSize;
+import org.apache.james.mailbox.quota.UserQuotaRootResolver;
import org.apache.james.webadmin.dto.QuotaDTO;
import com.github.fge.lambdas.Throwing;
@@ -34,22 +36,24 @@ import com.github.fge.lambdas.Throwing;
public class UserQuotaService {
private final MaxQuotaManager maxQuotaManager;
+ private final UserQuotaRootResolver userQuotaRootResolver;
@Inject
- public UserQuotaService(MaxQuotaManager maxQuotaManager) {
+ public UserQuotaService(MaxQuotaManager maxQuotaManager, UserQuotaRootResolver userQuotaRootResolver) {
this.maxQuotaManager = maxQuotaManager;
+ this.userQuotaRootResolver = userQuotaRootResolver;
}
- public void defineQuota(String user, QuotaDTO quota) {
- QuotaRoot quotaRoot = QuotaRoot.forUser(user);
+ public void defineQuota(User user, QuotaDTO quota) {
+ QuotaRoot quotaRoot = userQuotaRootResolver.forUser(user);
quota.getCount()
.ifPresent(Throwing.consumer(count -> maxQuotaManager.setMaxMessage(quotaRoot, count)));
quota.getSize()
.ifPresent(Throwing.consumer(size -> maxQuotaManager.setMaxStorage(quotaRoot, size)));
}
- public QuotaDTO getQuota(String user) throws MailboxException {
- QuotaRoot quotaRoot = QuotaRoot.forUser(user);
+ public QuotaDTO getQuota(User user) throws MailboxException {
+ QuotaRoot quotaRoot = userQuotaRootResolver.forUser(user);
return QuotaDTO
.builder()
.count(maxQuotaManager.getMaxMessage(quotaRoot))
@@ -57,27 +61,27 @@ public class UserQuotaService {
.build();
}
- public Optional<QuotaSize> getMaxSizeQuota(String user) throws MailboxException {
- return maxQuotaManager.getMaxStorage(QuotaRoot.forUser(user));
+ public Optional<QuotaSize> getMaxSizeQuota(User user) throws MailboxException {
+ return maxQuotaManager.getMaxStorage(userQuotaRootResolver.forUser(user));
}
- public void defineMaxSizeQuota(String user, QuotaSize quotaSize) throws MailboxException {
- maxQuotaManager.setMaxStorage(QuotaRoot.forUser(user), quotaSize);
+ public void defineMaxSizeQuota(User user, QuotaSize quotaSize) throws MailboxException {
+ maxQuotaManager.setMaxStorage(userQuotaRootResolver.forUser(user), quotaSize);
}
- public void deleteMaxSizeQuota(String user) throws MailboxException {
- maxQuotaManager.removeMaxStorage(QuotaRoot.forUser(user));
+ public void deleteMaxSizeQuota(User user) throws MailboxException {
+ maxQuotaManager.removeMaxStorage(userQuotaRootResolver.forUser(user));
}
- public Optional<QuotaCount> getMaxCountQuota(String user) throws MailboxException {
- return maxQuotaManager.getMaxMessage(QuotaRoot.forUser(user));
+ public Optional<QuotaCount> getMaxCountQuota(User user) throws MailboxException {
+ return maxQuotaManager.getMaxMessage(userQuotaRootResolver.forUser(user));
}
- public void defineMaxCountQuota(String user, QuotaCount quotaCount) throws MailboxException {
- maxQuotaManager.setMaxMessage(QuotaRoot.forUser(user), quotaCount);
+ public void defineMaxCountQuota(User user, QuotaCount quotaCount) throws MailboxException {
+ maxQuotaManager.setMaxMessage(userQuotaRootResolver.forUser(user), quotaCount);
}
- public void deleteMaxCountQuota(String user) throws MailboxException {
- maxQuotaManager.removeMaxMessage(QuotaRoot.forUser(user));
+ public void deleteMaxCountQuota(User user) throws MailboxException {
+ maxQuotaManager.removeMaxMessage(userQuotaRootResolver.forUser(user));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org