diff --git a/extensions/agroal/runtime/src/main/java/io/quarkus/agroal/runtime/AgroalVaultCredentialsProviderPassword.java b/extensions/agroal/runtime/src/main/java/io/quarkus/agroal/runtime/AgroalVaultCredentialsProviderPassword.java index 6f094922a5ba8..9df1182868862 100644 --- a/extensions/agroal/runtime/src/main/java/io/quarkus/agroal/runtime/AgroalVaultCredentialsProviderPassword.java +++ b/extensions/agroal/runtime/src/main/java/io/quarkus/agroal/runtime/AgroalVaultCredentialsProviderPassword.java @@ -18,7 +18,7 @@ public AgroalVaultCredentialsProviderPassword(String credentialsProviderName, Cr @Override public Properties asProperties() { Properties properties = new Properties(); - Map credentials = credentialsProvider.getCredentials(getWord()); + Map credentials = credentialsProvider.getCredentialsAsync(getWord()).await().indefinitely(); credentials.forEach((key, value) -> properties.setProperty(key, value)); return properties; } diff --git a/extensions/credentials/runtime/src/main/java/io/quarkus/credentials/CredentialsProvider.java b/extensions/credentials/runtime/src/main/java/io/quarkus/credentials/CredentialsProvider.java index f5e422500a184..0dea4a46e5246 100644 --- a/extensions/credentials/runtime/src/main/java/io/quarkus/credentials/CredentialsProvider.java +++ b/extensions/credentials/runtime/src/main/java/io/quarkus/credentials/CredentialsProvider.java @@ -2,8 +2,16 @@ import java.util.Map; +import io.smallrye.mutiny.Uni; +import io.smallrye.mutiny.infrastructure.Infrastructure; + /** * Provides an indirection between credentials consumers such as Agroal and implementers such as Vault. + *

+ * Quarkus extensions MUST invoke the asynchronous variant. that is {@link #getCredentialsAsync(String)}. + *

+ * The default implementation of asynchronous variant invokes the synchronous {@link #getCredentials(String)} on a worker + * thread. */ public interface CredentialsProvider { @@ -12,11 +20,23 @@ public interface CredentialsProvider { String EXPIRATION_TIMESTAMP_PROPERTY_NAME = "expires-at"; /** - * Returns the credentials for a given credentials provider + * Returns the credentials for a given credentials provider. * * @param credentialsProviderName the name of the credentials provider, which can be used to retrieve custom configuration * @return the credentials */ - Map getCredentials(String credentialsProviderName); + default Map getCredentials(String credentialsProviderName) { + throw new UnsupportedOperationException("Either `getCredentials` or `getCredentialsAsync` must be implemented`"); + } + /** + * Returns the credentials for a given credentials provider. + * + * @param credentialsProviderName the name of the credentials provider, which can be used to retrieve custom configuration + * @return a {@link Uni} completed with the credentials, or failed + */ + default Uni> getCredentialsAsync(String credentialsProviderName) { + return Uni.createFrom().item(() -> getCredentials(credentialsProviderName)) + .runSubscriptionOn(Infrastructure.getDefaultExecutor()); + } } diff --git a/extensions/mongodb-client/runtime/src/main/java/io/quarkus/mongodb/runtime/MongoClients.java b/extensions/mongodb-client/runtime/src/main/java/io/quarkus/mongodb/runtime/MongoClients.java index 62c4949ae6ab7..3fe107cce3614 100644 --- a/extensions/mongodb-client/runtime/src/main/java/io/quarkus/mongodb/runtime/MongoClients.java +++ b/extensions/mongodb-client/runtime/src/main/java/io/quarkus/mongodb/runtime/MongoClients.java @@ -527,7 +527,7 @@ private UsernamePassword determineUserNamePassword(CredentialConfig config) { String beanName = config.credentialsProviderName().orElse(null); CredentialsProvider credentialsProvider = CredentialsProviderFinder.find(beanName); String name = config.credentialsProvider().get(); - Map credentials = credentialsProvider.getCredentials(name); + Map credentials = credentialsProvider.getCredentialsAsync(name).await().indefinitely(); String user = credentials.get(USER_PROPERTY_NAME); String password = credentials.get(PASSWORD_PROPERTY_NAME); return new UsernamePassword(user, password.toCharArray()); diff --git a/extensions/oidc-common/runtime/src/main/java/io/quarkus/oidc/common/runtime/OidcCommonUtils.java b/extensions/oidc-common/runtime/src/main/java/io/quarkus/oidc/common/runtime/OidcCommonUtils.java index d8a1f7921be4c..dec02b3a22bee 100644 --- a/extensions/oidc-common/runtime/src/main/java/io/quarkus/oidc/common/runtime/OidcCommonUtils.java +++ b/extensions/oidc-common/runtime/src/main/java/io/quarkus/oidc/common/runtime/OidcCommonUtils.java @@ -393,6 +393,7 @@ public String get() { String providerName = provider.name().orElse(null); String keyringName = provider.keyringName().orElse(null); CredentialsProvider credentialsProvider = CredentialsProviderFinder.find(providerName); + // getCredentials invocation may block the event loop return credentialsProvider.getCredentials(keyringName).get(provider.key().get()); } return null; diff --git a/extensions/reactive-datasource/runtime/src/main/java/io/quarkus/reactive/datasource/runtime/ConnectOptionsSupplier.java b/extensions/reactive-datasource/runtime/src/main/java/io/quarkus/reactive/datasource/runtime/ConnectOptionsSupplier.java index f54209887a1d7..65196bce2b29a 100644 --- a/extensions/reactive-datasource/runtime/src/main/java/io/quarkus/reactive/datasource/runtime/ConnectOptionsSupplier.java +++ b/extensions/reactive-datasource/runtime/src/main/java/io/quarkus/reactive/datasource/runtime/ConnectOptionsSupplier.java @@ -4,63 +4,45 @@ import static io.quarkus.credentials.CredentialsProvider.USER_PROPERTY_NAME; import java.util.List; -import java.util.Map; -import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicInteger; -import java.util.function.IntUnaryOperator; import java.util.function.Supplier; import java.util.function.UnaryOperator; import io.quarkus.credentials.CredentialsProvider; +import io.smallrye.mutiny.Uni; +import io.smallrye.mutiny.vertx.UniHelper; import io.vertx.core.Future; -import io.vertx.core.Vertx; import io.vertx.sqlclient.SqlConnectOptions; public class ConnectOptionsSupplier implements Supplier> { - private final Vertx vertx; private final CredentialsProvider credentialsProvider; private final String credentialsProviderName; private final List connectOptionsList; private final UnaryOperator connectOptionsCopy; - private final Callable blockingCodeHandler; + private final AtomicInteger idx = new AtomicInteger(); - public ConnectOptionsSupplier(Vertx vertx, CredentialsProvider credentialsProvider, String credentialsProviderName, + public ConnectOptionsSupplier(CredentialsProvider credentialsProvider, String credentialsProviderName, List connectOptionsList, UnaryOperator connectOptionsCopy) { - this.vertx = vertx; this.credentialsProvider = credentialsProvider; this.credentialsProviderName = credentialsProviderName; this.connectOptionsList = connectOptionsList; this.connectOptionsCopy = connectOptionsCopy; - this.blockingCodeHandler = new BlockingCodeHandler(); } @Override public Future get() { - return vertx.executeBlocking(blockingCodeHandler, false); - } - - private class BlockingCodeHandler implements Callable, IntUnaryOperator { - - final AtomicInteger idx = new AtomicInteger(); - - @Override - public CO call() { - Map credentials = credentialsProvider.getCredentials(credentialsProviderName); - String user = credentials.get(USER_PROPERTY_NAME); - String password = credentials.get(PASSWORD_PROPERTY_NAME); - - int nextIdx = idx.getAndUpdate(this); - - CO connectOptions = connectOptionsCopy.apply(connectOptionsList.get(nextIdx)); - connectOptions.setUser(user).setPassword(password); - - return connectOptions; - } - - @Override - public int applyAsInt(int previousIdx) { - return previousIdx == connectOptionsList.size() - 1 ? 0 : previousIdx + 1; - } + int nextIdx = idx.getAndUpdate(previousIdx -> previousIdx == connectOptionsList.size() - 1 ? 0 : previousIdx + 1); + CO connectOptions = connectOptionsCopy.apply(connectOptionsList.get(nextIdx)); + return Uni.combine() + .all() + .unis(credentialsProvider.getCredentialsAsync(credentialsProviderName), Uni.createFrom().item(connectOptions)) + .with((credentials, co) -> { + co.setUser(credentials.get(USER_PROPERTY_NAME)); + co.setPassword(credentials.get(PASSWORD_PROPERTY_NAME)); + return co; + }) + .convert() + .with(UniHelper::toFuture); } } diff --git a/extensions/reactive-db2-client/runtime/src/main/java/io/quarkus/reactive/db2/client/runtime/DB2PoolRecorder.java b/extensions/reactive-db2-client/runtime/src/main/java/io/quarkus/reactive/db2/client/runtime/DB2PoolRecorder.java index 0e4fe73c40099..f2a5c049e2f7a 100644 --- a/extensions/reactive-db2-client/runtime/src/main/java/io/quarkus/reactive/db2/client/runtime/DB2PoolRecorder.java +++ b/extensions/reactive-db2-client/runtime/src/main/java/io/quarkus/reactive/db2/client/runtime/DB2PoolRecorder.java @@ -126,19 +126,19 @@ private DB2Pool initialize(VertxInternal vertx, PoolOptions poolOptions = toPoolOptions(eventLoopCount, dataSourceReactiveRuntimeConfig); DB2ConnectOptions db2ConnectOptions = toConnectOptions(dataSourceName, dataSourceRuntimeConfig, dataSourceReactiveRuntimeConfig, dataSourceReactiveDB2Config); - Supplier> databasesSupplier = toDatabasesSupplier(vertx, List.of(db2ConnectOptions), + Supplier> databasesSupplier = toDatabasesSupplier(List.of(db2ConnectOptions), dataSourceRuntimeConfig); return createPool(vertx, poolOptions, db2ConnectOptions, dataSourceName, databasesSupplier, context); } - private Supplier> toDatabasesSupplier(Vertx vertx, List db2ConnectOptionsList, + private Supplier> toDatabasesSupplier(List db2ConnectOptionsList, DataSourceRuntimeConfig dataSourceRuntimeConfig) { Supplier> supplier; if (dataSourceRuntimeConfig.credentialsProvider().isPresent()) { String beanName = dataSourceRuntimeConfig.credentialsProviderName().orElse(null); CredentialsProvider credentialsProvider = CredentialsProviderFinder.find(beanName); String name = dataSourceRuntimeConfig.credentialsProvider().get(); - supplier = new ConnectOptionsSupplier<>(vertx, credentialsProvider, name, db2ConnectOptionsList, + supplier = new ConnectOptionsSupplier<>(credentialsProvider, name, db2ConnectOptionsList, DB2ConnectOptions::new); } else { supplier = Utils.roundRobinSupplier(db2ConnectOptionsList); @@ -212,7 +212,7 @@ private DB2ConnectOptions toConnectOptions(String dataSourceName, DataSourceRunt String beanName = dataSourceRuntimeConfig.credentialsProviderName().orElse(null); CredentialsProvider credentialsProvider = CredentialsProviderFinder.find(beanName); String name = dataSourceRuntimeConfig.credentialsProvider().get(); - Map credentials = credentialsProvider.getCredentials(name); + Map credentials = credentialsProvider.getCredentialsAsync(name).await().indefinitely(); String user = credentials.get(USER_PROPERTY_NAME); String password = credentials.get(PASSWORD_PROPERTY_NAME); if (user != null) { diff --git a/extensions/reactive-mssql-client/runtime/src/main/java/io/quarkus/reactive/mssql/client/runtime/MSSQLPoolRecorder.java b/extensions/reactive-mssql-client/runtime/src/main/java/io/quarkus/reactive/mssql/client/runtime/MSSQLPoolRecorder.java index c59bbb83737ef..11b760adfae65 100644 --- a/extensions/reactive-mssql-client/runtime/src/main/java/io/quarkus/reactive/mssql/client/runtime/MSSQLPoolRecorder.java +++ b/extensions/reactive-mssql-client/runtime/src/main/java/io/quarkus/reactive/mssql/client/runtime/MSSQLPoolRecorder.java @@ -124,20 +124,19 @@ private MSSQLPool initialize(VertxInternal vertx, PoolOptions poolOptions = toPoolOptions(eventLoopCount, dataSourceReactiveRuntimeConfig); MSSQLConnectOptions mssqlConnectOptions = toMSSQLConnectOptions(dataSourceName, dataSourceRuntimeConfig, dataSourceReactiveRuntimeConfig, dataSourceReactiveMSSQLConfig); - Supplier> databasesSupplier = toDatabasesSupplier(vertx, List.of(mssqlConnectOptions), + Supplier> databasesSupplier = toDatabasesSupplier(List.of(mssqlConnectOptions), dataSourceRuntimeConfig); return createPool(vertx, poolOptions, mssqlConnectOptions, dataSourceName, databasesSupplier, context); } - private Supplier> toDatabasesSupplier(Vertx vertx, - List mssqlConnectOptionsList, + private Supplier> toDatabasesSupplier(List mssqlConnectOptionsList, DataSourceRuntimeConfig dataSourceRuntimeConfig) { Supplier> supplier; if (dataSourceRuntimeConfig.credentialsProvider().isPresent()) { String beanName = dataSourceRuntimeConfig.credentialsProviderName().orElse(null); CredentialsProvider credentialsProvider = CredentialsProviderFinder.find(beanName); String name = dataSourceRuntimeConfig.credentialsProvider().get(); - supplier = new ConnectOptionsSupplier<>(vertx, credentialsProvider, name, mssqlConnectOptionsList, + supplier = new ConnectOptionsSupplier<>(credentialsProvider, name, mssqlConnectOptionsList, MSSQLConnectOptions::new); } else { supplier = Utils.roundRobinSupplier(mssqlConnectOptionsList); @@ -214,7 +213,7 @@ private MSSQLConnectOptions toMSSQLConnectOptions(String dataSourceName, DataSou String beanName = dataSourceRuntimeConfig.credentialsProviderName().orElse(null); CredentialsProvider credentialsProvider = CredentialsProviderFinder.find(beanName); String name = dataSourceRuntimeConfig.credentialsProvider().get(); - Map credentials = credentialsProvider.getCredentials(name); + Map credentials = credentialsProvider.getCredentialsAsync(name).await().indefinitely(); String user = credentials.get(USER_PROPERTY_NAME); String password = credentials.get(PASSWORD_PROPERTY_NAME); if (user != null) { diff --git a/extensions/reactive-mysql-client/runtime/src/main/java/io/quarkus/reactive/mysql/client/runtime/MySQLPoolRecorder.java b/extensions/reactive-mysql-client/runtime/src/main/java/io/quarkus/reactive/mysql/client/runtime/MySQLPoolRecorder.java index 72f0b60369e61..3e6f2920557b7 100644 --- a/extensions/reactive-mysql-client/runtime/src/main/java/io/quarkus/reactive/mysql/client/runtime/MySQLPoolRecorder.java +++ b/extensions/reactive-mysql-client/runtime/src/main/java/io/quarkus/reactive/mysql/client/runtime/MySQLPoolRecorder.java @@ -127,20 +127,19 @@ private MySQLPool initialize(VertxInternal vertx, dataSourceReactiveMySQLConfig); List mySQLConnectOptions = toMySQLConnectOptions(dataSourceName, dataSourceRuntimeConfig, dataSourceReactiveRuntimeConfig, dataSourceReactiveMySQLConfig); - Supplier> databasesSupplier = toDatabasesSupplier(vertx, mySQLConnectOptions, + Supplier> databasesSupplier = toDatabasesSupplier(mySQLConnectOptions, dataSourceRuntimeConfig); return createPool(vertx, poolOptions, mySQLConnectOptions, dataSourceName, databasesSupplier, context); } - private Supplier> toDatabasesSupplier(Vertx vertx, - List mySQLConnectOptions, + private Supplier> toDatabasesSupplier(List mySQLConnectOptions, DataSourceRuntimeConfig dataSourceRuntimeConfig) { Supplier> supplier; if (dataSourceRuntimeConfig.credentialsProvider().isPresent()) { String beanName = dataSourceRuntimeConfig.credentialsProviderName().orElse(null); CredentialsProvider credentialsProvider = CredentialsProviderFinder.find(beanName); String name = dataSourceRuntimeConfig.credentialsProvider().get(); - supplier = new ConnectOptionsSupplier<>(vertx, credentialsProvider, name, mySQLConnectOptions, + supplier = new ConnectOptionsSupplier<>(credentialsProvider, name, mySQLConnectOptions, MySQLConnectOptions::new); } else { supplier = Utils.roundRobinSupplier(mySQLConnectOptions); @@ -215,7 +214,7 @@ private List toMySQLConnectOptions(String dataSourceName, String beanName = dataSourceRuntimeConfig.credentialsProviderName().orElse(null); CredentialsProvider credentialsProvider = CredentialsProviderFinder.find(beanName); String name = dataSourceRuntimeConfig.credentialsProvider().get(); - Map credentials = credentialsProvider.getCredentials(name); + Map credentials = credentialsProvider.getCredentialsAsync(name).await().indefinitely(); String user = credentials.get(USER_PROPERTY_NAME); String password = credentials.get(PASSWORD_PROPERTY_NAME); if (user != null) { diff --git a/extensions/reactive-oracle-client/runtime/src/main/java/io/quarkus/reactive/oracle/client/runtime/OraclePoolRecorder.java b/extensions/reactive-oracle-client/runtime/src/main/java/io/quarkus/reactive/oracle/client/runtime/OraclePoolRecorder.java index 10a656bdce62c..8fb45c1e503d9 100644 --- a/extensions/reactive-oracle-client/runtime/src/main/java/io/quarkus/reactive/oracle/client/runtime/OraclePoolRecorder.java +++ b/extensions/reactive-oracle-client/runtime/src/main/java/io/quarkus/reactive/oracle/client/runtime/OraclePoolRecorder.java @@ -119,20 +119,19 @@ private OraclePool initialize(VertxInternal vertx, PoolOptions poolOptions = toPoolOptions(eventLoopCount, dataSourceReactiveRuntimeConfig); OracleConnectOptions oracleConnectOptions = toOracleConnectOptions(dataSourceName, dataSourceRuntimeConfig, dataSourceReactiveRuntimeConfig, dataSourceReactiveOracleConfig); - Supplier> databasesSupplier = toDatabasesSupplier(vertx, List.of(oracleConnectOptions), + Supplier> databasesSupplier = toDatabasesSupplier(List.of(oracleConnectOptions), dataSourceRuntimeConfig); return createPool(vertx, poolOptions, oracleConnectOptions, dataSourceName, databasesSupplier, context); } - private Supplier> toDatabasesSupplier(Vertx vertx, - List oracleConnectOptions, + private Supplier> toDatabasesSupplier(List oracleConnectOptions, DataSourceRuntimeConfig dataSourceRuntimeConfig) { Supplier> supplier; if (dataSourceRuntimeConfig.credentialsProvider().isPresent()) { String beanName = dataSourceRuntimeConfig.credentialsProviderName().orElse(null); CredentialsProvider credentialsProvider = CredentialsProviderFinder.find(beanName); String name = dataSourceRuntimeConfig.credentialsProvider().get(); - supplier = new ConnectOptionsSupplier<>(vertx, credentialsProvider, name, oracleConnectOptions, + supplier = new ConnectOptionsSupplier<>(credentialsProvider, name, oracleConnectOptions, OracleConnectOptions::new); } else { supplier = Utils.roundRobinSupplier(oracleConnectOptions); @@ -205,7 +204,7 @@ private OracleConnectOptions toOracleConnectOptions(String dataSourceName, DataS String beanName = dataSourceRuntimeConfig.credentialsProviderName().orElse(null); CredentialsProvider credentialsProvider = CredentialsProviderFinder.find(beanName); String name = dataSourceRuntimeConfig.credentialsProvider().get(); - Map credentials = credentialsProvider.getCredentials(name); + Map credentials = credentialsProvider.getCredentialsAsync(name).await().indefinitely(); String user = credentials.get(USER_PROPERTY_NAME); String password = credentials.get(PASSWORD_PROPERTY_NAME); if (user != null) { diff --git a/extensions/reactive-pg-client/runtime/src/main/java/io/quarkus/reactive/pg/client/runtime/PgPoolRecorder.java b/extensions/reactive-pg-client/runtime/src/main/java/io/quarkus/reactive/pg/client/runtime/PgPoolRecorder.java index 97ff2a9defef3..19a140d8bed4e 100644 --- a/extensions/reactive-pg-client/runtime/src/main/java/io/quarkus/reactive/pg/client/runtime/PgPoolRecorder.java +++ b/extensions/reactive-pg-client/runtime/src/main/java/io/quarkus/reactive/pg/client/runtime/PgPoolRecorder.java @@ -125,19 +125,19 @@ private PgPool initialize(VertxInternal vertx, PoolOptions poolOptions = toPoolOptions(eventLoopCount, dataSourceReactiveRuntimeConfig); List pgConnectOptionsList = toPgConnectOptions(dataSourceName, dataSourceRuntimeConfig, dataSourceReactiveRuntimeConfig, dataSourceReactivePostgreSQLConfig); - Supplier> databasesSupplier = toDatabasesSupplier(vertx, pgConnectOptionsList, + Supplier> databasesSupplier = toDatabasesSupplier(pgConnectOptionsList, dataSourceRuntimeConfig); return createPool(vertx, poolOptions, pgConnectOptionsList, dataSourceName, databasesSupplier, context); } - private Supplier> toDatabasesSupplier(Vertx vertx, List pgConnectOptionsList, + private Supplier> toDatabasesSupplier(List pgConnectOptionsList, DataSourceRuntimeConfig dataSourceRuntimeConfig) { Supplier> supplier; if (dataSourceRuntimeConfig.credentialsProvider().isPresent()) { String beanName = dataSourceRuntimeConfig.credentialsProviderName().orElse(null); CredentialsProvider credentialsProvider = CredentialsProviderFinder.find(beanName); String name = dataSourceRuntimeConfig.credentialsProvider().get(); - supplier = new ConnectOptionsSupplier<>(vertx, credentialsProvider, name, pgConnectOptionsList, + supplier = new ConnectOptionsSupplier<>(credentialsProvider, name, pgConnectOptionsList, PgConnectOptions::new); } else { supplier = Utils.roundRobinSupplier(pgConnectOptionsList); @@ -206,7 +206,7 @@ private List toPgConnectOptions(String dataSourceName, DataSou String beanName = dataSourceRuntimeConfig.credentialsProviderName().orElse(null); CredentialsProvider credentialsProvider = CredentialsProviderFinder.find(beanName); String name = dataSourceRuntimeConfig.credentialsProvider().get(); - Map credentials = credentialsProvider.getCredentials(name); + Map credentials = credentialsProvider.getCredentialsAsync(name).await().indefinitely(); String user = credentials.get(USER_PROPERTY_NAME); String password = credentials.get(PASSWORD_PROPERTY_NAME); if (user != null) { diff --git a/extensions/smallrye-reactive-messaging-rabbitmq/runtime/src/main/java/io/quarkus/smallrye/reactivemessaging/rabbitmq/runtime/CredentialsProviderLink.java b/extensions/smallrye-reactive-messaging-rabbitmq/runtime/src/main/java/io/quarkus/smallrye/reactivemessaging/rabbitmq/runtime/CredentialsProviderLink.java index 320d1113f25b8..9caf5a4c51e70 100644 --- a/extensions/smallrye-reactive-messaging-rabbitmq/runtime/src/main/java/io/quarkus/smallrye/reactivemessaging/rabbitmq/runtime/CredentialsProviderLink.java +++ b/extensions/smallrye-reactive-messaging-rabbitmq/runtime/src/main/java/io/quarkus/smallrye/reactivemessaging/rabbitmq/runtime/CredentialsProviderLink.java @@ -50,7 +50,8 @@ public Duration getTimeBeforeExpiration() { @Override public void refresh() { - Map credentials = credentialsProvider.getCredentials(credentialsProviderName); + Map credentials = credentialsProvider.getCredentialsAsync(credentialsProviderName).await() + .indefinitely(); username = credentials.get(USER_PROPERTY_NAME); password = credentials.get(PASSWORD_PROPERTY_NAME); expiresAt = Instant.parse(credentials.getOrDefault(EXPIRATION_TIMESTAMP_PROPERTY_NAME, getDefaultExpiresAt())); diff --git a/extensions/tls-registry/runtime/src/main/java/io/quarkus/tls/runtime/keystores/CredentialProviders.java b/extensions/tls-registry/runtime/src/main/java/io/quarkus/tls/runtime/keystores/CredentialProviders.java index 60bdeab4b0620..59b19bd8ad894 100644 --- a/extensions/tls-registry/runtime/src/main/java/io/quarkus/tls/runtime/keystores/CredentialProviders.java +++ b/extensions/tls-registry/runtime/src/main/java/io/quarkus/tls/runtime/keystores/CredentialProviders.java @@ -21,7 +21,7 @@ public static Optional getKeyStorePassword(Optional maybePasswor } if (config.name().isPresent()) { CredentialsProvider provider = lookup(config.beanName().orElse(null)); - Map credentials = provider.getCredentials(config.name().get()); + Map credentials = provider.getCredentialsAsync(config.name().get()).await().indefinitely(); return Optional.ofNullable(credentials.get(config.passwordKey())); } return Optional.empty(); @@ -34,7 +34,7 @@ public static Optional getAliasPassword(Optional maybePasswordFr } if (config.name().isPresent()) { CredentialsProvider provider = lookup(config.beanName().orElse(null)); - Map credentials = provider.getCredentials(config.name().get()); + Map credentials = provider.getCredentialsAsync(config.name().get()).await().indefinitely(); return Optional.ofNullable(credentials.get(config.aliasPasswordKey())); } return Optional.empty(); @@ -47,7 +47,7 @@ public static Optional getTrustStorePassword(Optional maybePassw } if (config.name().isPresent()) { CredentialsProvider provider = lookup(config.beanName().orElse(null)); - Map credentials = provider.getCredentials(config.name().get()); + Map credentials = provider.getCredentialsAsync(config.name().get()).await().indefinitely(); return Optional.ofNullable(credentials.get(config.passwordKey())); } return Optional.empty(); diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/options/HttpServerOptionsUtils.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/options/HttpServerOptionsUtils.java index 473e6b859e3de..59a287a94ed86 100644 --- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/options/HttpServerOptionsUtils.java +++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/options/HttpServerOptionsUtils.java @@ -136,7 +136,7 @@ private static void applySslConfigToHttpServerOptions(ServerSslConfig sslConfig, String beanName = sslConfig.certificate().credentialsProviderName().orElse(null); CredentialsProvider credentialsProvider = CredentialsProviderFinder.find(beanName); String name = sslConfig.certificate().credentialsProvider().get(); - credentials = credentialsProvider.getCredentials(name); + credentials = credentialsProvider.getCredentialsAsync(name).await().indefinitely(); } final Optional keyStorePassword = getCredential(sslConfig.certificate().keyStorePassword(), credentials,