in server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java [144:221]
public CassandraRabbitMQJamesConfiguration build() {
ConfigurationPath configurationPath = this.configurationPath.orElse(new ConfigurationPath(FileSystem.FILE_PROTOCOL_AND_CONF));
JamesServerResourceLoader directories = new JamesServerResourceLoader(rootDirectory
.orElseThrow(() -> new MissingArgumentException("Server needs a working.directory env entry")));
FileSystemImpl fileSystem = new FileSystemImpl(directories);
PropertiesProvider propertiesProvider = new PropertiesProvider(fileSystem, configurationPath);
BlobStoreConfiguration blobStoreConfiguration = this.blobStoreConfiguration.orElseGet(Throwing.supplier(
() -> BlobStoreConfiguration.parse(propertiesProvider)));
SearchConfiguration searchConfiguration = this.searchConfiguration.orElseGet(Throwing.supplier(
() -> SearchConfiguration.parse(propertiesProvider)));
FileConfigurationProvider configurationProvider = new FileConfigurationProvider(fileSystem, Basic.builder()
.configurationPath(configurationPath)
.workingDirectory(directories.getRootDirectory())
.build());
UsersRepositoryModuleChooser.Implementation usersRepositoryChoice = usersRepositoryImplementation.orElseGet(
() -> UsersRepositoryModuleChooser.Implementation.parse(configurationProvider));
MailQueueViewChoice mailQueueViewChoice = this.mailQueueViewChoice.orElseGet(Throwing.supplier(
() -> MailQueueViewChoice.parse(propertiesProvider)));
MailQueueChoice mailQueueChoice = this.mailQueueChoice.orElseGet(Throwing.supplier(
() -> MailQueueChoice.parse(propertiesProvider)));
VaultConfiguration vaultConfiguration = this.vaultConfiguration.orElseGet(() -> {
try {
return VaultConfiguration.from(propertiesProvider.getConfiguration("deletedMessageVault"));
} catch (FileNotFoundException e) {
return VaultConfiguration.DEFAULT;
} catch (ConfigurationException e) {
throw new RuntimeException(e);
}
});
boolean jmapEnabled = this.jmapEnabled.orElseGet(() -> {
try {
return JMAPModule.parseConfiguration(propertiesProvider).isEnabled();
} catch (FileNotFoundException e) {
return false;
} catch (ConfigurationException e) {
throw new RuntimeException(e);
}
});
boolean quotaCompatibilityMode = this.quotaCompatibilityMode.orElseGet(() -> {
try {
return propertiesProvider.getConfiguration("cassandra").getBoolean("quota.compatibility.mode", false);
} catch (FileNotFoundException e) {
return false;
} catch (ConfigurationException e) {
throw new RuntimeException(e);
}
});
boolean dropListsEnabled = this.dropListsEnabled.orElseGet(() -> {
try {
return propertiesProvider.getConfiguration("droplists").getBoolean("enabled", false);
} catch (FileNotFoundException e) {
return false;
} catch (ConfigurationException e) {
throw new RuntimeException(e);
}
});
return new CassandraRabbitMQJamesConfiguration(
configurationPath,
directories,
blobStoreConfiguration,
searchConfiguration,
usersRepositoryChoice,
mailQueueChoice,
mailQueueViewChoice, vaultConfiguration,
jmapEnabled,
quotaCompatibilityMode,
dropListsEnabled);
}