in server/apps/migration/core-data-jpa-to-pg/src/main/java/org/apache/james/MigrationConfiguration.java [37:126]
public record MigrationConfiguration(
ConfigurationPath configurationPath,
JamesDirectoriesProvider directories,
BlobStoreConfiguration blobStoreConfiguration
) implements Configuration {
private static final BlobStoreConfiguration.BlobStoreImplName DEFAULT_BLOB_STORE = BlobStoreConfiguration.BlobStoreImplName.POSTGRES;
public static class Builder {
private Optional<String> rootDirectory;
private Optional<ConfigurationPath> configurationPath;
private Optional<BlobStoreConfiguration> blobStoreConfiguration;
private Builder() {
rootDirectory = Optional.empty();
configurationPath = Optional.empty();
blobStoreConfiguration = Optional.empty();
}
public Builder workingDirectory(String path) {
rootDirectory = Optional.of(path);
return this;
}
public Builder workingDirectory(File file) {
rootDirectory = Optional.of(file.getAbsolutePath());
return this;
}
public Builder useWorkingDirectoryEnvProperty() {
rootDirectory = Optional.ofNullable(System.getProperty(WORKING_DIRECTORY));
if (rootDirectory.isEmpty()) {
throw new MissingArgumentException("Server needs a working.directory env entry");
}
return this;
}
public Builder configurationPath(ConfigurationPath path) {
configurationPath = Optional.of(path);
return this;
}
public Builder configurationFromClasspath() {
configurationPath = Optional.of(new ConfigurationPath(FileSystem.CLASSPATH_PROTOCOL));
return this;
}
public MigrationConfiguration 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, DEFAULT_BLOB_STORE)
)
);
return new MigrationConfiguration(configurationPath, directories, blobStoreConfiguration);
}
public Builder blobStore(BlobStoreConfiguration blobStoreConfiguration) {
this.blobStoreConfiguration = Optional.of(blobStoreConfiguration);
return this;
}
}
static MigrationConfiguration.Builder builder() {
return new Builder();
}
@Override
public ConfigurationPath configurationPath() {
return configurationPath;
}
@Override
public JamesDirectoriesProvider directories() {
return directories;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("configurationPath", configurationPath)
.add("directories", directories)
.add("blobStoreConfiguration", blobStoreConfiguration)
.toString();
}
}