This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch postgresql
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit bf5f99e4556e82221289a14eee9995987680447c
Author: Quan Tran <[email protected]>
AuthorDate: Mon Jan 8 15:39:09 2024 +0700

    JAMES-2586 Plug PreDeletionHooks
---
 .../mailbox/postgres/mail/PostgresMailboxManager.java      |  6 ++++--
 .../mailbox/postgres/mail/PostgresMessageManager.java      |  4 ++--
 .../james/mailbox/postgres/DeleteMessageListenerTest.java  |  3 ++-
 .../mailbox/postgres/DeleteMessageListenerWithRLSTest.java |  3 ++-
 .../mailbox/postgres/PostgresMailboxManagerProvider.java   |  6 ++++--
 .../mailbox/postgres/PostgresMailboxManagerStressTest.java |  4 +++-
 .../james/mailbox/postgres/PostgresMailboxManagerTest.java | 14 ++++----------
 .../task/PostgresRecomputeCurrentQuotasServiceTest.java    |  3 ++-
 .../mpt/imapmailbox/postgres/host/PostgresHostSystem.java  |  4 +++-
 9 files changed, 26 insertions(+), 21 deletions(-)

diff --git 
a/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMailboxManager.java
 
b/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMailboxManager.java
index 070c12333a..0f25e6bc08 100644
--- 
a/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMailboxManager.java
+++ 
b/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMailboxManager.java
@@ -62,11 +62,12 @@ public class PostgresMailboxManager extends 
StoreMailboxManager {
                                   QuotaComponents quotaComponents,
                                   MessageSearchIndex index,
                                   ThreadIdGuessingAlgorithm 
threadIdGuessingAlgorithm,
+                                  PreDeletionHooks preDeletionHooks,
                                   Clock clock) {
         super(mapperFactory, sessionProvider, new NoMailboxPathLocker(),
             messageParser, messageIdFactory, annotationManager,
             eventBus, storeRightManager, quotaComponents,
-            index, MailboxManagerConfiguration.DEFAULT, 
PreDeletionHooks.NO_PRE_DELETION_HOOK, threadIdGuessingAlgorithm, clock);
+            index, MailboxManagerConfiguration.DEFAULT, preDeletionHooks, 
threadIdGuessingAlgorithm, clock);
     }
 
     @Override
@@ -82,7 +83,8 @@ public class PostgresMailboxManager extends 
StoreMailboxManager {
             configuration.getBatchSizes(),
             getStoreRightManager(),
             getThreadIdGuessingAlgorithm(),
-            getClock());
+            getClock(),
+            getPreDeletionHooks());
     }
 
     @Override
diff --git 
a/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMessageManager.java
 
b/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMessageManager.java
index c10700e36a..4bf0c237bd 100644
--- 
a/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMessageManager.java
+++ 
b/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMessageManager.java
@@ -64,9 +64,9 @@ public class PostgresMessageManager extends 
StoreMessageManager {
                                   QuotaManager quotaManager, QuotaRootResolver 
quotaRootResolver,
                                   MessageId.Factory messageIdFactory, 
BatchSizes batchSizes,
                                   StoreRightManager storeRightManager, 
ThreadIdGuessingAlgorithm threadIdGuessingAlgorithm,
-                                  Clock clock) {
+                                  Clock clock, PreDeletionHooks 
preDeletionHooks) {
         super(StoreMailboxManager.DEFAULT_NO_MESSAGE_CAPABILITIES, 
mapperFactory, index, eventBus, locker, mailbox,
-            quotaManager, quotaRootResolver, batchSizes, storeRightManager, 
PreDeletionHooks.NO_PRE_DELETION_HOOK,
+            quotaManager, quotaRootResolver, batchSizes, storeRightManager, 
preDeletionHooks,
             new MessageStorer.WithoutAttachment(mapperFactory, 
messageIdFactory, new MessageFactory.StoreMessageFactory(), 
threadIdGuessingAlgorithm, clock));
         this.storeRightManager = storeRightManager;
         this.mapperFactory = mapperFactory;
diff --git 
a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/DeleteMessageListenerTest.java
 
b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/DeleteMessageListenerTest.java
index bc769f2042..7e93f82be6 100644
--- 
a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/DeleteMessageListenerTest.java
+++ 
b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/DeleteMessageListenerTest.java
@@ -25,6 +25,7 @@ import org.apache.james.backends.postgres.PostgresExtension;
 import org.apache.james.mailbox.postgres.mail.PostgresMailboxManager;
 import org.apache.james.mailbox.postgres.mail.dao.PostgresMailboxMessageDAO;
 import org.apache.james.mailbox.postgres.mail.dao.PostgresMessageDAO;
+import org.apache.james.mailbox.store.PreDeletionHooks;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -36,7 +37,7 @@ public class DeleteMessageListenerTest extends 
DeleteMessageListenerContract {
 
     @BeforeAll
     static void beforeAll() {
-        mailboxManager = 
PostgresMailboxManagerProvider.provideMailboxManager(postgresExtension);
+        mailboxManager = 
PostgresMailboxManagerProvider.provideMailboxManager(postgresExtension, 
PreDeletionHooks.NO_PRE_DELETION_HOOK);
     }
 
     @Override
diff --git 
a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/DeleteMessageListenerWithRLSTest.java
 
b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/DeleteMessageListenerWithRLSTest.java
index 996ceddb72..3d76c75686 100644
--- 
a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/DeleteMessageListenerWithRLSTest.java
+++ 
b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/DeleteMessageListenerWithRLSTest.java
@@ -28,6 +28,7 @@ import org.apache.james.core.Username;
 import org.apache.james.mailbox.postgres.mail.PostgresMailboxManager;
 import org.apache.james.mailbox.postgres.mail.dao.PostgresMailboxMessageDAO;
 import org.apache.james.mailbox.postgres.mail.dao.PostgresMessageDAO;
+import org.apache.james.mailbox.store.PreDeletionHooks;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -40,7 +41,7 @@ public class DeleteMessageListenerWithRLSTest extends 
DeleteMessageListenerContr
 
     @BeforeAll
     static void beforeAll() {
-        mailboxManager = 
PostgresMailboxManagerProvider.provideMailboxManager(postgresExtension);
+        mailboxManager = 
PostgresMailboxManagerProvider.provideMailboxManager(postgresExtension, 
PreDeletionHooks.NO_PRE_DELETION_HOOK);
     }
 
     @Override
diff --git 
a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerProvider.java
 
b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerProvider.java
index a7753286f4..99377923da 100644
--- 
a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerProvider.java
+++ 
b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerProvider.java
@@ -39,6 +39,7 @@ import 
org.apache.james.mailbox.postgres.mail.PostgresMailboxManager;
 import org.apache.james.mailbox.postgres.mail.dao.PostgresMailboxMessageDAO;
 import org.apache.james.mailbox.postgres.mail.dao.PostgresMessageDAO;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
+import org.apache.james.mailbox.store.PreDeletionHooks;
 import org.apache.james.mailbox.store.SessionProviderImpl;
 import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
 import org.apache.james.mailbox.store.StoreRightManager;
@@ -61,7 +62,7 @@ public class PostgresMailboxManagerProvider {
 
     public static final BlobId.Factory BLOB_ID_FACTORY = new 
HashBlobId.Factory();
 
-    public static PostgresMailboxManager 
provideMailboxManager(PostgresExtension postgresExtension) {
+    public static PostgresMailboxManager 
provideMailboxManager(PostgresExtension postgresExtension, PreDeletionHooks 
preDeletionHooks) {
         DeDuplicationBlobStore blobStore = new DeDuplicationBlobStore(new 
MemoryBlobStoreDAO(), BucketName.DEFAULT, BLOB_ID_FACTORY);
         MailboxSessionMapperFactory mf = 
provideMailboxSessionMapperFactory(postgresExtension, BLOB_ID_FACTORY, 
blobStore);
 
@@ -88,7 +89,8 @@ public class PostgresMailboxManagerProvider {
         return new 
PostgresMailboxManager((PostgresMailboxSessionMapperFactory) mf, 
sessionProvider,
             messageParser, new PostgresMessageId.Factory(),
             eventBus, annotationManager,
-            storeRightManager, quotaComponents, index, new 
NaiveThreadIdGuessingAlgorithm(), new UpdatableTickingClock(Instant.now()));
+            storeRightManager, quotaComponents, index, new 
NaiveThreadIdGuessingAlgorithm(),
+            preDeletionHooks, new UpdatableTickingClock(Instant.now()));
     }
 
     public static MailboxSessionMapperFactory 
provideMailboxSessionMapperFactory(PostgresExtension postgresExtension) {
diff --git 
a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerStressTest.java
 
b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerStressTest.java
index c61c56eb3a..036d08f079 100644
--- 
a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerStressTest.java
+++ 
b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerStressTest.java
@@ -25,6 +25,7 @@ import org.apache.james.backends.postgres.PostgresExtension;
 import org.apache.james.events.EventBus;
 import org.apache.james.mailbox.MailboxManagerStressContract;
 import org.apache.james.mailbox.postgres.mail.PostgresMailboxManager;
+import org.apache.james.mailbox.store.PreDeletionHooks;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -48,7 +49,8 @@ class PostgresMailboxManagerStressTest implements 
MailboxManagerStressContract<P
     @BeforeEach
     void setUp() {
         if (mailboxManager.isEmpty()) {
-            mailboxManager = 
Optional.of(PostgresMailboxManagerProvider.provideMailboxManager(postgresExtension));
+            mailboxManager = 
Optional.of(PostgresMailboxManagerProvider.provideMailboxManager(postgresExtension,
+                PreDeletionHooks.NO_PRE_DELETION_HOOK));
         }
     }
 
diff --git 
a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerTest.java
 
b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerTest.java
index 537a124c96..320e5c8d25 100644
--- 
a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerTest.java
+++ 
b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerTest.java
@@ -25,19 +25,12 @@ import org.apache.james.events.EventBus;
 import org.apache.james.mailbox.MailboxManagerTest;
 import org.apache.james.mailbox.SubscriptionManager;
 import org.apache.james.mailbox.postgres.mail.PostgresMailboxManager;
+import org.apache.james.mailbox.store.PreDeletionHooks;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Nested;
+import org.apache.james.metrics.tests.RecordingMetricFactory;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 class PostgresMailboxManagerTest extends 
MailboxManagerTest<PostgresMailboxManager> {
-
-    @Disabled("JPAMailboxManager is using DefaultMessageId which doesn't 
support full feature of a messageId, which is an essential" +
-        " element of the Vault")
-    @Nested
-    class HookTests {
-    }
-
     @RegisterExtension
     static PostgresExtension postgresExtension = 
PostgresExtension.withoutRowLevelSecurity(PostgresMailboxAggregateModule.MODULE);
 
@@ -46,7 +39,8 @@ class PostgresMailboxManagerTest extends 
MailboxManagerTest<PostgresMailboxManag
     @Override
     protected PostgresMailboxManager provideMailboxManager() {
         if (mailboxManager.isEmpty()) {
-            mailboxManager = 
Optional.of(PostgresMailboxManagerProvider.provideMailboxManager(postgresExtension));
+            mailboxManager = 
Optional.of(PostgresMailboxManagerProvider.provideMailboxManager(postgresExtension,
+                new PreDeletionHooks(preDeletionHooks(), new 
RecordingMetricFactory())));
         }
         return mailboxManager.get();
     }
diff --git 
a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/mail/task/PostgresRecomputeCurrentQuotasServiceTest.java
 
b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/mail/task/PostgresRecomputeCurrentQuotasServiceTest.java
index 0d2ba967de..89eed4ddc1 100644
--- 
a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/mail/task/PostgresRecomputeCurrentQuotasServiceTest.java
+++ 
b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/mail/task/PostgresRecomputeCurrentQuotasServiceTest.java
@@ -36,6 +36,7 @@ import 
org.apache.james.mailbox.quota.task.RecomputeCurrentQuotasService;
 import 
org.apache.james.mailbox.quota.task.RecomputeCurrentQuotasServiceContract;
 import 
org.apache.james.mailbox.quota.task.RecomputeMailboxCurrentQuotasService;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
+import org.apache.james.mailbox.store.PreDeletionHooks;
 import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator;
 import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
@@ -78,7 +79,7 @@ class PostgresRecomputeCurrentQuotasServiceTest implements 
RecomputeCurrentQuota
         configuration.addProperty("enableVirtualHosting", "false");
         usersRepository.configure(configuration);
 
-        mailboxManager = 
PostgresMailboxManagerProvider.provideMailboxManager(postgresExtension);
+        mailboxManager = 
PostgresMailboxManagerProvider.provideMailboxManager(postgresExtension, 
PreDeletionHooks.NO_PRE_DELETION_HOOK);
         sessionProvider = mailboxManager.getSessionProvider();
         currentQuotaManager = new PostgresCurrentQuotaManager(new 
PostgresQuotaCurrentValueDAO(postgresExtension.getPostgresExecutor()));
 
diff --git 
a/mpt/impl/imap-mailbox/postgres/src/test/java/org/apache/james/mpt/imapmailbox/postgres/host/PostgresHostSystem.java
 
b/mpt/impl/imap-mailbox/postgres/src/test/java/org/apache/james/mpt/imapmailbox/postgres/host/PostgresHostSystem.java
index 0e2a041730..3bdb05e1ce 100644
--- 
a/mpt/impl/imap-mailbox/postgres/src/test/java/org/apache/james/mpt/imapmailbox/postgres/host/PostgresHostSystem.java
+++ 
b/mpt/impl/imap-mailbox/postgres/src/test/java/org/apache/james/mpt/imapmailbox/postgres/host/PostgresHostSystem.java
@@ -50,6 +50,7 @@ import 
org.apache.james.mailbox.postgres.mail.PostgresMailboxManager;
 import org.apache.james.mailbox.postgres.quota.PostgresCurrentQuotaManager;
 import org.apache.james.mailbox.postgres.quota.PostgresPerUserMaxQuotaManager;
 import org.apache.james.mailbox.quota.CurrentQuotaManager;
+import org.apache.james.mailbox.store.PreDeletionHooks;
 import org.apache.james.mailbox.store.SessionProviderImpl;
 import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
 import org.apache.james.mailbox.store.StoreRightManager;
@@ -128,7 +129,8 @@ public class PostgresHostSystem extends JamesImapHostSystem 
{
 
         mailboxManager = new PostgresMailboxManager(mapperFactory, 
sessionProvider, messageParser,
             new PostgresMessageId.Factory(),
-            eventBus, annotationManager, storeRightManager, quotaComponents, 
index, new NaiveThreadIdGuessingAlgorithm(), new 
UpdatableTickingClock(Instant.now()));
+            eventBus, annotationManager, storeRightManager, quotaComponents, 
index, new NaiveThreadIdGuessingAlgorithm(),
+            PreDeletionHooks.NO_PRE_DELETION_HOOK, new 
UpdatableTickingClock(Instant.now()));
 
         eventBus.register(quotaUpdater);
         eventBus.register(new MailboxAnnotationListener(mapperFactory, 
sessionProvider));


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to