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/03/14 02:04:58 UTC
[james-project] 06/07: MAILBOX-379 Factorize PreDeletionHook
execution
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 950616869972fbb9ac86e9fd5a924dd510c01e43
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Mar 7 11:18:38 2019 +0700
MAILBOX-379 Factorize PreDeletionHook execution
Not only does it reduce code duplication but also does it ease MDC context
setting and metric recording.
---
.../mailbox/cassandra/CassandraMailboxManager.java | 5 +-
.../mailbox/cassandra/CassandraMessageManager.java | 5 +-
.../CassandraCombinationManagerTestSystem.java | 6 +-
.../cassandra/CassandraMailboxManagerProvider.java | 6 +-
.../CassandraMailboxManagerStressTest.java | 3 +-
.../cassandra/CassandraMailboxManagerTest.java | 3 +-
.../CassandraMessageIdManagerTestSystem.java | 5 +-
.../cassandra/CassandraTestSystemFixture.java | 5 +-
.../CassandraMailboxManagerAttachmentTest.java | 6 +-
.../ElasticSearchIntegrationTest.java | 6 +-
.../james/mailbox/jpa/JPAMailboxManager.java | 4 +-
.../james/mailbox/jpa/JPAMessageManager.java | 4 +-
.../search/LuceneMessageSearchIndexTest.java | 6 +-
.../resources/META-INF/spring/mailbox-maildir.xml | 2 +-
.../maildir/MaildirMailboxManagerProvider.java | 3 +-
.../mailbox/inmemory/InMemoryMailboxManager.java | 5 +-
.../mailbox/inmemory/InMemoryMessageManager.java | 5 +-
.../resources/META-INF/spring/mailbox-memory.xml | 2 +-
.../mail/InMemoryMailboxManagerAttachmentTest.java | 6 +-
.../manager/InMemoryIntegrationResources.java | 5 +-
.../InMemoryMessageIdManagerSideEffectTest.java | 5 +-
.../store/search/SimpleMessageSearchIndexTest.java | 4 +-
.../resources/META-INF/spring/spring-mailbox.xml | 4 +
.../james/mailbox/store/PreDeletionHooks.java} | 50 ++++---
.../james/mailbox/store/StoreMailboxManager.java | 16 +--
.../james/mailbox/store/StoreMessageIdManager.java | 8 +-
.../james/mailbox/store/StoreMessageManager.java | 11 +-
.../james/mailbox/store/PreDeletionHooksTest.java | 156 +++++++++++++++++++++
.../mailbox/store/StoreMailboxManagerTest.java | 3 +-
.../tools/indexer/CassandraReIndexerImplTest.java | 4 +-
.../cassandra/host/CassandraHostSystem.java | 4 +-
.../host/ElasticSearchHostSystem.java | 4 +-
.../lucenesearch/host/LuceneSearchHostSystem.java | 3 +-
.../maildir/host/MaildirHostSystem.java | 3 +-
34 files changed, 262 insertions(+), 105 deletions(-)
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
index e1b4442..9cda458 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
@@ -20,7 +20,6 @@
package org.apache.james.mailbox.cassandra;
import java.util.EnumSet;
-import java.util.Set;
import javax.inject.Inject;
@@ -28,11 +27,11 @@ import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.events.EventBus;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.store.MailboxManagerConfiguration;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMailboxManager;
@@ -67,7 +66,7 @@ public class CassandraMailboxManager extends StoreMailboxManager {
StoreMailboxAnnotationManager annotationManager, StoreRightManager storeRightManager,
QuotaComponents quotaComponents, MessageSearchIndex index,
MailboxManagerConfiguration configuration,
- Set<PreDeletionHook> preDeletionHooks) {
+ PreDeletionHooks preDeletionHooks) {
super(mapperFactory,
sessionProvider,
locker,
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
index 29114a4..45c620a 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
@@ -20,7 +20,6 @@
package org.apache.james.mailbox.cassandra;
import java.util.List;
-import java.util.Set;
import javax.mail.Flags;
@@ -28,12 +27,12 @@ import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.model.MessageAttachment;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.quota.QuotaRootResolver;
import org.apache.james.mailbox.store.BatchSizes;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.StoreMessageManager;
import org.apache.james.mailbox.store.StoreRightManager;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -56,7 +55,7 @@ public class CassandraMessageManager extends StoreMessageManager {
QuotaRootResolver quotaRootResolver, MessageParser messageParser, MessageId.Factory messageIdFactory,
BatchSizes batchSizes,
StoreRightManager storeRightManager,
- Set<PreDeletionHook> preDeletionHooks) {
+ PreDeletionHooks preDeletionHooks) {
super(CassandraMailboxManager.MESSAGE_CAPABILITIES, mapperFactory, index, eventBus, locker, mailbox,
quotaManager, quotaRootResolver, messageParser, messageIdFactory, batchSizes, storeRightManager,
preDeletionHooks);
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
index 31e3c87..d2cf147 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
@@ -26,10 +26,10 @@ import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.store.CombinationManagerTestSystem;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.mail.model.Mailbox;
public class CassandraCombinationManagerTestSystem extends CombinationManagerTestSystem {
@@ -40,7 +40,7 @@ public class CassandraCombinationManagerTestSystem extends CombinationManagerTes
public static CombinationManagerTestSystem createTestingData(CassandraCluster cassandra, QuotaManager quotaManager, EventBus eventBus) {
CassandraMailboxSessionMapperFactory mapperFactory = CassandraTestSystemFixture.createMapperFactory(cassandra);
- return new CassandraCombinationManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, eventBus, PreDeletionHook.NO_PRE_DELETION_HOOK),
+ return new CassandraCombinationManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, eventBus, PreDeletionHooks.NO_PRE_DELETION_HOOK),
mapperFactory,
CassandraTestSystemFixture.createMailboxManager(mapperFactory));
}
@@ -48,7 +48,7 @@ public class CassandraCombinationManagerTestSystem extends CombinationManagerTes
private CassandraCombinationManagerTestSystem(MessageIdManager messageIdManager, CassandraMailboxSessionMapperFactory mapperFactory, MailboxManager cassandraMailboxManager) {
super(cassandraMailboxManager, messageIdManager);
this.mapperFactory = mapperFactory;
- this.cassandraMailboxManager = (CassandraMailboxManager)cassandraMailboxManager;
+ this.cassandraMailboxManager = (CassandraMailboxManager) cassandraMailboxManager;
}
@Override
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 cdfe721..79b703d 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
@@ -19,8 +19,6 @@
package org.apache.james.mailbox.cassandra;
-import java.util.Set;
-
import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
import org.apache.james.mailbox.acl.GroupMembershipResolver;
import org.apache.james.mailbox.acl.MailboxACLResolver;
@@ -34,12 +32,12 @@ import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaDao;
import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManager;
import org.apache.james.mailbox.events.InVMEventBus;
import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.quota.QuotaRootResolver;
import org.apache.james.mailbox.store.Authenticator;
import org.apache.james.mailbox.store.Authorizator;
import org.apache.james.mailbox.store.MailboxManagerConfiguration;
import org.apache.james.mailbox.store.NoMailboxPathLocker;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreRightManager;
@@ -61,7 +59,7 @@ public class CassandraMailboxManagerProvider {
private static final int LIMIT_ANNOTATION_SIZE = 30;
public static CassandraMailboxManager provideMailboxManager(Session session, CassandraTypesProvider cassandraTypesProvider,
- Set<PreDeletionHook> preDeletionHooks) {
+ PreDeletionHooks preDeletionHooks) {
CassandraMessageId.Factory messageIdFactory = new CassandraMessageId.Factory();
CassandraMailboxSessionMapperFactory mapperFactory = TestCassandraMailboxSessionMapperFactory.forTests(
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
index 4569fbd..fefc07a 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
@@ -25,6 +25,7 @@ import org.apache.james.mailbox.MailboxManagerStressTest;
import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.extension.PreDeletionHook;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
@@ -49,7 +50,7 @@ public class CassandraMailboxManagerStressTest extends MailboxManagerStressTest<
@Override
protected CassandraMailboxManager provideManager() {
- return CassandraMailboxManagerProvider.provideMailboxManager(cassandra.getConf(), cassandra.getTypesProvider(), PreDeletionHook.NO_PRE_DELETION_HOOK);
+ return CassandraMailboxManagerProvider.provideMailboxManager(cassandra.getConf(), cassandra.getTypesProvider(), PreDeletionHooks.NO_PRE_DELETION_HOOK);
}
@Override
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
index cb24d0e..bb9e6c9 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
@@ -22,6 +22,7 @@ import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.mailbox.MailboxManagerTest;
import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
import org.apache.james.mailbox.events.EventBus;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.junit.jupiter.api.extension.RegisterExtension;
public class CassandraMailboxManagerTest extends MailboxManagerTest<CassandraMailboxManager> {
@@ -33,7 +34,7 @@ public class CassandraMailboxManagerTest extends MailboxManagerTest<CassandraMai
return CassandraMailboxManagerProvider.provideMailboxManager(
cassandra.getCassandraCluster().getConf(),
cassandra.getCassandraCluster().getTypesProvider(),
- preDeletionHooks());
+ new PreDeletionHooks(preDeletionHooks()));
}
@Override
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
index c0dd20d..9a34f8c 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
@@ -28,6 +28,7 @@ import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.quota.CurrentQuotaManager;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager;
@@ -37,7 +38,7 @@ class CassandraMessageIdManagerTestSystem {
Set<PreDeletionHook> preDeletionHooks) {
CassandraMailboxSessionMapperFactory mapperFactory = CassandraTestSystemFixture.createMapperFactory(cassandra);
- return new MessageIdManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, eventBus, preDeletionHooks),
+ return new MessageIdManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, eventBus, new PreDeletionHooks(preDeletionHooks)),
new CassandraMessageId.Factory(),
mapperFactory,
CassandraTestSystemFixture.createMailboxManager(mapperFactory)) {
@@ -53,7 +54,7 @@ class CassandraMessageIdManagerTestSystem {
mailboxManager.getQuotaComponents().getQuotaRootResolver(), mailboxManager.getEventBus(), quotaManager);
mailboxManager.getEventBus().register(listeningCurrentQuotaUpdater);
return new MessageIdManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, mailboxManager.getEventBus(),
- PreDeletionHook.NO_PRE_DELETION_HOOK),
+ PreDeletionHooks.NO_PRE_DELETION_HOOK),
new CassandraMessageId.Factory(),
mapperFactory,
mailboxManager);
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 aafe425..403d780 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
@@ -43,6 +43,7 @@ import org.apache.james.mailbox.store.Authenticator;
import org.apache.james.mailbox.store.Authorizator;
import org.apache.james.mailbox.store.MailboxManagerConfiguration;
import org.apache.james.mailbox.store.NoMailboxPathLocker;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMessageIdManager;
@@ -78,7 +79,7 @@ class CassandraTestSystemFixture {
MessageSearchIndex index = new SimpleMessageSearchIndex(mapperFactory, mapperFactory, new DefaultTextExtractor());
CassandraMailboxManager cassandraMailboxManager = new CassandraMailboxManager(mapperFactory, sessionProvider,
new NoMailboxPathLocker(), new MessageParser(), new CassandraMessageId.Factory(),
- eventBus, annotationManager, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT, PreDeletionHook.NO_PRE_DELETION_HOOK);
+ eventBus, annotationManager, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT, PreDeletionHooks.NO_PRE_DELETION_HOOK);
eventBus.register(new MailboxAnnotationListener(mapperFactory, sessionProvider));
@@ -86,7 +87,7 @@ class CassandraTestSystemFixture {
}
static StoreMessageIdManager createMessageIdManager(CassandraMailboxSessionMapperFactory mapperFactory, QuotaManager quotaManager, EventBus eventBus,
- Set<PreDeletionHook> preDeletionHooks) {
+ PreDeletionHooks preDeletionHooks) {
CassandraMailboxManager mailboxManager = createMailboxManager(mapperFactory);
return new StoreMessageIdManager(
mailboxManager,
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
index 23c9bb0..8055312 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
@@ -33,13 +33,13 @@ import org.apache.james.mailbox.cassandra.TestCassandraMailboxSessionMapperFacto
import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
import org.apache.james.mailbox.events.InVMEventBus;
import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.store.AbstractMailboxManagerAttachmentTest;
import org.apache.james.mailbox.store.Authenticator;
import org.apache.james.mailbox.store.Authorizator;
import org.apache.james.mailbox.store.MailboxManagerConfiguration;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
import org.apache.james.mailbox.store.NoMailboxPathLocker;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreRightManager;
@@ -105,13 +105,13 @@ public class CassandraMailboxManagerAttachmentTest extends AbstractMailboxManage
mailboxManager = new CassandraMailboxManager(mailboxSessionMapperFactory, sessionProvider, new NoMailboxPathLocker(), new MessageParser(),
messageIdFactory, eventBus, annotationManager, storeRightManager, quotaComponents,
- index, MailboxManagerConfiguration.DEFAULT, PreDeletionHook.NO_PRE_DELETION_HOOK);
+ index, MailboxManagerConfiguration.DEFAULT, PreDeletionHooks.NO_PRE_DELETION_HOOK);
MessageParser failingMessageParser = mock(MessageParser.class);
when(failingMessageParser.retrieveAttachments(any()))
.thenThrow(new RuntimeException("Message parser set to fail"));
parseFailingMailboxManager = new CassandraMailboxManager(mailboxSessionMapperFactory, sessionProvider,
new NoMailboxPathLocker(), failingMessageParser, messageIdFactory,
- eventBus, annotationManager, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT, PreDeletionHook.NO_PRE_DELETION_HOOK);
+ eventBus, annotationManager, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT, PreDeletionHooks.NO_PRE_DELETION_HOOK);
}
@Override
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
index 0d1037a..ac1b448 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
@@ -42,7 +42,6 @@ import org.apache.james.mailbox.elasticsearch.query.QueryConverter;
import org.apache.james.mailbox.elasticsearch.search.ElasticSearchSearcher;
import org.apache.james.mailbox.events.InVMEventBus;
import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
@@ -54,6 +53,7 @@ import org.apache.james.mailbox.model.SearchQuery;
import org.apache.james.mailbox.store.FakeAuthenticator;
import org.apache.james.mailbox.store.FakeAuthorizator;
import org.apache.james.mailbox.store.JVMMailboxPathLocker;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMessageIdManager;
@@ -153,7 +153,7 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest
storeRightManager,
quotaComponents,
elasticSearchListeningMessageSearchIndex,
- PreDeletionHook.NO_PRE_DELETION_HOOK);
+ PreDeletionHooks.NO_PRE_DELETION_HOOK);
messageIdManager = new StoreMessageIdManager(
storeMailboxManager,
@@ -162,7 +162,7 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest
storeMailboxManager.getMessageIdFactory(),
quotaComponents.getQuotaManager(),
quotaComponents.getQuotaRootResolver(),
- PreDeletionHook.NO_PRE_DELETION_HOOK);
+ PreDeletionHooks.NO_PRE_DELETION_HOOK);
eventBus.register(elasticSearchListeningMessageSearchIndex);
this.messageSearchIndex = elasticSearchListeningMessageSearchIndex;
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
index b0240d5..68c7f33 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
@@ -24,12 +24,12 @@ import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.jpa.mail.JPAMailboxMapper;
import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.store.MailboxManagerConfiguration;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMailboxManager;
@@ -63,7 +63,7 @@ public abstract class JPAMailboxManager extends StoreMailboxManager {
super(mailboxSessionMapperFactory, sessionProvider, locker,
messageParser, messageIdFactory, annotationManager,
eventBus, storeRightManager, quotaComponents,
- index, MailboxManagerConfiguration.DEFAULT, PreDeletionHook.NO_PRE_DELETION_HOOK);
+ index, MailboxManagerConfiguration.DEFAULT, PreDeletionHooks.NO_PRE_DELETION_HOOK);
}
@Override
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
index 2ee3e8a..741920f 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
@@ -28,7 +28,6 @@ import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
import org.apache.james.mailbox.jpa.mail.model.openjpa.JPAMailboxMessage;
import org.apache.james.mailbox.model.MessageAttachment;
@@ -37,6 +36,7 @@ import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.quota.QuotaRootResolver;
import org.apache.james.mailbox.store.BatchSizes;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.StoreMessageManager;
import org.apache.james.mailbox.store.StoreRightManager;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -63,7 +63,7 @@ public class JPAMessageManager extends StoreMessageManager {
StoreRightManager storeRightManager) {
super(JPAMailboxManager.DEFAULT_NO_MESSAGE_CAPABILITIES, mapperFactory, index, eventBus, locker, mailbox,
- quotaManager, quotaRootResolver, messageParser, messageIdFactory, batchSizes, storeRightManager, PreDeletionHook.NO_PRE_DELETION_HOOK);
+ quotaManager, quotaRootResolver, messageParser, messageIdFactory, batchSizes, storeRightManager, PreDeletionHooks.NO_PRE_DELETION_HOOK);
}
@Override
diff --git a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
index 955257f..e21b91a 100644
--- a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
+++ b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
@@ -24,7 +24,6 @@ import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
import org.apache.james.mailbox.events.InVMEventBus;
import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
@@ -33,6 +32,7 @@ import org.apache.james.mailbox.manager.ManagerTestResources;
import org.apache.james.mailbox.store.FakeAuthenticator;
import org.apache.james.mailbox.store.FakeAuthorizator;
import org.apache.james.mailbox.store.JVMMailboxPathLocker;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMessageIdManager;
@@ -79,7 +79,7 @@ public class LuceneMessageSearchIndexTest extends AbstractMessageSearchIndexTest
storeRightManager,
quotaComponents,
luceneMessageSearchIndex,
- PreDeletionHook.NO_PRE_DELETION_HOOK);
+ PreDeletionHooks.NO_PRE_DELETION_HOOK);
messageIdManager = new StoreMessageIdManager(
storeMailboxManager,
@@ -88,7 +88,7 @@ public class LuceneMessageSearchIndexTest extends AbstractMessageSearchIndexTest
storeMailboxManager.getMessageIdFactory(),
quotaComponents.getQuotaManager(),
quotaComponents.getQuotaRootResolver(),
- PreDeletionHook.NO_PRE_DELETION_HOOK);
+ PreDeletionHooks.NO_PRE_DELETION_HOOK);
eventBus.register(luceneMessageSearchIndex);
this.messageSearchIndex = luceneMessageSearchIndex;
diff --git a/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml b/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml
index 3c7f7e9..6ebdc31 100644
--- a/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml
+++ b/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml
@@ -46,7 +46,7 @@
<constructor-arg index="8" ref="quotaComponents" />
<constructor-arg index="9" ref="indexer" />
<constructor-arg index="10" ref="no-mailbox-configuration" />
- <constructor-arg index="11"><set/></constructor-arg>
+ <constructor-arg index="11" ref="preDeletionHooks" />
</bean>
<bean id ="no-mailbox-configuration" class="org.apache.james.mailbox.store.MailboxManagerConfiguration.NoMailboxConfiguration"/>
diff --git a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerProvider.java b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerProvider.java
index 4604f53..c63ae42 100644
--- a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerProvider.java
+++ b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerProvider.java
@@ -34,6 +34,7 @@ import org.apache.james.mailbox.store.Authenticator;
import org.apache.james.mailbox.store.Authorizator;
import org.apache.james.mailbox.store.JVMMailboxPathLocker;
import org.apache.james.mailbox.store.MailboxManagerConfiguration;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMailboxManager;
@@ -73,7 +74,7 @@ public class MaildirMailboxManagerProvider {
StoreMailboxManager manager = new StoreMailboxManager(mf, sessionProvider, new JVMMailboxPathLocker(),
messageParser, new DefaultMessageId.Factory(), annotationManager, eventBus, storeRightManager,
- quotaComponents, index, MailboxManagerConfiguration.DEFAULT, PreDeletionHook.NO_PRE_DELETION_HOOK);
+ quotaComponents, index, MailboxManagerConfiguration.DEFAULT, PreDeletionHooks.NO_PRE_DELETION_HOOK);
return manager;
}
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
index 66c261e..59d8228 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
@@ -20,17 +20,16 @@
package org.apache.james.mailbox.inmemory;
import java.util.EnumSet;
-import java.util.Set;
import javax.inject.Inject;
import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.events.EventBus;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.store.MailboxManagerConfiguration;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMailboxManager;
@@ -59,7 +58,7 @@ public class InMemoryMailboxManager extends StoreMailboxManager {
StoreRightManager storeRightManager,
QuotaComponents quotaComponents,
MessageSearchIndex searchIndex,
- Set<PreDeletionHook> preDeletionHooks) {
+ PreDeletionHooks preDeletionHooks) {
super(mailboxSessionMapperFactory, sessionProvider, locker, messageParser, messageIdFactory,
annotationManager, eventBus, storeRightManager, quotaComponents, searchIndex, MailboxManagerConfiguration.DEFAULT,
preDeletionHooks);
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
index 9dcb5ca..8a71fb0 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
@@ -1,7 +1,6 @@
package org.apache.james.mailbox.inmemory;
import java.util.List;
-import java.util.Set;
import javax.mail.Flags;
@@ -9,13 +8,13 @@ import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.model.MessageAttachment;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.quota.QuotaRootResolver;
import org.apache.james.mailbox.store.BatchSizes;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.StoreMessageManager;
import org.apache.james.mailbox.store.StoreRightManager;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -40,7 +39,7 @@ public class InMemoryMessageManager extends StoreMessageManager {
MessageId.Factory messageIdFactory,
BatchSizes batchSizes,
StoreRightManager storeRightManager,
- Set<PreDeletionHook> preDeletionHooks) {
+ PreDeletionHooks preDeletionHooks) {
super(InMemoryMailboxManager.MESSAGE_CAPABILITIES, mapperFactory, index, eventBus, locker, mailbox, quotaManager, quotaRootResolver,
messageParser, messageIdFactory, batchSizes, storeRightManager, preDeletionHooks);
diff --git a/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml b/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml
index 39aeaa6..2d31f25 100644
--- a/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml
+++ b/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml
@@ -42,7 +42,7 @@
<constructor-arg index="7" ref="storeRightManager" />
<constructor-arg index="8" ref="quotaComponents" />
<constructor-arg index="9" ref="indexer" />
- <constructor-arg index="10"><set/></constructor-arg>
+ <constructor-arg index="10" ref="preDeletionHooks" />
</bean>
<bean id ="memory-subscriptionManager" class="org.apache.james.mailbox.store.StoreSubscriptionManager">
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
index ebf76fa..9be0b03 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
@@ -30,7 +30,6 @@ import org.apache.james.mailbox.acl.GroupMembershipResolver;
import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
import org.apache.james.mailbox.events.InVMEventBus;
import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
import org.apache.james.mailbox.inmemory.InMemoryMessageId;
@@ -40,6 +39,7 @@ import org.apache.james.mailbox.store.Authenticator;
import org.apache.james.mailbox.store.Authorizator;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
import org.apache.james.mailbox.store.NoMailboxPathLocker;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreRightManager;
@@ -77,12 +77,12 @@ public class InMemoryMailboxManagerAttachmentTest extends AbstractMailboxManager
StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mailboxSessionMapperFactory, storeRightManager);
mailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, sessionProvider, new NoMailboxPathLocker(),
- new MessageParser(), messageIdFactory, eventBus, annotationManager, storeRightManager, quotaComponents, index, PreDeletionHook.NO_PRE_DELETION_HOOK);
+ new MessageParser(), messageIdFactory, eventBus, annotationManager, storeRightManager, quotaComponents, index, PreDeletionHooks.NO_PRE_DELETION_HOOK);
MessageParser failingMessageParser = mock(MessageParser.class);
when(failingMessageParser.retrieveAttachments(any(InputStream.class)))
.thenThrow(new RuntimeException("Message parser set to fail"));
parseFailingMailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, sessionProvider, new NoMailboxPathLocker(),
- failingMessageParser, messageIdFactory, eventBus, annotationManager, storeRightManager, quotaComponents, index, PreDeletionHook.NO_PRE_DELETION_HOOK);
+ failingMessageParser, messageIdFactory, eventBus, annotationManager, storeRightManager, quotaComponents, index, PreDeletionHooks.NO_PRE_DELETION_HOOK);
super.setUp();
}
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 369fe09..054ad97 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
@@ -45,6 +45,7 @@ import org.apache.james.mailbox.store.Authorizator;
import org.apache.james.mailbox.store.FakeAuthenticator;
import org.apache.james.mailbox.store.FakeAuthorizator;
import org.apache.james.mailbox.store.JVMMailboxPathLocker;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMailboxManager;
@@ -192,7 +193,7 @@ public class InMemoryIntegrationResources implements IntegrationResources<StoreM
storeRightManager,
quotaComponents,
index,
- preDeletionHooks);
+ new PreDeletionHooks(preDeletionHooks));
eventBus.register(listeningCurrentQuotaUpdater);
eventBus.register(new MailboxAnnotationListener(mailboxSessionMapperFactory, sessionProvider));
@@ -227,7 +228,7 @@ public class InMemoryIntegrationResources implements IntegrationResources<StoreM
storeRightManager,
quotaComponents,
index,
- preDeletionHooks);
+ new PreDeletionHooks(preDeletionHooks));
eventBus.register(listeningCurrentQuotaUpdater);
eventBus.register(new MailboxAnnotationListener(mailboxSessionMapperFactory, sessionProvider));
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 0f84e06..2b32d9d 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
@@ -35,6 +35,7 @@ import org.apache.james.mailbox.store.FakeAuthenticator;
import org.apache.james.mailbox.store.FakeAuthorizator;
import org.apache.james.mailbox.store.JVMMailboxPathLocker;
import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMessageIdManager;
@@ -84,7 +85,7 @@ public class InMemoryMessageIdManagerSideEffectTest extends AbstractMessageIdMan
rightManager,
quotaComponents,
index,
- preDeletionHooks);
+ new PreDeletionHooks(preDeletionHooks));
StoreMessageIdManager messageIdManager = new StoreMessageIdManager(
mailboxManager,
mapperFactory,
@@ -92,7 +93,7 @@ public class InMemoryMessageIdManagerSideEffectTest extends AbstractMessageIdMan
messageIdFactory,
quotaManager,
quotaComponents.getQuotaRootResolver(),
- preDeletionHooks);
+ new PreDeletionHooks(preDeletionHooks));
return new MessageIdManagerTestSystem(messageIdManager, messageIdFactory, mapperFactory, mailboxManager);
}
}
diff --git a/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java b/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java
index 8b423d6..021cf82 100644
--- a/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java
+++ b/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java
@@ -21,8 +21,8 @@ package org.apache.james.mailbox.store.search;
import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.StoreMessageIdManager;
import org.junit.Ignore;
@@ -49,7 +49,7 @@ public class SimpleMessageSearchIndexTest extends AbstractMessageSearchIndexTest
storeMailboxManager.getMessageIdFactory(),
storeMailboxManager.getQuotaComponents().getQuotaManager(),
storeMailboxManager.getQuotaComponents().getQuotaRootResolver(),
- PreDeletionHook.NO_PRE_DELETION_HOOK);
+ PreDeletionHooks.NO_PRE_DELETION_HOOK);
}
/**
diff --git a/mailbox/spring/src/main/resources/META-INF/spring/spring-mailbox.xml b/mailbox/spring/src/main/resources/META-INF/spring/spring-mailbox.xml
index e9c5cf7..227edee 100644
--- a/mailbox/spring/src/main/resources/META-INF/spring/spring-mailbox.xml
+++ b/mailbox/spring/src/main/resources/META-INF/spring/spring-mailbox.xml
@@ -80,4 +80,8 @@
<constructor-arg index="5" ref="messageMapperFactory" />
</bean>
+
+ <bean id ="preDeletionHooks" class="org.apache.james.mailbox.store.PreDeletionHooks">
+ <constructor-arg index="0"><set/></constructor-arg>
+ </bean>
</beans>
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/PreDeletionHooks.java
similarity index 54%
copy from mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
copy to mailbox/store/src/main/java/org/apache/james/mailbox/store/PreDeletionHooks.java
index cb24d0e..849079d 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/PreDeletionHooks.java
@@ -16,28 +16,36 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.mailbox.cassandra;
-
-import org.apache.james.backends.cassandra.CassandraClusterExtension;
-import org.apache.james.mailbox.MailboxManagerTest;
-import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
-import org.apache.james.mailbox.events.EventBus;
-import org.junit.jupiter.api.extension.RegisterExtension;
-
-public class CassandraMailboxManagerTest extends MailboxManagerTest<CassandraMailboxManager> {
- @RegisterExtension
- static CassandraClusterExtension cassandra = new CassandraClusterExtension(MailboxAggregateModule.MODULE_WITH_QUOTA);
-
- @Override
- protected CassandraMailboxManager provideMailboxManager() {
- return CassandraMailboxManagerProvider.provideMailboxManager(
- cassandra.getCassandraCluster().getConf(),
- cassandra.getCassandraCluster().getTypesProvider(),
- preDeletionHooks());
+
+package org.apache.james.mailbox.store;
+
+import java.util.Set;
+
+import javax.inject.Inject;
+
+import org.apache.james.mailbox.extension.PreDeletionHook;
+
+import com.google.common.collect.ImmutableSet;
+
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+import reactor.core.scheduler.Schedulers;
+
+public class PreDeletionHooks {
+ public static final PreDeletionHooks NO_PRE_DELETION_HOOK = new PreDeletionHooks(ImmutableSet.of());
+
+ private final Set<PreDeletionHook> hooks;
+
+ @Inject
+ public PreDeletionHooks(Set<PreDeletionHook> hooks) {
+ this.hooks = hooks;
}
- @Override
- protected EventBus retrieveEventBus(CassandraMailboxManager mailboxManager) {
- return mailboxManager.getEventBus();
+ public Mono<Void> runHooks(PreDeletionHook.DeleteOperation deleteOperation) {
+ return Flux.fromIterable(hooks)
+ .publishOn(Schedulers.elastic())
+ .limitRate(1)
+ .flatMap(hook -> hook.notifyDelete(deleteOperation))
+ .then();
}
}
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 a0d795d..16153eb 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
@@ -88,9 +88,6 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
-import reactor.core.publisher.Flux;
-import reactor.core.scheduler.Schedulers;
-
/**
* This base class of an {@link MailboxManager} implementation provides a high-level api for writing your own
* {@link MailboxManager} implementation. If you plan to write your own {@link MailboxManager} its most times so easiest
@@ -117,7 +114,7 @@ public class StoreMailboxManager implements MailboxManager {
private final QuotaRootResolver quotaRootResolver;
private final QuotaComponents quotaComponents;
private final MessageSearchIndex index;
- private final Set<PreDeletionHook> preDeletionHooks;
+ private final PreDeletionHooks preDeletionHooks;
protected final MailboxManagerConfiguration configuration;
@Inject
@@ -126,7 +123,7 @@ public class StoreMailboxManager implements MailboxManager {
MessageId.Factory messageIdFactory, MailboxAnnotationManager annotationManager,
EventBus eventBus, StoreRightManager storeRightManager,
QuotaComponents quotaComponents, MessageSearchIndex searchIndex, MailboxManagerConfiguration configuration,
- Set<PreDeletionHook> preDeletionHooks) {
+ PreDeletionHooks preDeletionHooks) {
Preconditions.checkNotNull(eventBus);
Preconditions.checkNotNull(mailboxSessionMapperFactory);
@@ -212,7 +209,7 @@ public class StoreMailboxManager implements MailboxManager {
return messageParser;
}
- public Set<PreDeletionHook> getPreDeletionHooks() {
+ public PreDeletionHooks getPreDeletionHooks() {
return preDeletionHooks;
}
@@ -409,12 +406,7 @@ public class StoreMailboxManager implements MailboxManager {
.mapToLong(MessageMetaData::getSize)
.sum();
- PreDeletionHook.DeleteOperation deleteOperation = PreDeletionHook.DeleteOperation.from(metadata);
-
- Flux.fromIterable(preDeletionHooks)
- .publishOn(Schedulers.elastic())
- .flatMap(hook -> hook.notifyDelete(deleteOperation))
- .blockLast();
+ preDeletionHooks.runHooks(PreDeletionHook.DeleteOperation.from(metadata)).block();
// We need to create a copy of the mailbox as maybe we can not refer to the real
// mailbox once we remove it
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index 808f8aa..0a07e77 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -97,12 +97,12 @@ public class StoreMessageIdManager implements MessageIdManager {
private final MessageId.Factory messageIdFactory;
private final QuotaManager quotaManager;
private final QuotaRootResolver quotaRootResolver;
- private final Set<PreDeletionHook> preDeletionHooks;
+ private final PreDeletionHooks preDeletionHooks;
@Inject
public StoreMessageIdManager(MailboxManager mailboxManager, MailboxSessionMapperFactory mailboxSessionMapperFactory,
EventBus eventBus, MessageId.Factory messageIdFactory,
- QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, Set<PreDeletionHook> preDeletionHooks) {
+ QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, PreDeletionHooks preDeletionHooks) {
this.mailboxManager = mailboxManager;
this.mailboxSessionMapperFactory = mailboxSessionMapperFactory;
this.eventBus = eventBus;
@@ -204,9 +204,7 @@ public class StoreMessageIdManager implements MessageIdManager {
.map(mailboxMessage -> MetadataWithMailboxId.from(mailboxMessage.metaData(), mailboxMessage.getMailboxId()))
.collect(Guavate.toImmutableList());
- PreDeletionHook.DeleteOperation deleteOperation = PreDeletionHook.DeleteOperation.from(metadataWithMailbox);
- Flux.fromIterable(preDeletionHooks)
- .flatMap(preDeletionHook -> preDeletionHook.notifyDelete(deleteOperation))
+ preDeletionHooks.runHooks(PreDeletionHook.DeleteOperation.from(metadataWithMailbox))
.then(Mono.fromRunnable(Throwing.runnable(
() -> delete(messageIdMapper, messageList, mailboxSession, metadataWithMailbox))))
.block();
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
index f0d6ddd..794ac5f 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
@@ -32,7 +32,6 @@ import java.util.EnumSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
@@ -56,7 +55,6 @@ import org.apache.james.mailbox.events.MailboxListener;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.ReadOnlyException;
import org.apache.james.mailbox.exception.UnsupportedRightException;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.model.ComposedMessageId;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxCounters;
@@ -156,13 +154,13 @@ public class StoreMessageManager implements MessageManager {
private final MessageParser messageParser;
private final Factory messageIdFactory;
private final BatchSizes batchSizes;
- private final Set<PreDeletionHook> preDeletionHooks;
+ private final PreDeletionHooks preDeletionHooks;
public StoreMessageManager(EnumSet<MailboxManager.MessageCapabilities> messageCapabilities, MailboxSessionMapperFactory mapperFactory,
MessageSearchIndex index, EventBus eventBus,
MailboxPathLocker locker, Mailbox mailbox,
QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, MessageParser messageParser, MessageId.Factory messageIdFactory, BatchSizes batchSizes,
- StoreRightManager storeRightManager, Set<PreDeletionHook> preDeletionHooks) {
+ StoreRightManager storeRightManager, PreDeletionHooks preDeletionHooks) {
this.messageCapabilities = messageCapabilities;
this.eventBus = eventBus;
this.mailbox = mailbox;
@@ -743,10 +741,7 @@ public class StoreMessageManager implements MessageManager {
.map(DeleteOperation::from)
.block();
- Flux.fromIterable(preDeletionHooks)
- .publishOn(Schedulers.elastic())
- .flatMap(hook -> hook.notifyDelete(deleteOperation))
- .blockLast();
+ preDeletionHooks.runHooks(deleteOperation).block();
}
@Override
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/PreDeletionHooksTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/PreDeletionHooksTest.java
new file mode 100644
index 0000000..79ab6ca
--- /dev/null
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/PreDeletionHooksTest.java
@@ -0,0 +1,156 @@
+/****************************************************************
+ * 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;
+
+import static org.assertj.core.api.Assertions.assertThatCode;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
+
+import java.time.Duration;
+import java.util.Date;
+import java.util.concurrent.locks.ReentrantLock;
+
+import javax.mail.Flags;
+
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.MetadataWithMailboxId;
+import org.apache.james.mailbox.extension.PreDeletionHook;
+import org.apache.james.mailbox.model.MessageMetaData;
+import org.apache.james.mailbox.model.TestId;
+import org.apache.james.mailbox.model.TestMessageId;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.reactivestreams.Publisher;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+
+import reactor.core.publisher.Mono;
+
+class PreDeletionHooksTest {
+
+ private static final TestId MAILBOX_ID = TestId.of(45);
+ private static final int MOD_SEQ = 18;
+ private static final int SIZE = 12;
+ private static final MessageMetaData MESSAGE_META_DATA = new MessageMetaData(MessageUid.of(1), MOD_SEQ, new Flags(), SIZE, new Date(), TestMessageId.of(42));
+ private static final PreDeletionHook.DeleteOperation DELETE_OPERATION = PreDeletionHook.DeleteOperation.from(ImmutableList.of(MetadataWithMailboxId.from(
+ MESSAGE_META_DATA,
+ MAILBOX_ID)));
+ private PreDeletionHook hook1;
+ private PreDeletionHook hook2;
+ private PreDeletionHooks testee;
+
+ @BeforeEach
+ void setUp() {
+ hook1 = mock(PreDeletionHook.class);
+ hook2 = mock(PreDeletionHook.class);
+
+ testee = new PreDeletionHooks(ImmutableSet.of(hook1, hook2));
+ }
+
+ @Test
+ void runHooksShouldCallAllHooks() {
+ when(hook1.notifyDelete(any())).thenReturn(Mono.empty());
+ when(hook2.notifyDelete(any())).thenReturn(Mono.empty());
+
+ testee.runHooks(DELETE_OPERATION).block();
+
+ verify(hook1).notifyDelete(DELETE_OPERATION);
+ verify(hook2).notifyDelete(DELETE_OPERATION);
+ verifyNoMoreInteractions(hook1);
+ verifyNoMoreInteractions(hook2);
+ }
+
+ @Test
+ void runHooksShouldThrowWhenOneHookThrows() {
+ when(hook1.notifyDelete(any())).thenThrow(new RuntimeException());
+ when(hook2.notifyDelete(any())).thenReturn(Mono.empty());
+
+ assertThatThrownBy(() -> testee.runHooks(DELETE_OPERATION).block()).isInstanceOf(RuntimeException.class);
+ }
+
+ @Test
+ void runHooksShouldNotRunHooksAfterAHookThrows() {
+ when(hook1.notifyDelete(any())).thenThrow(new RuntimeException());
+ when(hook2.notifyDelete(any())).thenReturn(Mono.empty());
+
+ try {
+ testee.runHooks(DELETE_OPERATION).block();
+ } catch (Exception e) {
+ // ignored
+ }
+
+ verifyZeroInteractions(hook2);
+ }
+
+ @Test
+ void runHooksShouldThrowWhenOneHookReturnsErrorMono() {
+ when(hook1.notifyDelete(any())).thenReturn(Mono.error(new RuntimeException()));
+ when(hook2.notifyDelete(any())).thenReturn(Mono.empty());
+
+ assertThatThrownBy(() -> testee.runHooks(DELETE_OPERATION).block()).isInstanceOf(RuntimeException.class);
+ }
+
+ @Test
+ void runHooksShouldNotRunHooksAfterAHookReturnsErrorMono() {
+ when(hook1.notifyDelete(any())).thenReturn(Mono.error(new RuntimeException()));
+ when(hook2.notifyDelete(any())).thenReturn(Mono.empty());
+
+ try {
+ testee.runHooks(DELETE_OPERATION).block();
+ } catch (Exception e) {
+ // ignored
+ }
+
+ verifyZeroInteractions(hook2);
+ }
+
+ @Test
+ void runHooksShouldExecuteHooksSequentially() {
+ ReentrantLock reentrantLock = new ReentrantLock();
+
+ Answer<Publisher<Void>> lockAndSleepAnswer = invocationOnMock -> {
+ reentrantLock.lock();
+ Thread.sleep(Duration.ofMillis(100).toMillis());
+ reentrantLock.unlock();
+ return Mono.empty();
+ };
+ Answer<Publisher<Void>> throwIfLockedAnswer = invocationOnMock -> {
+ if (reentrantLock.isLocked()) {
+ throw new RuntimeException("This task is running while the previous one is waiting");
+ }
+ return Mono.empty();
+ };
+
+ when(hook1.notifyDelete(any())).thenAnswer(lockAndSleepAnswer);
+ when(hook2.notifyDelete(any())).thenAnswer(throwIfLockedAnswer);
+
+ assertThatCode(() -> testee.runHooks(DELETE_OPERATION).block())
+ .describedAs("RunHook does not throw if hooks are executed in a sequential manner")
+ .doesNotThrowAnyException();
+ }
+}
\ No newline at end of file
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
index b32ffa9..a90ba4d 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
@@ -94,7 +94,8 @@ public class StoreMailboxManagerTest {
storeMailboxManager = new StoreMailboxManager(mockedMapperFactory, sessionProvider,
new JVMMailboxPathLocker(), new MessageParser(), messageIdFactory,
- annotationManager, eventBus, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT, PreDeletionHook.NO_PRE_DELETION_HOOK);
+ annotationManager, eventBus, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT,
+ PreDeletionHooks.NO_PRE_DELETION_HOOK);
}
@Test(expected = MailboxNotFoundException.class)
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
index ca278ee..ecb8c26 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
@@ -35,10 +35,10 @@ import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.cassandra.CassandraMailboxManager;
import org.apache.james.mailbox.cassandra.CassandraMailboxManagerProvider;
import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.indexer.ReIndexer;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
@@ -63,7 +63,7 @@ public class CassandraReIndexerImplTest {
@BeforeEach
void setUp(CassandraCluster cassandra) {
mailboxManager = CassandraMailboxManagerProvider.provideMailboxManager(cassandra.getConf(), cassandra.getTypesProvider(),
- PreDeletionHook.NO_PRE_DELETION_HOOK);
+ PreDeletionHooks.NO_PRE_DELETION_HOOK);
MailboxSessionMapperFactory mailboxSessionMapperFactory = mailboxManager.getMapperFactory();
messageSearchIndex = mock(ListeningMessageSearchIndex.class);
reIndexer = new ReIndexerImpl(new ReIndexerPerformer(mailboxManager, messageSearchIndex, mailboxSessionMapperFactory),
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 62a64a8..993f7ed 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
@@ -40,10 +40,10 @@ import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaDao;
import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManager;
import org.apache.james.mailbox.events.InVMEventBus;
import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.quota.QuotaRootResolver;
import org.apache.james.mailbox.store.JVMMailboxPathLocker;
import org.apache.james.mailbox.store.MailboxManagerConfiguration;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreRightManager;
@@ -113,7 +113,7 @@ public class CassandraHostSystem extends JamesImapHostSystem {
mailboxManager = new CassandraMailboxManager(mapperFactory, sessionProvider,
new JVMMailboxPathLocker(), new MessageParser(), messageIdFactory,
- eventBus, annotationManager, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT, PreDeletionHook.NO_PRE_DELETION_HOOK);
+ eventBus, annotationManager, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT, PreDeletionHooks.NO_PRE_DELETION_HOOK);
eventBus.register(quotaUpdater);
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 e0c85b5..7dd9141 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
@@ -51,12 +51,12 @@ import org.apache.james.mailbox.elasticsearch.search.ElasticSearchSearcher;
import org.apache.james.mailbox.events.InVMEventBus;
import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
import org.apache.james.mailbox.inmemory.InMemoryMessageId;
import org.apache.james.mailbox.store.JVMMailboxPathLocker;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMailboxManager;
@@ -142,7 +142,7 @@ public class ElasticSearchHostSystem extends JamesImapHostSystem {
storeRightManager,
quotaComponents,
searchIndex,
- PreDeletionHook.NO_PRE_DELETION_HOOK);
+ PreDeletionHooks.NO_PRE_DELETION_HOOK);
eventBus.register(searchIndex);
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 a2a7c3d..b6b24b2 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
@@ -44,6 +44,7 @@ import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
import org.apache.james.mailbox.inmemory.InMemoryMessageId;
import org.apache.james.mailbox.lucene.search.LuceneMessageSearchIndex;
import org.apache.james.mailbox.store.JVMMailboxPathLocker;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreRightManager;
@@ -120,7 +121,7 @@ public class LuceneSearchHostSystem extends JamesImapHostSystem {
rightManager,
QuotaComponents.disabled(sessionProvider, mapperFactory),
searchIndex,
- PreDeletionHook.NO_PRE_DELETION_HOOK);
+ PreDeletionHooks.NO_PRE_DELETION_HOOK);
searchIndex.setEnableSuffixMatch(true);
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 4612fea..adc1671 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
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.maildir.MaildirMailboxSessionMapperFactory;
import org.apache.james.mailbox.maildir.MaildirStore;
import org.apache.james.mailbox.store.JVMMailboxPathLocker;
import org.apache.james.mailbox.store.MailboxManagerConfiguration;
+import org.apache.james.mailbox.store.PreDeletionHooks;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMailboxManager;
@@ -86,7 +87,7 @@ public class MaildirHostSystem extends JamesImapHostSystem {
mailboxManager = new StoreMailboxManager(mailboxSessionMapperFactory, sessionProvider, locker,
messageParser, new DefaultMessageId.Factory(), annotationManager, eventBus, storeRightManager, quotaComponents,
- index, MailboxManagerConfiguration.DEFAULT, PreDeletionHook.NO_PRE_DELETION_HOOK);
+ index, MailboxManagerConfiguration.DEFAULT, PreDeletionHooks.NO_PRE_DELETION_HOOK);
ImapProcessor defaultImapProcessorFactory =
DefaultImapProcessorFactory.createDefaultProcessor(
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org