You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2021/11/18 03:46:01 UTC
[james-project] branch master updated: JAMES-3670 : Configurable restore location for messages from the Deleted Messages Vault
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
The following commit(s) were added to refs/heads/master by this push:
new 900e0fd JAMES-3670 : Configurable restore location for messages from the Deleted Messages Vault
900e0fd is described below
commit 900e0fd95c86d39f7c01fa3da6aed8bdea420212
Author: Karsten Otto <ka...@akquinet.de>
AuthorDate: Mon Nov 15 10:00:52 2021 +0100
JAMES-3670 : Configurable restore location for messages from the Deleted Messages Vault
---
...nConfiguration.java => VaultConfiguration.java} | 34 ++++++++++++------
.../vault/blob/BlobStoreDeletedMessageVault.java | 10 +++---
.../james/vault/DeletedMessageVaultHookTest.java | 2 +-
...rationTest.java => VaultConfigurationTest.java} | 40 ++++++++++++++++------
.../blob/BlobStoreDeletedMessageVaultTest.java | 4 +--
.../docs/modules/ROOT/pages/configure/vault.adoc | 3 ++
.../deletedMessageVault.properties | 6 +++-
...=> DeletedMessageVaultConfigurationModule.java} | 14 ++++----
.../modules/vault/DeletedMessageVaultModule.java | 2 +-
.../webadmin/vault/routes/RestoreService.java | 9 +++--
.../routes/DeletedMessagesVaultRoutesTest.java | 6 ++--
src/site/xdoc/server/config-vault.xml | 7 ++++
12 files changed, 93 insertions(+), 44 deletions(-)
diff --git a/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/RetentionConfiguration.java b/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/VaultConfiguration.java
similarity index 61%
rename from mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/RetentionConfiguration.java
rename to mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/VaultConfiguration.java
index 38ea404..918daa8 100644
--- a/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/RetentionConfiguration.java
+++ b/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/VaultConfiguration.java
@@ -25,44 +25,56 @@ import java.util.Objects;
import java.util.Optional;
import org.apache.commons.configuration2.Configuration;
+import org.apache.james.mailbox.DefaultMailboxes;
import org.apache.james.util.DurationParser;
import com.google.common.base.Preconditions;
-public class RetentionConfiguration {
- public static final RetentionConfiguration DEFAULT = new RetentionConfiguration(ChronoUnit.YEARS.getDuration());
+public class VaultConfiguration {
+ public static final VaultConfiguration DEFAULT =
+ new VaultConfiguration(ChronoUnit.YEARS.getDuration(), DefaultMailboxes.RESTORED_MESSAGES);
- public static RetentionConfiguration from(Configuration propertiesConfiguration) {
- return Optional.ofNullable(propertiesConfiguration.getString("retentionPeriod"))
+ public static VaultConfiguration from(Configuration propertiesConfiguration) {
+ Duration retentionPeriod = Optional.ofNullable(propertiesConfiguration.getString("retentionPeriod"))
.map(string -> DurationParser.parse(string, ChronoUnit.DAYS))
- .map(RetentionConfiguration::new)
- .orElse(DEFAULT);
+ .orElse(DEFAULT.getRetentionPeriod());
+ String restoreLocation = Optional.ofNullable(propertiesConfiguration.getString("restoreLocation"))
+ .orElse(DEFAULT.getRestoreLocation());
+ return new VaultConfiguration(retentionPeriod, restoreLocation);
}
private final Duration retentionPeriod;
+ private final String restoreLocation;
- RetentionConfiguration(Duration retentionPeriod) {
+ VaultConfiguration(Duration retentionPeriod, String restoreLocation) {
Preconditions.checkNotNull(retentionPeriod);
+ Preconditions.checkNotNull(restoreLocation);
this.retentionPeriod = retentionPeriod;
+ this.restoreLocation = restoreLocation;
}
public Duration getRetentionPeriod() {
return retentionPeriod;
}
+ public String getRestoreLocation() {
+ return restoreLocation;
+ }
+
@Override
public final boolean equals(Object o) {
- if (o instanceof RetentionConfiguration) {
- RetentionConfiguration that = (RetentionConfiguration) o;
+ if (o instanceof VaultConfiguration) {
+ VaultConfiguration that = (VaultConfiguration) o;
- return Objects.equals(this.retentionPeriod, that.retentionPeriod);
+ return Objects.equals(this.retentionPeriod, that.retentionPeriod)
+ && Objects.equals(this.restoreLocation, that.restoreLocation);
}
return false;
}
@Override
public final int hashCode() {
- return Objects.hash(retentionPeriod);
+ return Objects.hash(retentionPeriod, restoreLocation);
}
}
diff --git a/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVault.java b/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVault.java
index a9b5ed4..07216a3 100644
--- a/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVault.java
+++ b/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVault.java
@@ -40,7 +40,7 @@ import org.apache.james.task.Task;
import org.apache.james.vault.DeletedMessage;
import org.apache.james.vault.DeletedMessageContentNotFoundException;
import org.apache.james.vault.DeletedMessageVault;
-import org.apache.james.vault.RetentionConfiguration;
+import org.apache.james.vault.VaultConfiguration;
import org.apache.james.vault.metadata.DeletedMessageMetadataVault;
import org.apache.james.vault.metadata.DeletedMessageWithStorageInformation;
import org.apache.james.vault.metadata.StorageInformation;
@@ -72,21 +72,21 @@ public class BlobStoreDeletedMessageVault implements DeletedMessageVault {
private final BlobStoreDAO blobStoreDAO;
private final BucketNameGenerator nameGenerator;
private final Clock clock;
- private final RetentionConfiguration retentionConfiguration;
+ private final VaultConfiguration vaultConfiguration;
private final BlobStoreVaultGarbageCollectionTask.Factory taskFactory;
@Inject
public BlobStoreDeletedMessageVault(MetricFactory metricFactory, DeletedMessageMetadataVault messageMetadataVault,
BlobStore blobStore, BlobStoreDAO blobStoreDAO, BucketNameGenerator nameGenerator,
Clock clock,
- RetentionConfiguration retentionConfiguration) {
+ VaultConfiguration vaultConfiguration) {
this.metricFactory = metricFactory;
this.messageMetadataVault = messageMetadataVault;
this.blobStore = blobStore;
this.blobStoreDAO = blobStoreDAO;
this.nameGenerator = nameGenerator;
this.clock = clock;
- this.retentionConfiguration = retentionConfiguration;
+ this.vaultConfiguration = vaultConfiguration;
this.taskFactory = new BlobStoreVaultGarbageCollectionTask.Factory(this);
}
@@ -181,7 +181,7 @@ public class BlobStoreDeletedMessageVault implements DeletedMessageVault {
ZonedDateTime getBeginningOfRetentionPeriod() {
ZonedDateTime now = ZonedDateTime.now(clock);
- return now.minus(retentionConfiguration.getRetentionPeriod());
+ return now.minus(vaultConfiguration.getRetentionPeriod());
}
@VisibleForTesting
diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java
index 5701c7f..315d289 100644
--- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java
+++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java
@@ -120,7 +120,7 @@ class DeletedMessageVaultHookTest {
.blobIdFactory(new HashBlobId.Factory())
.defaultBucketName()
.passthrough(), blobStoreDAO, new BucketNameGenerator(clock), clock,
- RetentionConfiguration.DEFAULT);
+ VaultConfiguration.DEFAULT);
DeletedMessageConverter deletedMessageConverter = new DeletedMessageConverter();
diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/RetentionConfigurationTest.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/VaultConfigurationTest.java
similarity index 59%
rename from mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/RetentionConfigurationTest.java
rename to mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/VaultConfigurationTest.java
index d77516a..de34851 100644
--- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/RetentionConfigurationTest.java
+++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/VaultConfigurationTest.java
@@ -23,37 +23,55 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.time.Duration;
+import java.time.temporal.ChronoUnit;
import org.apache.commons.configuration2.PropertiesConfiguration;
+import org.apache.james.mailbox.DefaultMailboxes;
import org.junit.jupiter.api.Test;
import nl.jqno.equalsverifier.EqualsVerifier;
-class RetentionConfigurationTest {
+class VaultConfigurationTest {
@Test
void shouldMatchBeanContract() {
- EqualsVerifier.forClass(RetentionConfiguration.class)
+ EqualsVerifier.forClass(VaultConfiguration.class)
.verify();
}
@Test
- void constructorShouldThrowWhenNull() {
- assertThatThrownBy(() -> new RetentionConfiguration(null))
+ void constructorShouldThrowWhenRetentionPeriodIsNull() {
+ assertThatThrownBy(() -> new VaultConfiguration(null, DefaultMailboxes.RESTORED_MESSAGES))
+ .isInstanceOf(NullPointerException.class);
+ }
+
+ @Test
+ void constructorShouldThrowWhenRestoreLocationIsNull() {
+ assertThatThrownBy(() -> new VaultConfiguration(ChronoUnit.YEARS.getDuration(), null))
.isInstanceOf(NullPointerException.class);
}
@Test
void fromShouldThrowWhenNull() {
- assertThatThrownBy(() -> RetentionConfiguration.from(null))
+ assertThatThrownBy(() -> VaultConfiguration.from(null))
.isInstanceOf(NullPointerException.class);
}
@Test
+ void fromShouldReturnConfiguredRestoreLocation() {
+ PropertiesConfiguration configuration = new PropertiesConfiguration();
+ configuration.addProperty("restoreLocation", "INBOX");
+
+ assertThat(VaultConfiguration.from(configuration)).isEqualTo(
+ new VaultConfiguration(ChronoUnit.YEARS.getDuration(), DefaultMailboxes.INBOX));
+ }
+
+ @Test
void fromShouldReturnConfiguredRetentionTime() {
PropertiesConfiguration configuration = new PropertiesConfiguration();
configuration.addProperty("retentionPeriod", "15d");
- assertThat(RetentionConfiguration.from(configuration)).isEqualTo(new RetentionConfiguration(Duration.ofDays(15)));
+ assertThat(VaultConfiguration.from(configuration)).isEqualTo(
+ new VaultConfiguration(Duration.ofDays(15), DefaultMailboxes.RESTORED_MESSAGES));
}
@Test
@@ -61,7 +79,8 @@ class RetentionConfigurationTest {
PropertiesConfiguration configuration = new PropertiesConfiguration();
configuration.addProperty("retentionPeriod", "15h");
- assertThat(RetentionConfiguration.from(configuration)).isEqualTo(new RetentionConfiguration(Duration.ofHours(15)));
+ assertThat(VaultConfiguration.from(configuration)).isEqualTo(
+ new VaultConfiguration(Duration.ofHours(15), DefaultMailboxes.RESTORED_MESSAGES));
}
@Test
@@ -69,13 +88,14 @@ class RetentionConfigurationTest {
PropertiesConfiguration configuration = new PropertiesConfiguration();
configuration.addProperty("retentionPeriod", "15");
- assertThat(RetentionConfiguration.from(configuration)).isEqualTo(new RetentionConfiguration(Duration.ofDays(15)));
+ assertThat(VaultConfiguration.from(configuration)).isEqualTo(
+ new VaultConfiguration(Duration.ofDays(15), DefaultMailboxes.RESTORED_MESSAGES));
}
@Test
- void fromShouldReturnDefaultWhenNoRetentionTime() {
+ void fromShouldReturnDefaultWhenNoConfigurationOptions() {
PropertiesConfiguration configuration = new PropertiesConfiguration();
- assertThat(RetentionConfiguration.from(configuration)).isEqualTo(RetentionConfiguration.DEFAULT);
+ assertThat(VaultConfiguration.from(configuration)).isEqualTo(VaultConfiguration.DEFAULT);
}
}
\ No newline at end of file
diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVaultTest.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVaultTest.java
index 6b58ffd..fe6f137 100644
--- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVaultTest.java
+++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVaultTest.java
@@ -47,7 +47,7 @@ import org.apache.james.utils.UpdatableTickingClock;
import org.apache.james.vault.DeletedMessageVault;
import org.apache.james.vault.DeletedMessageVaultContract;
import org.apache.james.vault.DeletedMessageVaultSearchContract;
-import org.apache.james.vault.RetentionConfiguration;
+import org.apache.james.vault.VaultConfiguration;
import org.apache.james.vault.memory.metadata.MemoryDeletedMessageMetadataVault;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -71,7 +71,7 @@ class BlobStoreDeletedMessageVaultTest implements DeletedMessageVaultContract, D
.blobIdFactory(new HashBlobId.Factory())
.defaultBucketName()
.passthrough(),
- blobStoreDAO, new BucketNameGenerator(clock), clock, RetentionConfiguration.DEFAULT);
+ blobStoreDAO, new BucketNameGenerator(clock), clock, VaultConfiguration.DEFAULT);
}
@Override
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/configure/vault.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/configure/vault.adoc
index ab8d6c0..4a6ccae 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/configure/vault.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/configure/vault.adoc
@@ -29,4 +29,7 @@ to get some examples and hints.
| retentionPeriod
| Deleted messages stored in the Deleted Messages Vault are expired after this period (default: 1 year). It can be expressed in *y* years, *d* days, *h* hours, ...
+
+| restoreLocation
+| Messages restored from the Deleted Messages Vault are placed in a mailbox with this name (default: ``Restored-Messages``). The mailbox will be created if it does not exist yet.
|===
diff --git a/server/apps/distributed-pop3-app/sample-configuration/deletedMessageVault.properties b/server/apps/distributed-pop3-app/sample-configuration/deletedMessageVault.properties
index ab1e3ee..ff0869f 100644
--- a/server/apps/distributed-pop3-app/sample-configuration/deletedMessageVault.properties
+++ b/server/apps/distributed-pop3-app/sample-configuration/deletedMessageVault.properties
@@ -1,4 +1,8 @@
# ============================================= Deleted Messages Vault Configuration ==================================
# Retention period for your deleted messages into the vault, after which they expire and can be potentially cleaned up
# Optional, default 1y
-# retentionPeriod=1y
\ No newline at end of file
+# retentionPeriod=1y
+
+# Mailbox that will contain messages restored from the vault, will be created if it does not exist yet
+# Optional, default 'Restored-Messages' ; must be set to INBOX for POP3
+restoreLocation=INBOX
diff --git a/server/container/guice/mailbox-plugin-deleted-messages-vault/src/main/java/org/apache/james/modules/vault/DeletedMessageVaultRetentionModule.java b/server/container/guice/mailbox-plugin-deleted-messages-vault/src/main/java/org/apache/james/modules/vault/DeletedMessageVaultConfigurationModule.java
similarity index 79%
rename from server/container/guice/mailbox-plugin-deleted-messages-vault/src/main/java/org/apache/james/modules/vault/DeletedMessageVaultRetentionModule.java
rename to server/container/guice/mailbox-plugin-deleted-messages-vault/src/main/java/org/apache/james/modules/vault/DeletedMessageVaultConfigurationModule.java
index 95a420d..c25787f 100644
--- a/server/container/guice/mailbox-plugin-deleted-messages-vault/src/main/java/org/apache/james/modules/vault/DeletedMessageVaultRetentionModule.java
+++ b/server/container/guice/mailbox-plugin-deleted-messages-vault/src/main/java/org/apache/james/modules/vault/DeletedMessageVaultConfigurationModule.java
@@ -25,7 +25,7 @@ import javax.inject.Singleton;
import org.apache.commons.configuration2.Configuration;
import org.apache.james.utils.PropertiesProvider;
-import org.apache.james.vault.RetentionConfiguration;
+import org.apache.james.vault.VaultConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -33,8 +33,8 @@ import com.google.inject.AbstractModule;
import com.google.inject.ConfigurationException;
import com.google.inject.Provides;
-public class DeletedMessageVaultRetentionModule extends AbstractModule {
- private static final Logger LOGGER = LoggerFactory.getLogger(DeletedMessageVaultRetentionModule.class);
+public class DeletedMessageVaultConfigurationModule extends AbstractModule {
+ private static final Logger LOGGER = LoggerFactory.getLogger(DeletedMessageVaultConfigurationModule.class);
@Override
protected void configure() {
@@ -43,13 +43,13 @@ public class DeletedMessageVaultRetentionModule extends AbstractModule {
@Provides
@Singleton
- RetentionConfiguration providesRetentionConfiguration(PropertiesProvider propertiesProvider) throws ConfigurationException, org.apache.commons.configuration2.ex.ConfigurationException {
+ VaultConfiguration providesVaultConfiguration(PropertiesProvider propertiesProvider) throws ConfigurationException, org.apache.commons.configuration2.ex.ConfigurationException {
try {
Configuration configuration = propertiesProvider.getConfiguration("deletedMessageVault");
- return RetentionConfiguration.from(configuration);
+ return VaultConfiguration.from(configuration);
} catch (FileNotFoundException e) {
- LOGGER.warn("Error encountered while retrieving Deleted message vault configuration. Using default RetentionTime (1 year) instead.");
- return RetentionConfiguration.DEFAULT;
+ LOGGER.warn("Error encountered while retrieving Deleted message vault configuration. Using default RetentionTime (1 year) and RestoreLocation (Restored-Messages) instead.");
+ return VaultConfiguration.DEFAULT;
}
}
}
diff --git a/server/container/guice/mailbox-plugin-deleted-messages-vault/src/main/java/org/apache/james/modules/vault/DeletedMessageVaultModule.java b/server/container/guice/mailbox-plugin-deleted-messages-vault/src/main/java/org/apache/james/modules/vault/DeletedMessageVaultModule.java
index c6ac334..ad002a5 100644
--- a/server/container/guice/mailbox-plugin-deleted-messages-vault/src/main/java/org/apache/james/modules/vault/DeletedMessageVaultModule.java
+++ b/server/container/guice/mailbox-plugin-deleted-messages-vault/src/main/java/org/apache/james/modules/vault/DeletedMessageVaultModule.java
@@ -29,7 +29,7 @@ import com.google.inject.Scopes;
public class DeletedMessageVaultModule extends AbstractModule {
@Override
protected void configure() {
- install(new DeletedMessageVaultRetentionModule());
+ install(new DeletedMessageVaultConfigurationModule());
install(new VaultTaskSerializationModule());
bind(BucketNameGenerator.class).in(Scopes.SINGLETON);
diff --git a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/RestoreService.java b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/RestoreService.java
index 00cf49d..ead4dde 100644
--- a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/RestoreService.java
+++ b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/RestoreService.java
@@ -30,7 +30,6 @@ import java.util.function.Predicate;
import javax.inject.Inject;
import org.apache.james.core.Username;
-import org.apache.james.mailbox.DefaultMailboxes;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
@@ -42,6 +41,7 @@ import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.vault.DeletedMessage;
import org.apache.james.vault.DeletedMessageContentNotFoundException;
import org.apache.james.vault.DeletedMessageVault;
+import org.apache.james.vault.VaultConfiguration;
import org.apache.james.vault.search.Query;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -64,11 +64,14 @@ class RestoreService {
private final DeletedMessageVault deletedMessageVault;
private final MailboxManager mailboxManager;
+ private final VaultConfiguration vaultConfiguration;
@Inject
- RestoreService(DeletedMessageVault deletedMessageVault, MailboxManager mailboxManager) {
+ RestoreService(DeletedMessageVault deletedMessageVault, MailboxManager mailboxManager,
+ VaultConfiguration vaultConfiguration) {
this.deletedMessageVault = deletedMessageVault;
this.mailboxManager = mailboxManager;
+ this.vaultConfiguration = vaultConfiguration;
}
Flux<RestoreResult> restore(Username usernameToRestore, Query searchQuery) throws MailboxException {
@@ -109,7 +112,7 @@ class RestoreService {
}
private MessageManager restoreMailboxManager(MailboxSession session) throws MailboxException {
- MailboxPath restoreMailbox = MailboxPath.forUser(session.getUser(), DefaultMailboxes.RESTORED_MESSAGES);
+ MailboxPath restoreMailbox = MailboxPath.forUser(session.getUser(), vaultConfiguration.getRestoreLocation());
try {
return mailboxManager.getMailbox(restoreMailbox, session);
} catch (MailboxNotFoundException e) {
diff --git a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutesTest.java
index f9c906a..a7b574b 100644
--- a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutesTest.java
@@ -111,7 +111,7 @@ import org.apache.james.utils.UpdatableTickingClock;
import org.apache.james.vault.DeletedMessage;
import org.apache.james.vault.DeletedMessageVault;
import org.apache.james.vault.DeletedMessageZipper;
-import org.apache.james.vault.RetentionConfiguration;
+import org.apache.james.vault.VaultConfiguration;
import org.apache.james.vault.blob.BlobStoreDeletedMessageVault;
import org.apache.james.vault.blob.BlobStoreVaultGarbageCollectionTaskAdditionalInformationDTO;
import org.apache.james.vault.blob.BucketNameGenerator;
@@ -191,14 +191,14 @@ class DeletedMessagesVaultRoutesTest {
clock = new UpdatableTickingClock(OLD_DELETION_DATE.toInstant());
vault = spy(new BlobStoreDeletedMessageVault(new RecordingMetricFactory(), new MemoryDeletedMessageMetadataVault(),
blobStore, blobStoreDAO, new BucketNameGenerator(clock), clock,
- RetentionConfiguration.DEFAULT));
+ VaultConfiguration.DEFAULT));
InMemoryIntegrationResources inMemoryResource = InMemoryIntegrationResources.defaultResources();
mailboxManager = spy(inMemoryResource.getMailboxManager());
taskManager = new MemoryTaskManager(new Hostname("foo"));
JsonTransformer jsonTransformer = new JsonTransformer();
- RestoreService vaultRestore = new RestoreService(vault, mailboxManager);
+ RestoreService vaultRestore = new RestoreService(vault, mailboxManager, VaultConfiguration.DEFAULT);
blobExporting = spy(new NoopBlobExporting());
zipper = new DeletedMessageZipper();
exportService = new ExportService(blobExporting, blobStore, zipper, vault);
diff --git a/src/site/xdoc/server/config-vault.xml b/src/site/xdoc/server/config-vault.xml
index d0c1aee..fb5bcb9 100644
--- a/src/site/xdoc/server/config-vault.xml
+++ b/src/site/xdoc/server/config-vault.xml
@@ -57,6 +57,13 @@
It can be expressed in <b>y</b> years, <b>d</b> days, <b>h</b> hours, ...
</dd>
</dl>
+ <dl>
+ <dt><strong>restoreLocation</strong></dt>
+ <dd>
+ Messages restored from the Deleted Messages Vault are placed in a mailbox with this name (default: <code>Restored-Messages</code>>).
+ The mailbox will be created if it does not exist yet.
+ </dd>
+ </dl>
</subsection>
</section>
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org