diff --git a/core/common/util/src/main/java/org/eclipse/edc/util/configuration/ConfigurationFunctions.java b/core/common/util/src/main/java/org/eclipse/edc/util/configuration/ConfigurationFunctions.java index 1cb8a9f6b07..7ae2fd4d23a 100644 --- a/core/common/util/src/main/java/org/eclipse/edc/util/configuration/ConfigurationFunctions.java +++ b/core/common/util/src/main/java/org/eclipse/edc/util/configuration/ConfigurationFunctions.java @@ -26,11 +26,11 @@ public class ConfigurationFunctions { *

Naming conventions for keys are '[qualifier].[value]' in lower case. When checking for env variables, keys will be converted to uppercase and '.' replaced by '_'.

*/ public static String propOrEnv(String key, String defaultValue) { - String value = System.getProperty(key); + var value = System.getProperty(key); if (!StringUtils.isNullOrBlank(value)) { return value; } - String upperKey = key.toUpperCase().replace('.', '_'); + var upperKey = key.toUpperCase().replace('.', '_'); value = System.getenv(upperKey); if (!StringUtils.isNullOrBlank(value)) { return value; diff --git a/core/common/util/src/test/java/org/eclipse/edc/util/configuration/ConfigurationFunctionsTest.java b/core/common/util/src/test/java/org/eclipse/edc/util/configuration/ConfigurationFunctionsTest.java index bd6f1080e10..a1694c268b6 100644 --- a/core/common/util/src/test/java/org/eclipse/edc/util/configuration/ConfigurationFunctionsTest.java +++ b/core/common/util/src/test/java/org/eclipse/edc/util/configuration/ConfigurationFunctionsTest.java @@ -57,13 +57,13 @@ public void cleanUp() { @SetSystemProperty(key = SYS_PROP_2, value = "") @SetSystemProperty(key = SYS_PROP_3, value = " ") public void returnSystemProperty(String key, String expected) { - String resultValue = ConfigurationFunctions.propOrEnv(key, DEFAULT); + var resultValue = ConfigurationFunctions.propOrEnv(key, DEFAULT); assertThat(resultValue).isEqualTo(expected); } @Test public void returnDefaultEnv_NullValue() { - String resultValue = ConfigurationFunctions.propOrEnv("nonexistent", DEFAULT); + var resultValue = ConfigurationFunctions.propOrEnv("nonexistent", DEFAULT); assertThat(resultValue).isEqualTo(DEFAULT); } diff --git a/extensions/common/vault/vault-filesystem/src/main/java/org/eclipse/edc/vault/filesystem/FsVaultExtension.java b/extensions/common/vault/vault-filesystem/src/main/java/org/eclipse/edc/vault/filesystem/FsVaultExtension.java index 26e32a24d21..f28e11cabb3 100644 --- a/extensions/common/vault/vault-filesystem/src/main/java/org/eclipse/edc/vault/filesystem/FsVaultExtension.java +++ b/extensions/common/vault/vault-filesystem/src/main/java/org/eclipse/edc/vault/filesystem/FsVaultExtension.java @@ -16,6 +16,7 @@ import org.eclipse.edc.runtime.metamodel.annotation.BaseExtension; import org.eclipse.edc.runtime.metamodel.annotation.Extension; +import org.eclipse.edc.runtime.metamodel.annotation.Provider; import org.eclipse.edc.runtime.metamodel.annotation.Provides; import org.eclipse.edc.spi.EdcException; import org.eclipse.edc.spi.security.CertificateResolver; @@ -25,13 +26,11 @@ import org.eclipse.edc.spi.system.ServiceExtensionContext; import java.io.IOException; -import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Paths; import java.security.GeneralSecurityException; import java.security.KeyStore; -import static org.eclipse.edc.util.configuration.ConfigurationFunctions.propOrEnv; import static org.eclipse.edc.vault.filesystem.FsConfiguration.KEYSTORE_LOCATION; import static org.eclipse.edc.vault.filesystem.FsConfiguration.KEYSTORE_PASSWORD; import static org.eclipse.edc.vault.filesystem.FsConfiguration.PERSISTENT_VAULT; @@ -41,7 +40,7 @@ * Bootstraps the file system-based vault extension. */ @BaseExtension -@Provides({ Vault.class, PrivateKeyResolver.class, CertificateResolver.class }) +@Provides({ PrivateKeyResolver.class, CertificateResolver.class }) @Extension(value = FsVaultExtension.NAME) public class FsVaultExtension implements ServiceExtension { @@ -54,11 +53,8 @@ public String name() { @Override public void initialize(ServiceExtensionContext context) { - var vault = initializeVault(); - context.registerService(Vault.class, vault); - - KeyStore keyStore = loadKeyStore(); - var keystorePassword = propOrEnv(KEYSTORE_PASSWORD, null); + var keyStore = loadKeyStore(context); + var keystorePassword = context.getSetting(KEYSTORE_PASSWORD, null); var privateKeyResolver = new FsPrivateKeyResolver(keystorePassword, keyStore); context.registerService(PrivateKeyResolver.class, privateKeyResolver); @@ -66,30 +62,31 @@ public void initialize(ServiceExtensionContext context) { context.registerService(CertificateResolver.class, certificateResolver); } - private Vault initializeVault() { - var vaultLocation = propOrEnv(VAULT_LOCATION, "dataspaceconnector-vault.properties"); + @Provider + public Vault vault(ServiceExtensionContext context) { + var vaultLocation = context.getSetting(VAULT_LOCATION, "dataspaceconnector-vault.properties"); var vaultPath = Paths.get(vaultLocation); if (!Files.exists(vaultPath)) { throw new EdcException("Vault file does not exist: " + vaultLocation); } - var persistentVault = Boolean.parseBoolean(propOrEnv(PERSISTENT_VAULT, "true")); + var persistentVault = context.getSetting(PERSISTENT_VAULT, true); return new FsVault(vaultPath, persistentVault); } - private KeyStore loadKeyStore() { - var keyStoreLocation = propOrEnv(KEYSTORE_LOCATION, "dataspaceconnector-keystore.jks"); + private KeyStore loadKeyStore(ServiceExtensionContext context) { + var keyStoreLocation = context.getSetting(KEYSTORE_LOCATION, "dataspaceconnector-keystore.jks"); var keyStorePath = Paths.get(keyStoreLocation); if (!Files.exists(keyStorePath)) { throw new EdcException("Key store does not exist: " + keyStoreLocation); } - var keystorePassword = propOrEnv(KEYSTORE_PASSWORD, null); + var keystorePassword = context.getSetting(KEYSTORE_PASSWORD, null); if (keystorePassword == null) { throw new EdcException("Key store password was not specified"); } - try (InputStream stream = Files.newInputStream(keyStorePath)) { - KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + try (var stream = Files.newInputStream(keyStorePath)) { + var keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); keyStore.load(stream, keystorePassword.toCharArray()); return keyStore; } catch (IOException | GeneralSecurityException e) {