diff --git a/spring-vault-core/src/main/java/org/springframework/vault/authentication/DefaultGcpCredentialAccessors.java b/spring-vault-core/src/main/java/org/springframework/vault/authentication/DefaultGcpCredentialAccessors.java index 96199c78..acb89847 100644 --- a/spring-vault-core/src/main/java/org/springframework/vault/authentication/DefaultGcpCredentialAccessors.java +++ b/spring-vault-core/src/main/java/org/springframework/vault/authentication/DefaultGcpCredentialAccessors.java @@ -18,7 +18,7 @@ package org.springframework.vault.authentication; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import org.springframework.util.Assert; -import org.springframework.util.StringUtils; +import org.springframework.util.ObjectUtils; /** * Default implementation of{@link GcpProjectIdAccessor} and @@ -34,7 +34,7 @@ enum DefaultGcpCredentialAccessors implements GcpProjectIdAccessor, GcpServiceAc INSTANCE; /** - * Get a the service account id (email) to be placed in the signed JWT. + * Get the service account id (email) to be placed in the signed JWT. * @param credential credential object to obtain the service account id from. * @return the service account id to use. */ @@ -49,7 +49,7 @@ enum DefaultGcpCredentialAccessors implements GcpProjectIdAccessor, GcpServiceAc } /** - * Get a the GCP project id to used in Google Cloud IAM API calls. + * Get the GCP project id to used in Google Cloud IAM API calls. * @param credential the credential object to obtain the project id from. * @return the service account id to use. */ @@ -58,7 +58,7 @@ enum DefaultGcpCredentialAccessors implements GcpProjectIdAccessor, GcpServiceAc Assert.notNull(credential, "GoogleCredential must not be null"); - return StringUtils.isEmpty(credential.getServiceAccountProjectId()) ? "-" + return ObjectUtils.isEmpty(credential.getServiceAccountProjectId()) ? "-" : credential.getServiceAccountProjectId(); } diff --git a/spring-vault-core/src/main/java/org/springframework/vault/client/ClientHttpConnectorFactory.java b/spring-vault-core/src/main/java/org/springframework/vault/client/ClientHttpConnectorFactory.java index df63b2a4..2920e931 100644 --- a/spring-vault-core/src/main/java/org/springframework/vault/client/ClientHttpConnectorFactory.java +++ b/spring-vault-core/src/main/java/org/springframework/vault/client/ClientHttpConnectorFactory.java @@ -25,10 +25,10 @@ import javax.net.ssl.SSLParameters; import io.netty.channel.ChannelOption; import io.netty.handler.ssl.SslContextBuilder; +import org.apache.hc.client5.http.config.ConnectionConfig; import org.apache.hc.client5.http.config.RequestConfig; import org.apache.hc.client5.http.impl.DefaultSchemePortResolver; import org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder; -import org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManager; import org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManagerBuilder; import org.apache.hc.client5.http.impl.routing.SystemDefaultRoutePlanner; import org.apache.hc.core5.http.nio.ssl.BasicClientTlsStrategy; @@ -54,10 +54,8 @@ import static org.springframework.vault.client.ClientHttpRequestFactoryFactory.* /** * Factory for {@link ClientHttpConnector} that supports - * {@link ReactorClientHttpConnector} and {@link JettyClientHttpConnector}. - * - * This factory configures a {@link ClientHttpConnector} depending on the available - * dependencies. + * {@link ReactorClientHttpConnector} and {@link JettyClientHttpConnector}. This factory + * configures a {@link ClientHttpConnector} depending on the available dependencies. * * @author Mark Paluch * @author Ryan Gow @@ -208,6 +206,24 @@ public class ClientHttpConnectorFactory { httpClientBuilder.setRoutePlanner( new SystemDefaultRoutePlanner(DefaultSchemePortResolver.INSTANCE, ProxySelector.getDefault())); + Timeout readTimeout = Timeout.ofMilliseconds(options.getReadTimeout().toMillis()); + Timeout connectTimeout = Timeout.ofMilliseconds(options.getConnectionTimeout().toMillis()); + + ConnectionConfig connectionConfig = ConnectionConfig.custom() + .setConnectTimeout(connectTimeout) // + .setSocketTimeout(readTimeout) // + .build(); + + RequestConfig requestConfig = RequestConfig.custom() + .setResponseTimeout(Timeout.ofMilliseconds(options.getReadTimeout().toMillis())) + .setAuthenticationEnabled(true) // + .setRedirectsEnabled(true) + .build(); + + PoolingAsyncClientConnectionManagerBuilder connectionManagerBuilder = PoolingAsyncClientConnectionManagerBuilder // + .create() + .setDefaultConnectionConfig(connectionConfig); + if (hasSslConfiguration(sslConfiguration)) { SSLContext sslContext = getSSLContext(sslConfiguration); @@ -229,21 +245,11 @@ public class ClientHttpConnectorFactory { } }, null); - PoolingAsyncClientConnectionManager connectionManager = PoolingAsyncClientConnectionManagerBuilder // - .create() - .setTlsStrategy(tlsStrategy) // - .build(); // - httpClientBuilder.setConnectionManager(connectionManager); + connectionManagerBuilder.setTlsStrategy(tlsStrategy); } - RequestConfig requestConfig = RequestConfig.custom() - .setConnectTimeout(Timeout.ofMilliseconds(options.getConnectionTimeout().toMillis())) - .setResponseTimeout(Timeout.ofMilliseconds(options.getReadTimeout().toMillis())) - .setAuthenticationEnabled(true) // - .setRedirectsEnabled(true) - .build(); - httpClientBuilder.setDefaultRequestConfig(requestConfig); + httpClientBuilder.setConnectionManager(connectionManagerBuilder.build()); return httpClientBuilder; } diff --git a/spring-vault-core/src/main/java/org/springframework/vault/repository/convert/MappingVaultConverter.java b/spring-vault-core/src/main/java/org/springframework/vault/repository/convert/MappingVaultConverter.java index e8f0e5e8..07268127 100644 --- a/spring-vault-core/src/main/java/org/springframework/vault/repository/convert/MappingVaultConverter.java +++ b/spring-vault-core/src/main/java/org/springframework/vault/repository/convert/MappingVaultConverter.java @@ -176,8 +176,7 @@ public class MappingVaultConverter extends AbstractVaultConverter { Object idValue; if (entity.requiresPropertyPopulation()) { - if (idProperty != null && !entity.isConstructorArgument(idProperty) - && documentAccessor.hasValue(idProperty)) { + if (idProperty != null && !entity.isCreatorArgument(idProperty) && documentAccessor.hasValue(idProperty)) { idValue = readIdValue(idProperty, documentAccessor); accessor.setProperty(idProperty, idValue); @@ -210,7 +209,7 @@ public class MappingVaultConverter extends AbstractVaultConverter { continue; } - if (entity.isConstructorArgument(prop) || !documentAccessor.hasValue(prop)) { + if (entity.isCreatorArgument(prop) || !documentAccessor.hasValue(prop)) { continue; } diff --git a/spring-vault-core/src/test/java/org/springframework/vault/client/ReactiveVaultClientsIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/client/ReactiveVaultClientsIntegrationTests.java index 0cc332bc..fcf0f49b 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/client/ReactiveVaultClientsIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/client/ReactiveVaultClientsIntegrationTests.java @@ -51,8 +51,7 @@ class ReactiveVaultClientsIntegrationTests extends IntegrationTestSupport { client.get() .uri("/sys/health") - .exchange() - .flatMap(it -> it.bodyToMono(String.class)) + .exchangeToMono(it -> it.bodyToMono(String.class)) .as(StepVerifier::create) .consumeNextWith(actual -> { assertThat(actual).contains("initialized").contains("standby"); @@ -61,8 +60,7 @@ class ReactiveVaultClientsIntegrationTests extends IntegrationTestSupport { client.get() .uri("sys/health") - .exchange() - .flatMap(it -> it.bodyToMono(String.class)) + .exchangeToMono(it -> it.bodyToMono(String.class)) .as(StepVerifier::create) .consumeNextWith(actual -> { assertThat(actual).contains("initialized").contains("standby"); diff --git a/spring-vault-core/src/test/java/org/springframework/vault/config/AbstractReactiveVaultConfigurationUnitTests.java b/spring-vault-core/src/test/java/org/springframework/vault/config/AbstractReactiveVaultConfigurationUnitTests.java index 52902e56..fa48ee8d 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/config/AbstractReactiveVaultConfigurationUnitTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/config/AbstractReactiveVaultConfigurationUnitTests.java @@ -48,7 +48,11 @@ class AbstractReactiveVaultConfigurationUnitTests { WebClientFactory factory = context.getBean(WebClientFactory.class); WebClient webClient = factory.create(); - webClient.get().uri("/foo").exchange().as(StepVerifier::create).verifyError(CustomizedSignal.class); + webClient.get() + .uri("/foo") + .exchangeToMono(it -> it.bodyToMono(String.class)) + .as(StepVerifier::create) + .verifyError(CustomizedSignal.class); } @Test diff --git a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultNamespaceSecretIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultNamespaceSecretIntegrationTests.java index 225b4d2f..ff4fc86a 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultNamespaceSecretIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultNamespaceSecretIntegrationTests.java @@ -213,8 +213,7 @@ class VaultNamespaceSecretIntegrationTests extends IntegrationTestSupport { return webClient.get() .uri("sys/init") .header(VaultHttpHeaders.VAULT_NAMESPACE, "") - .exchange() - .flatMap(it -> it.bodyToMono(Map.class)); + .exchangeToMono(it -> it.bodyToMono(Map.class)); }) .as(StepVerifier::create) .assertNext(actual -> assertThat(actual).containsEntry("initialized", true)) diff --git a/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateBundleUnitTests.java b/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateBundleUnitTests.java index 1355f400..aad4b0d5 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateBundleUnitTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateBundleUnitTests.java @@ -127,9 +127,9 @@ class CertificateBundleUnitTests { } @ParameterizedTest - @ValueSource(strings = {"certificate-response-rsa-pem.json", "certificate-response-rsa-der.json", + @ValueSource(strings = { "certificate-response-rsa-pem.json", "certificate-response-rsa-der.json", "certificate-response-rsa-pembundle.json", "certificate-response-ec-pem.json", - "certificate-response-ec-der.json", "certificate-response-ec-pembundle.json"}) + "certificate-response-ec-der.json", "certificate-response-ec-pembundle.json" }) void createKeystore(String path) { CertificateBundle bundle = loadCertificateBundle(path); @@ -144,7 +144,7 @@ class CertificateBundleUnitTests { } @ParameterizedTest - @ValueSource(strings = {"certificate-response-rsa-pem-pkcs8.json", "certificate-response-ec-pem-pkcs8.json"}) + @ValueSource(strings = { "certificate-response-rsa-pem-pkcs8.json", "certificate-response-ec-pem-pkcs8.json" }) void shouldCreateKeystore(String path) { CertificateBundle bundle = loadCertificateBundle(path); diff --git a/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateUnitTests.java b/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateUnitTests.java index 3a0bc0ae..730f9c95 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateUnitTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateUnitTests.java @@ -51,7 +51,7 @@ class CertificateUnitTests { X509Certificate x509Certificate = this.certificate.getX509Certificate(); - assertThat(x509Certificate.getSubjectDN().getName()).isEqualTo("CN=hello.example.com"); + assertThat(x509Certificate.getSubjectX500Principal().getName()).isEqualTo("CN=hello.example.com"); } @Test @@ -59,7 +59,7 @@ class CertificateUnitTests { X509Certificate x509Certificate = this.certificate.getX509IssuerCertificate(); - assertThat(x509Certificate.getSubjectDN().getName()).startsWith("CN=Intermediate CA Certificate"); + assertThat(x509Certificate.getSubjectX500Principal().getName()).startsWith("CN=Intermediate CA Certificate"); } @Test diff --git a/spring-vault-core/src/test/java/org/springframework/vault/support/PemObjectUnitTests.java b/spring-vault-core/src/test/java/org/springframework/vault/support/PemObjectUnitTests.java index 81329a6a..3d59f5e5 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/support/PemObjectUnitTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/support/PemObjectUnitTests.java @@ -111,7 +111,8 @@ class PemObjectUnitTests { PemObject pemObject = PemObject.parseFirst(content); assertThat(pemObject.isCertificate()).isTrue(); - assertThat(pemObject.getCertificate().getSubjectDN().getName()).contains("O=spring-cloud-vault-config"); + assertThat(pemObject.getCertificate().getSubjectX500Principal().getName()) + .contains("O=spring-cloud-vault-config"); } }