You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2023/09/01 09:33:44 UTC
[james-project] 06/14: JAMES-3926 Configuration for quota compatibility mode
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 df1675b7b6cb8ce7ac81307341190ba5dd23a16d
Author: Benoit TELLIER <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org