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 bt...@apache.org on 2019/01/15 03:21:44 UTC
[09/30] james-project git commit: JAMES-2641
DefaultUserQuotaRootResolver should rely on SessionProvider
JAMES-2641 DefaultUserQuotaRootResolver should rely on SessionProvider
This allow uncoupling it from the mailbox manager and breaks a dependency loop that prevented final allocation
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c4be7f66
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c4be7f66
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c4be7f66
Branch: refs/heads/master
Commit: c4be7f66525b154e480040810da5b94343e25fb6
Parents: 90af614
Author: Benoit Tellier <bt...@linagora.com>
Authored: Tue Jan 8 12:09:08 2019 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Tue Jan 15 10:10:04 2019 +0700
----------------------------------------------------------------------
.../cassandra/CassandraMailboxManagerProvider.java | 2 +-
.../mailbox/cassandra/CassandraTestSystemFixture.java | 2 +-
.../inmemory/manager/InMemoryIntegrationResources.java | 2 +-
.../manager/InMemoryMessageIdManagerSideEffectTest.java | 2 +-
.../apache/james/mailbox/store/StoreMailboxManager.java | 6 +++++-
.../mailbox/store/quota/DefaultUserQuotaRootResolver.java | 10 +++++-----
.../store/quota/DefaultUserQuotaRootResolverTest.java | 5 ++---
.../imapmailbox/cassandra/host/CassandraHostSystem.java | 2 +-
.../elasticsearch/host/ElasticSearchHostSystem.java | 2 +-
.../james/mpt/imapmailbox/jpa/host/JPAHostSystem.java | 2 +-
.../lucenesearch/host/LuceneSearchHostSystem.java | 2 +-
.../mpt/imapmailbox/maildir/host/MaildirHostSystem.java | 2 +-
.../apache/james/transport/matchers/IsOverQuotaTest.java | 2 +-
13 files changed, 22 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4be7f66/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
index c6e8cbb..38c5ca4 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
@@ -80,7 +80,7 @@ public class CassandraMailboxManagerProvider {
new CassandraGlobalMaxQuotaDao(session));
CassandraCurrentQuotaManager currentQuotaUpdater = new CassandraCurrentQuotaManager(session);
StoreQuotaManager storeQuotaManager = new StoreQuotaManager(currentQuotaUpdater, maxQuotaManager);
- QuotaRootResolver quotaRootResolver = new DefaultUserQuotaRootResolver(manager, mapperFactory);
+ QuotaRootResolver quotaRootResolver = new DefaultUserQuotaRootResolver(sessionProvider, mapperFactory);
ListeningCurrentQuotaUpdater quotaUpdater = new ListeningCurrentQuotaUpdater(currentQuotaUpdater, quotaRootResolver, delegatingMailboxListener, storeQuotaManager);
manager.setQuotaManager(storeQuotaManager);
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4be7f66/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 4cc4470..b5657ae 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
@@ -82,7 +82,7 @@ public class CassandraTestSystemFixture {
delegatingMailboxListener,
new CassandraMessageId.Factory(),
quotaManager,
- new DefaultUserQuotaRootResolver(mailboxManager, mapperFactory));
+ new DefaultUserQuotaRootResolver(mailboxManager.getSessionProvider(), mapperFactory));
}
public static MaxQuotaManager createMaxQuotaManager(CassandraCluster cassandra) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4be7f66/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 3df7a75..d736813 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
@@ -249,7 +249,7 @@ public class InMemoryIntegrationResources implements IntegrationResources<StoreM
@Override
public DefaultUserQuotaRootResolver createQuotaRootResolver(StoreMailboxManager mailboxManager) {
if (quotaRootResolver == null) {
- quotaRootResolver = new DefaultUserQuotaRootResolver(mailboxManager, mailboxManager.getMapperFactory());
+ quotaRootResolver = new DefaultUserQuotaRootResolver(mailboxManager.getSessionProvider(), mailboxManager.getMapperFactory());
}
return quotaRootResolver;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4be7f66/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryMessageIdManagerSideEffectTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryMessageIdManagerSideEffectTest.java
index dcddfbd..d95f40b 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryMessageIdManagerSideEffectTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryMessageIdManagerSideEffectTest.java
@@ -75,7 +75,7 @@ public class InMemoryMessageIdManagerSideEffectTest extends AbstractMessageIdMan
delegatingMailboxListener,
messageIdFactory,
quotaManager,
- new DefaultUserQuotaRootResolver(mailboxManager, mapperFactory));
+ new DefaultUserQuotaRootResolver(sessionProvider, mapperFactory));
return new MessageIdManagerTestSystem(messageIdManager, messageIdFactory, mapperFactory, mailboxManager);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4be7f66/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 3106688..4ebb875 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
@@ -156,6 +156,10 @@ public class StoreMailboxManager implements MailboxManager {
this.quotaUpdater = quotaUpdater;
}
+ public SessionProvider getSessionProvider() {
+ return sessionProvider;
+ }
+
/**
* Init the {@link MailboxManager}
*
@@ -174,7 +178,7 @@ public class StoreMailboxManager implements MailboxManager {
quotaManager = new NoQuotaManager();
}
if (quotaRootResolver == null) {
- quotaRootResolver = new DefaultUserQuotaRootResolver(this, mailboxSessionMapperFactory);
+ quotaRootResolver = new DefaultUserQuotaRootResolver(sessionProvider, mailboxSessionMapperFactory);
}
if (quotaUpdater != null && quotaUpdater instanceof MailboxListener) {
this.addGlobalListener((MailboxListener) quotaUpdater, session);
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4be7f66/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
index 3d86e2d..5b53b3c 100644
--- 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
@@ -25,7 +25,6 @@ import java.util.Optional;
import javax.inject.Inject;
import org.apache.james.core.User;
-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.MailboxConstants;
@@ -34,6 +33,7 @@ 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.SessionProvider;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import com.google.common.base.Preconditions;
@@ -44,12 +44,12 @@ 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 MailboxManager mailboxManager;
+ private final SessionProvider sessionProvider;
private final MailboxSessionMapperFactory factory;
@Inject
- public DefaultUserQuotaRootResolver(MailboxManager mailboxManager, MailboxSessionMapperFactory factory) {
- this.mailboxManager = mailboxManager;
+ public DefaultUserQuotaRootResolver(SessionProvider sessionProvider, MailboxSessionMapperFactory factory) {
+ this.sessionProvider = sessionProvider;
this.factory = factory;
}
@@ -73,7 +73,7 @@ public class DefaultUserQuotaRootResolver implements UserQuotaRootResolver {
@Override
public QuotaRoot getQuotaRoot(MailboxId mailboxId) throws MailboxException {
- MailboxSession session = mailboxManager.createSystemSession("DefaultUserQuotaRootResolver");
+ MailboxSession session = sessionProvider.createSystemSession("DefaultUserQuotaRootResolver");
User user = User.fromUsername(
factory.getMailboxMapper(session)
.findMailboxById(mailboxId)
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4be7f66/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolverTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolverTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolverTest.java
index 52ee7b3..649f4d6 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolverTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolverTest.java
@@ -26,7 +26,6 @@ import static org.mockito.Mockito.when;
import java.util.Optional;
-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;
@@ -34,6 +33,7 @@ import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
+import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.junit.Before;
@@ -57,9 +57,8 @@ public class DefaultUserQuotaRootResolverTest {
@Before
public void setUp() {
- MailboxManager mailboxManager = mock(MailboxManager.class);
mockedFactory = mock(MailboxSessionMapperFactory.class);
- testee = new DefaultUserQuotaRootResolver(mailboxManager, mockedFactory);
+ testee = new DefaultUserQuotaRootResolver(mock(SessionProvider.class), mockedFactory);
}
@Test
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4be7f66/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 d789fc0..ed2e5cc 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
@@ -90,10 +90,10 @@ public class CassandraHostSystem extends JamesImapHostSystem {
StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mapperFactory, storeRightManager);
SessionProvider sessionProvider = new SessionProvider(authenticator, authorizator);
+ QuotaRootResolver quotaRootResolver = new DefaultUserQuotaRootResolver(sessionProvider, mapperFactory);
mailboxManager = new CassandraMailboxManager(mapperFactory, sessionProvider,
new JVMMailboxPathLocker(), new MessageParser(), messageIdFactory,
delegatingMailboxListener, annotationManager, storeRightManager, MailboxManagerConfiguration.DEFAULT);
- QuotaRootResolver quotaRootResolver = new DefaultUserQuotaRootResolver(mailboxManager, mapperFactory);
perUserMaxQuotaManager = new CassandraPerUserMaxQuotaManager(
new CassandraPerUserMaxQuotaDao(session),
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4be7f66/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 302a7f7..515d79d 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
@@ -122,7 +122,7 @@ public class ElasticSearchHostSystem extends JamesImapHostSystem {
DefaultImapProcessorFactory.createDefaultProcessor(mailboxManager,
new StoreSubscriptionManager(mailboxManager.getMapperFactory()),
new NoQuotaManager(),
- new DefaultUserQuotaRootResolver(mailboxManager, mailboxManager.getMapperFactory()),
+ new DefaultUserQuotaRootResolver(mailboxManager.getSessionProvider(), mailboxManager.getMapperFactory()),
new DefaultMetricFactory());
configure(new DefaultImapDecoderFactory().buildImapDecoder(),
new DefaultImapEncoderFactory().buildImapEncoder(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4be7f66/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 3f92176..84afd80 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
@@ -103,7 +103,7 @@ public class JPAHostSystem extends JamesImapHostSystem {
mailboxManager = new OpenJPAMailboxManager(mapperFactory, sessionProvider,
messageParser, new DefaultMessageId.Factory(), delegatingListener, annotationManager, storeRightManager);
- DefaultUserQuotaRootResolver quotaRootResolver = new DefaultUserQuotaRootResolver(mailboxManager, mapperFactory);
+ DefaultUserQuotaRootResolver quotaRootResolver = new DefaultUserQuotaRootResolver(mailboxManager.getSessionProvider(), 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/c4be7f66/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 8e15468..ae94e2a 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
@@ -127,7 +127,7 @@ public class LuceneSearchHostSystem extends JamesImapHostSystem {
mailboxManager,
subscriptionManager,
new NoQuotaManager(),
- new DefaultUserQuotaRootResolver(mailboxManager, mapperFactory),
+ new DefaultUserQuotaRootResolver(sessionProvider, mapperFactory),
new DefaultMetricFactory());
configure(new DefaultImapDecoderFactory().buildImapDecoder(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4be7f66/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 83fa1eb..942935c 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
@@ -89,7 +89,7 @@ public class MaildirHostSystem extends JamesImapHostSystem {
mailboxManager,
sm,
new NoQuotaManager(),
- new DefaultUserQuotaRootResolver(mailboxManager, mailboxSessionMapperFactory),
+ new DefaultUserQuotaRootResolver(sessionProvider, mailboxSessionMapperFactory),
new DefaultMetricFactory());
configure(new DefaultImapDecoderFactory().buildImapDecoder(),
new DefaultImapEncoderFactory().buildImapEncoder(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4be7f66/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 b25da39..4f27422 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
@@ -56,7 +56,7 @@ public class IsOverQuotaTest {
public void setUp() throws Exception {
mailboxManager = new InMemoryIntegrationResources().createMailboxManager(new SimpleGroupMembershipResolver());
- quotaRootResolver = new DefaultUserQuotaRootResolver(mailboxManager, mailboxManager.getMapperFactory());
+ quotaRootResolver = new DefaultUserQuotaRootResolver(mailboxManager.getSessionProvider(), mailboxManager.getMapperFactory());
maxQuotaManager = new InMemoryPerUserMaxQuotaManager();
CurrentQuotaCalculator quotaCalculator = new CurrentQuotaCalculator(mailboxManager.getMapperFactory(), quotaRootResolver);
InMemoryCurrentQuotaManager currentQuotaManager = new InMemoryCurrentQuotaManager(quotaCalculator, mailboxManager);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org