This is an automated email from the ASF dual-hosted git repository. rcordier pushed a commit to branch james-3926-mailbox-current-quotas in repository https://gitbox.apache.org/repos/asf/james-project.git
commit a76adbc9ba9a80dca91c98fb78be52f82e1c52a6 Author: Benoit TELLIER <btell...@linagora.com> AuthorDate: Thu Aug 24 19:52:58 2023 +0700 JAMES-3926 Configuration for quota compatibility mode --- .../james/CassandraJamesServerConfiguration.java | 25 +++++++++++++++-- .../james/CassandraRabbitMQJamesConfiguration.java | 30 +++++++++++++++++++-- .../james/DistributedPOP3JamesConfiguration.java | 31 ++++++++++++++++++++-- 3 files changed, 80 insertions(+), 6 deletions(-) diff --git a/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerConfiguration.java b/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerConfiguration.java index 7d93448da5..ee8d86a699 100644 --- a/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerConfiguration.java +++ b/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerConfiguration.java @@ -55,6 +55,7 @@ public class CassandraJamesServerConfiguration implements Configuration { private Optional<UsersRepositoryModuleChooser.Implementation> usersRepositoryImplementation; private Optional<VaultConfiguration> vaultConfiguration; private Optional<Boolean> jmapEnabled; + private Optional<Boolean> quotaCompatibilityMode; private Builder() { rootDirectory = Optional.empty(); @@ -64,6 +65,7 @@ public class CassandraJamesServerConfiguration implements Configuration { blobStoreConfiguration = Optional.empty(); vaultConfiguration = Optional.empty(); jmapEnabled = Optional.empty(); + quotaCompatibilityMode = Optional.empty(); } public Builder workingDirectory(String path) { @@ -114,6 +116,11 @@ public class CassandraJamesServerConfiguration implements Configuration { return this; } + public Builder quotaCompatibilityModeEnabled(boolean value) { + this.quotaCompatibilityMode = Optional.of(value); + return this; + } + public CassandraJamesServerConfiguration build() { ConfigurationPath configurationPath = this.configurationPath.orElse(new ConfigurationPath(FileSystem.FILE_PROTOCOL_AND_CONF)); JamesServerResourceLoader directories = new JamesServerResourceLoader(rootDirectory @@ -142,6 +149,14 @@ public class CassandraJamesServerConfiguration implements Configuration { } }); + boolean quotaCompatibilityMode = this.quotaCompatibilityMode.orElseGet(() -> { + try { + return configurationProvider.getConfiguration("cassandra").getBoolean("quota.compatibility.mode", false); + } catch (ConfigurationException e) { + return false; + } + }); + boolean jmapEnabled = this.jmapEnabled.orElseGet(() -> { try { return JMAPModule.parseConfiguration(propertiesProvider).isEnabled(); @@ -152,7 +167,7 @@ public class CassandraJamesServerConfiguration implements Configuration { } }); - return new CassandraJamesServerConfiguration(configurationPath, directories, searchConfiguration, blobStoreConfiguration, usersRepositoryChoice, vaultConfiguration, jmapEnabled); + return new CassandraJamesServerConfiguration(configurationPath, directories, searchConfiguration, blobStoreConfiguration, usersRepositoryChoice, vaultConfiguration, jmapEnabled, quotaCompatibilityMode); } } @@ -167,11 +182,12 @@ public class CassandraJamesServerConfiguration implements Configuration { private final UsersRepositoryModuleChooser.Implementation usersRepositoryImplementation; private final VaultConfiguration vaultConfiguration; private final boolean jmapEnabled; + private final boolean quotaCompatibilityMode; private CassandraJamesServerConfiguration(ConfigurationPath configurationPath, JamesDirectoriesProvider directories, SearchConfiguration searchConfiguration, BlobStoreConfiguration blobStoreConfiguration, UsersRepositoryModuleChooser.Implementation usersRepositoryImplementation, - VaultConfiguration vaultConfiguration, boolean jmapEnabled) { + VaultConfiguration vaultConfiguration, boolean jmapEnabled, boolean quotaCompatibilityMode) { this.configurationPath = configurationPath; this.directories = directories; this.searchConfiguration = searchConfiguration; @@ -179,6 +195,7 @@ public class CassandraJamesServerConfiguration implements Configuration { this.usersRepositoryImplementation = usersRepositoryImplementation; this.vaultConfiguration = vaultConfiguration; this.jmapEnabled = jmapEnabled; + this.quotaCompatibilityMode = quotaCompatibilityMode; } @Override @@ -210,4 +227,8 @@ public class CassandraJamesServerConfiguration implements Configuration { public boolean isJmapEnabled() { return jmapEnabled; } + + public boolean isQuotaCompatibilityMode() { + return quotaCompatibilityMode; + } } diff --git a/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java b/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java index 1f9913b770..ae230f2495 100644 --- a/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java +++ b/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java @@ -50,6 +50,7 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { private Optional<UsersRepositoryModuleChooser.Implementation> usersRepositoryImplementation; private Optional<VaultConfiguration> vaultConfiguration; private Optional<Boolean> jmapEnabled; + private Optional<Boolean> quotaCompatibilityMode; private Builder() { searchConfiguration = Optional.empty(); @@ -60,6 +61,7 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { mailQueueViewChoice = Optional.empty(); vaultConfiguration = Optional.empty(); jmapEnabled = Optional.empty(); + quotaCompatibilityMode = Optional.empty(); } public Builder workingDirectory(String path) { @@ -120,6 +122,11 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { return this; } + public Builder quotaCompatibilityModeEnabled(boolean value) { + this.quotaCompatibilityMode = Optional.of(value); + return this; + } + public CassandraRabbitMQJamesConfiguration build() { ConfigurationPath configurationPath = this.configurationPath.orElse(new ConfigurationPath(FileSystem.FILE_PROTOCOL_AND_CONF)); JamesServerResourceLoader directories = new JamesServerResourceLoader(rootDirectory @@ -161,6 +168,14 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { } }); + boolean quotaCompatibilityMode = this.quotaCompatibilityMode.orElseGet(() -> { + try { + return configurationProvider.getConfiguration("cassandra").getBoolean("quota.compatibility.mode", false); + } catch (ConfigurationException e) { + return false; + } + }); + return new CassandraRabbitMQJamesConfiguration( configurationPath, directories, @@ -168,7 +183,8 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { searchConfiguration, usersRepositoryChoice, mailQueueViewChoice, vaultConfiguration, - jmapEnabled); + jmapEnabled, + quotaCompatibilityMode); } } @@ -184,8 +200,13 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { private final MailQueueViewChoice mailQueueViewChoice; private final VaultConfiguration vaultConfiguration; private final boolean jmapEnabled; + private final boolean quotaCompatibilityMode; - public CassandraRabbitMQJamesConfiguration(ConfigurationPath configurationPath, JamesDirectoriesProvider directories, BlobStoreConfiguration blobStoreConfiguration, SearchConfiguration searchConfiguration, UsersRepositoryModuleChooser.Implementation usersRepositoryImplementation, MailQueueViewChoice mailQueueViewChoice, VaultConfiguration vaultConfiguration, boolean jmapEnabled) { + public CassandraRabbitMQJamesConfiguration(ConfigurationPath configurationPath, JamesDirectoriesProvider directories, + BlobStoreConfiguration blobStoreConfiguration, SearchConfiguration searchConfiguration, + UsersRepositoryModuleChooser.Implementation usersRepositoryImplementation, + MailQueueViewChoice mailQueueViewChoice, VaultConfiguration vaultConfiguration, + boolean jmapEnabled, boolean quotaCompatibilityMode) { this.configurationPath = configurationPath; this.directories = directories; this.blobStoreConfiguration = blobStoreConfiguration; @@ -194,6 +215,7 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { this.mailQueueViewChoice = mailQueueViewChoice; this.vaultConfiguration = vaultConfiguration; this.jmapEnabled = jmapEnabled; + this.quotaCompatibilityMode = quotaCompatibilityMode; } public MailQueueViewChoice getMailQueueViewChoice() { @@ -229,4 +251,8 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { public boolean isJmapEnabled() { return jmapEnabled; } + + public boolean isQuotaCompatibilityMode() { + return quotaCompatibilityMode; + } } diff --git a/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesConfiguration.java b/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesConfiguration.java index 138aa4c135..6264d1bd61 100644 --- a/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesConfiguration.java +++ b/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesConfiguration.java @@ -47,6 +47,7 @@ public class DistributedPOP3JamesConfiguration implements Configuration { private Optional<UsersRepositoryModuleChooser.Implementation> usersRepositoryImplementation; private Optional<MailQueueViewChoice> mailQueueViewChoice; private Optional<VaultConfiguration> vaultConfiguration; + private Optional<Boolean> quotaCompatibilityMode; private Builder() { searchConfiguration = Optional.empty(); @@ -56,6 +57,7 @@ public class DistributedPOP3JamesConfiguration implements Configuration { usersRepositoryImplementation = Optional.empty(); mailQueueViewChoice = Optional.empty(); vaultConfiguration = Optional.empty(); + quotaCompatibilityMode = Optional.empty(); } public Builder workingDirectory(String path) { @@ -107,6 +109,11 @@ public class DistributedPOP3JamesConfiguration implements Configuration { return this; } + public Builder quotaCompatibilityMode(boolean value) { + this.quotaCompatibilityMode = Optional.of(value); + return this; + } + public DistributedPOP3JamesConfiguration build() { ConfigurationPath configurationPath = this.configurationPath.orElse(new ConfigurationPath(FileSystem.FILE_PROTOCOL_AND_CONF)); JamesServerResourceLoader directories = new JamesServerResourceLoader(rootDirectory @@ -139,13 +146,23 @@ public class DistributedPOP3JamesConfiguration implements Configuration { } }); + boolean quotaCompatibilityMode = this.quotaCompatibilityMode.orElseGet(() -> { + try { + return configurationProvider.getConfiguration("cassandra").getBoolean("quota.compatibility.mode", false); + } catch (ConfigurationException e) { + return false; + } + }); + return new DistributedPOP3JamesConfiguration( configurationPath, directories, blobStoreConfiguration, searchConfiguration, usersRepositoryChoice, - mailQueueViewChoice, vaultConfiguration); + mailQueueViewChoice, + vaultConfiguration, + quotaCompatibilityMode); } } @@ -160,8 +177,13 @@ public class DistributedPOP3JamesConfiguration implements Configuration { private final UsersRepositoryModuleChooser.Implementation usersRepositoryImplementation; private final MailQueueViewChoice mailQueueViewChoice; private final VaultConfiguration vaultConfiguration; + private final boolean quotaCompatibilityMode; - public DistributedPOP3JamesConfiguration(ConfigurationPath configurationPath, JamesDirectoriesProvider directories, BlobStoreConfiguration blobStoreConfiguration, SearchConfiguration searchConfiguration, UsersRepositoryModuleChooser.Implementation usersRepositoryImplementation, MailQueueViewChoice mailQueueViewChoice, VaultConfiguration vaultConfiguration) { + public DistributedPOP3JamesConfiguration(ConfigurationPath configurationPath, JamesDirectoriesProvider directories, + BlobStoreConfiguration blobStoreConfiguration, SearchConfiguration searchConfiguration, + UsersRepositoryModuleChooser.Implementation usersRepositoryImplementation, + MailQueueViewChoice mailQueueViewChoice, VaultConfiguration vaultConfiguration, + boolean quotaCompatibilityMode) { this.configurationPath = configurationPath; this.directories = directories; this.blobStoreConfiguration = blobStoreConfiguration; @@ -169,6 +191,7 @@ public class DistributedPOP3JamesConfiguration implements Configuration { this.usersRepositoryImplementation = usersRepositoryImplementation; this.mailQueueViewChoice = mailQueueViewChoice; this.vaultConfiguration = vaultConfiguration; + this.quotaCompatibilityMode = quotaCompatibilityMode; } public MailQueueViewChoice getMailQueueViewChoice() { @@ -200,4 +223,8 @@ public class DistributedPOP3JamesConfiguration implements Configuration { public VaultConfiguration getVaultConfiguration() { return vaultConfiguration; } + + public boolean isQuotaCompatibilityMode() { + return quotaCompatibilityMode; + } } --------------------------------------------------------------------- To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org For additional commands, e-mail: notifications-h...@james.apache.org