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]
