diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/parameterstore/AwsParameterStoreClientCustomizer.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/parameterstore/AwsParameterStoreClientCustomizer.java deleted file mode 100644 index aaf454e52..000000000 --- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/parameterstore/AwsParameterStoreClientCustomizer.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2013-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.awspring.cloud.autoconfigure.config.parameterstore; - -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; -import software.amazon.awssdk.services.ssm.SsmClientBuilder; - -/** - * @deprecated use {@link SsmClientCustomizer} - * @author Matej Nedic - * @since 3.0.0 - */ -@Deprecated(since = "3.3.0", forRemoval = true) -public interface AwsParameterStoreClientCustomizer extends AwsClientCustomizer<SsmClientBuilder> { -} diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/parameterstore/ParameterStoreAutoConfiguration.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/parameterstore/ParameterStoreAutoConfiguration.java index 02c044489..73dc41bcf 100644 --- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/parameterstore/ParameterStoreAutoConfiguration.java +++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/parameterstore/ParameterStoreAutoConfiguration.java @@ -18,7 +18,6 @@ import io.awspring.cloud.autoconfigure.AwsSyncClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsAutoConfiguration; import io.awspring.cloud.autoconfigure.core.AwsClientBuilderConfigurer; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsConnectionDetails; import io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration; import io.awspring.cloud.autoconfigure.core.RegionProviderAutoConfiguration; @@ -31,7 +30,6 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import software.amazon.awssdk.services.ssm.SsmClient; -import software.amazon.awssdk.services.ssm.SsmClientBuilder; /** * {@link AutoConfiguration Auto-Configuration} for AWS Parameter Store integration. @@ -51,13 +49,13 @@ public class ParameterStoreAutoConfiguration { @ConditionalOnMissingBean public SsmClient ssmClient(ParameterStoreProperties properties, AwsClientBuilderConfigurer awsClientBuilderConfigurer, - ObjectProvider<AwsClientCustomizer<SsmClientBuilder>> customizers, ObjectProvider<SsmClientCustomizer> ssmClientCustomizers, ObjectProvider<AwsSyncClientCustomizer> awsSyncClientCustomizers, ObjectProvider<AwsConnectionDetails> connectionDetails) { - return awsClientBuilderConfigurer.configureSyncClient(SsmClient.builder(), properties, - connectionDetails.getIfAvailable(), customizers.getIfAvailable(), ssmClientCustomizers.orderedStream(), - awsSyncClientCustomizers.orderedStream()).build(); + return awsClientBuilderConfigurer + .configureSyncClient(SsmClient.builder(), properties, connectionDetails.getIfAvailable(), + ssmClientCustomizers.orderedStream(), awsSyncClientCustomizers.orderedStream()) + .build(); } } diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/parameterstore/ParameterStoreConfigDataLocationResolver.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/parameterstore/ParameterStoreConfigDataLocationResolver.java index 78b3bd3fd..a6620b447 100644 --- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/parameterstore/ParameterStoreConfigDataLocationResolver.java +++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/parameterstore/ParameterStoreConfigDataLocationResolver.java @@ -17,7 +17,6 @@ import io.awspring.cloud.autoconfigure.AwsSyncClientCustomizer; import io.awspring.cloud.autoconfigure.config.AbstractAwsConfigDataLocationResolver; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsProperties; import io.awspring.cloud.autoconfigure.core.CredentialsProperties; import io.awspring.cloud.autoconfigure.core.RegionProperties; @@ -96,15 +95,6 @@ public List<ParameterStoreConfigDataResource> resolveProfileSpecific( protected SsmClient createSimpleSystemManagementClient(BootstrapContext context) { SsmClientBuilder builder = configure(SsmClient.builder(), context.get(ParameterStoreProperties.class), context); - try { - AwsParameterStoreClientCustomizer configurer = context.get(AwsParameterStoreClientCustomizer.class); - if (configurer != null) { - AwsClientCustomizer.apply(configurer, builder); - } - } - catch (IllegalStateException e) { - log.debug("Bean of type AwsParameterStoreClientCustomizer is not registered: " + e.getMessage()); - } try { AwsSyncClientCustomizer awsSyncClientCustomizer = context.get(AwsSyncClientCustomizer.class); diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/secretsmanager/AwsSecretsManagerClientCustomizer.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/secretsmanager/AwsSecretsManagerClientCustomizer.java deleted file mode 100644 index 01a5a5464..000000000 --- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/secretsmanager/AwsSecretsManagerClientCustomizer.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2013-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.awspring.cloud.autoconfigure.config.secretsmanager; - -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; -import software.amazon.awssdk.services.secretsmanager.SecretsManagerClientBuilder; - -/** - * @deprecated use {@link SecretsManagerClientCustomizer} - * @author Matej Nedic - * @since 3.0.0 - */ -@Deprecated(since = "3.3.0", forRemoval = true) -public interface AwsSecretsManagerClientCustomizer extends AwsClientCustomizer<SecretsManagerClientBuilder> { -} diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/secretsmanager/SecretsManagerAutoConfiguration.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/secretsmanager/SecretsManagerAutoConfiguration.java index f79518234..347060763 100644 --- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/secretsmanager/SecretsManagerAutoConfiguration.java +++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/secretsmanager/SecretsManagerAutoConfiguration.java @@ -18,7 +18,6 @@ import io.awspring.cloud.autoconfigure.AwsSyncClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsAutoConfiguration; import io.awspring.cloud.autoconfigure.core.AwsClientBuilderConfigurer; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsConnectionDetails; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -29,7 +28,6 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient; -import software.amazon.awssdk.services.secretsmanager.SecretsManagerClientBuilder; /** * {@link AutoConfiguration Auto-Configuration} for Secrets Manager integration. @@ -48,12 +46,12 @@ public class SecretsManagerAutoConfiguration { @Bean public SecretsManagerClient secretsManagerClient(SecretsManagerProperties properties, AwsClientBuilderConfigurer awsClientBuilderConfigurer, - ObjectProvider<AwsClientCustomizer<SecretsManagerClientBuilder>> customizer, ObjectProvider<AwsConnectionDetails> connectionDetails, ObjectProvider<SecretsManagerClientCustomizer> secretsManagerClientCustomizers, ObjectProvider<AwsSyncClientCustomizer> awsSyncClientCustomizers) { - return awsClientBuilderConfigurer.configureSyncClient(SecretsManagerClient.builder(), properties, - connectionDetails.getIfAvailable(), customizer.getIfAvailable(), - secretsManagerClientCustomizers.orderedStream(), awsSyncClientCustomizers.orderedStream()).build(); + return awsClientBuilderConfigurer + .configureSyncClient(SecretsManagerClient.builder(), properties, connectionDetails.getIfAvailable(), + secretsManagerClientCustomizers.orderedStream(), awsSyncClientCustomizers.orderedStream()) + .build(); } } diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/secretsmanager/SecretsManagerConfigDataLocationResolver.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/secretsmanager/SecretsManagerConfigDataLocationResolver.java index 3005d74d3..05e6c2ddb 100644 --- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/secretsmanager/SecretsManagerConfigDataLocationResolver.java +++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/secretsmanager/SecretsManagerConfigDataLocationResolver.java @@ -17,7 +17,6 @@ import io.awspring.cloud.autoconfigure.AwsSyncClientCustomizer; import io.awspring.cloud.autoconfigure.config.AbstractAwsConfigDataLocationResolver; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsProperties; import io.awspring.cloud.autoconfigure.core.CredentialsProperties; import io.awspring.cloud.autoconfigure.core.RegionProperties; @@ -100,15 +99,6 @@ public List<SecretsManagerConfigDataResource> resolve(ConfigDataLocationResolver protected SecretsManagerClient createAwsSecretsManagerClient(BootstrapContext context) { SecretsManagerClientBuilder builder = configure(SecretsManagerClient.builder(), context.get(SecretsManagerProperties.class), context); - try { - AwsSecretsManagerClientCustomizer configurer = context.get(AwsSecretsManagerClientCustomizer.class); - if (configurer != null) { - AwsClientCustomizer.apply(configurer, builder); - } - } - catch (IllegalStateException e) { - log.debug("Bean of type AwsParameterStoreClientCustomizer is not registered: " + e.getMessage()); - } try { AwsSyncClientCustomizer awsSyncClientCustomizer = context.get(AwsSyncClientCustomizer.class); diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/core/AwsClientBuilderConfigurer.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/core/AwsClientBuilderConfigurer.java index 6c2c1338c..fd09b0b1a 100644 --- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/core/AwsClientBuilderConfigurer.java +++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/core/AwsClientBuilderConfigurer.java @@ -54,33 +54,11 @@ public AwsClientBuilderConfigurer(AwsCredentialsProvider credentialsProvider, Aw } public <T extends AwsClientBuilder<T, ?>> T configure(T builder) { - return configure(builder, null, null, null); + return configure(builder, null, null); } - /** - * @deprecated use - * {@link #configureSyncClient(AwsClientBuilder, AwsClientProperties, AwsConnectionDetails, Stream, Stream)} for - * sync client or - * {@link #configureAsyncClient(AwsClientBuilder, AwsClientProperties, AwsConnectionDetails, Stream, Stream)} for - * async client. - */ - @Deprecated public <T extends AwsClientBuilder<T, ?>> T configure(T builder, @Nullable AwsClientProperties clientProperties, - @Nullable io.awspring.cloud.autoconfigure.core.AwsClientCustomizer<T> customizer) { - return configure(builder, clientProperties, null, customizer); - } - - /** - * @deprecated use - * {@link #configureSyncClient(AwsClientBuilder, AwsClientProperties, AwsConnectionDetails, Stream, Stream)} for - * sync client or - * {@link #configureAsyncClient(AwsClientBuilder, AwsClientProperties, AwsConnectionDetails, Stream, Stream)} for - * async client. - */ - @Deprecated - public <T extends AwsClientBuilder<T, ?>> T configure(T builder, @Nullable AwsClientProperties clientProperties, - @Nullable AwsConnectionDetails connectionDetails, - @Nullable io.awspring.cloud.autoconfigure.core.AwsClientCustomizer<T> customizer) { + @Nullable AwsConnectionDetails connectionDetails) { Assert.notNull(builder, "builder is required"); builder.credentialsProvider(this.credentialsProvider).region(resolveRegion(clientProperties, connectionDetails)) @@ -97,47 +75,14 @@ public AwsClientBuilderConfigurer(AwsCredentialsProvider credentialsProvider, Aw Optional.ofNullable(clientProperties).flatMap(it -> Optional.ofNullable(clientProperties.getDualstackEnabled())) .ifPresent(builder::dualstackEnabled); - if (customizer != null) { - io.awspring.cloud.autoconfigure.core.AwsClientCustomizer.apply(customizer, builder); - } return builder; } public <T extends AwsClientBuilder<T, ?>> T configureSyncClient(T builder, @Nullable AwsClientProperties clientProperties, @Nullable AwsConnectionDetails connectionDetails, @Nullable Stream<? extends AwsClientCustomizer<T>> clientBuilderCustomizer, - @Nullable Stream<? extends AwsSyncClientCustomizer> commonCustomizers) { - return configureSyncClient(builder, clientProperties, connectionDetails, null, clientBuilderCustomizer, - commonCustomizers); - } - - public <T extends AwsClientBuilder<T, ?>> T configureAsyncClient(T builder, - @Nullable AwsClientProperties clientProperties, @Nullable AwsConnectionDetails connectionDetails, - @Nullable Stream<? extends AwsClientCustomizer<T>> clientBuilderCustomizer, - @Nullable Stream<? extends AwsAsyncClientCustomizer> commonCustomizers) { - return configureAsyncClient(builder, clientProperties, connectionDetails, null, clientBuilderCustomizer, - commonCustomizers); - } - - @Deprecated - public <T extends AwsClientBuilder<T, ?>> T configure(T builder, @Nullable AwsClientProperties clientProperties, - @Nullable AwsConnectionDetails connectionDetails, - @Nullable io.awspring.cloud.autoconfigure.core.AwsClientCustomizer<T> customizer, - @Nullable Stream<? extends AwsClientCustomizer<T>> clientBuilderCustomizer) { - return configure(builder, clientProperties, connectionDetails, null, clientBuilderCustomizer); - } - - /** - * @deprecated use - * {@link #configureSyncClient(AwsClientBuilder, AwsClientProperties, AwsConnectionDetails, Stream, Stream)}. - */ - @Deprecated - public <T extends AwsClientBuilder<T, ?>> T configureSyncClient(T builder, - @Nullable AwsClientProperties clientProperties, @Nullable AwsConnectionDetails connectionDetails, - @Nullable io.awspring.cloud.autoconfigure.core.AwsClientCustomizer<T> customizer, - @Nullable Stream<? extends AwsClientCustomizer<T>> clientBuilderCustomizer, @Nullable Stream<? extends AwsSyncClientCustomizer> commonBuilderCustomizer) { - T result = configure(builder, clientProperties, connectionDetails, customizer); + T result = configure(builder, clientProperties, connectionDetails); if (commonBuilderCustomizer != null && builder instanceof AwsSyncClientBuilder<?, ?>) { commonBuilderCustomizer.forEach(it -> it.customize((AwsSyncClientBuilder<?, ?>) result)); } @@ -147,13 +92,11 @@ public AwsClientBuilderConfigurer(AwsCredentialsProvider credentialsProvider, Aw return result; } - @Deprecated public <T extends AwsClientBuilder<T, ?>> T configureAsyncClient(T builder, @Nullable AwsClientProperties clientProperties, @Nullable AwsConnectionDetails connectionDetails, - @Nullable io.awspring.cloud.autoconfigure.core.AwsClientCustomizer<T> customizer, @Nullable Stream<? extends AwsClientCustomizer<T>> clientBuilderCustomizer, @Nullable Stream<? extends AwsAsyncClientCustomizer> commonBuilderCustomizer) { - T result = configure(builder, clientProperties, connectionDetails, customizer); + T result = configure(builder, clientProperties, connectionDetails); if (commonBuilderCustomizer != null && builder instanceof AwsAsyncClientBuilder<?, ?>) { commonBuilderCustomizer.forEach(it -> it.customize((AwsAsyncClientBuilder<?, ?>) result)); } diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/core/AwsClientCustomizer.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/core/AwsClientCustomizer.java deleted file mode 100644 index a67990546..000000000 --- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/core/AwsClientCustomizer.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2013-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.awspring.cloud.autoconfigure.core; - -import org.springframework.lang.Nullable; -import software.amazon.awssdk.awscore.client.builder.AwsAsyncClientBuilder; -import software.amazon.awssdk.awscore.client.builder.AwsClientBuilder; -import software.amazon.awssdk.awscore.client.builder.AwsSyncClientBuilder; -import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; -import software.amazon.awssdk.http.SdkHttpClient; -import software.amazon.awssdk.http.async.SdkAsyncHttpClient; - -/** - * @author Matej Nedić - * @since 3.0.0 - */ -@Deprecated(since = "3.3.0", forRemoval = true) -public interface AwsClientCustomizer<T> { - - @Nullable - default ClientOverrideConfiguration overrideConfiguration() { - return null; - } - - @Nullable - default SdkHttpClient httpClient() { - return null; - } - - @Nullable - default SdkHttpClient.Builder<?> httpClientBuilder() { - return null; - } - - @Nullable - default SdkAsyncHttpClient asyncHttpClient() { - return null; - } - - @Nullable - default SdkAsyncHttpClient.Builder<?> asyncHttpClientBuilder() { - return null; - } - - static <V extends AwsClientBuilder<?, ?>> void apply(AwsClientCustomizer<V> configurer, V builder) { - if (configurer.overrideConfiguration() != null) { - builder.overrideConfiguration(configurer.overrideConfiguration()); - } - - if (builder instanceof AwsSyncClientBuilder) { - AwsSyncClientBuilder syncClientBuilder = (AwsSyncClientBuilder) builder; - if (configurer.httpClient() != null) { - syncClientBuilder.httpClient(configurer.httpClient()); - } - if (configurer.httpClientBuilder() != null) { - syncClientBuilder.httpClientBuilder(configurer.httpClientBuilder()); - } - } - else if (builder instanceof AwsAsyncClientBuilder) { - AwsAsyncClientBuilder asyncClientBuilder = (AwsAsyncClientBuilder) builder; - if (configurer.asyncHttpClient() != null) { - asyncClientBuilder.httpClient(configurer.asyncHttpClient()); - } - if (configurer.asyncHttpClientBuilder() != null) { - asyncClientBuilder.httpClientBuilder(configurer.asyncHttpClientBuilder()); - } - } - } -} diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/dynamodb/DynamoDbAutoConfiguration.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/dynamodb/DynamoDbAutoConfiguration.java index 5c575a691..68792069c 100644 --- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/dynamodb/DynamoDbAutoConfiguration.java +++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/dynamodb/DynamoDbAutoConfiguration.java @@ -17,7 +17,6 @@ import io.awspring.cloud.autoconfigure.AwsSyncClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsClientBuilderConfigurer; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsConnectionDetails; import io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration; import io.awspring.cloud.autoconfigure.core.RegionProviderAutoConfiguration; @@ -47,7 +46,6 @@ import software.amazon.awssdk.enhanced.dynamodb.TableSchema; import software.amazon.awssdk.regions.providers.AwsRegionProvider; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; -import software.amazon.awssdk.services.dynamodb.DynamoDbClientBuilder; import software.amazon.dax.ClusterDaxClient; /** @@ -114,13 +112,13 @@ static class StandardDynamoDbClient { @ConditionalOnMissingBean @Bean public DynamoDbClient dynamoDbClient(AwsClientBuilderConfigurer awsClientBuilderConfigurer, - ObjectProvider<AwsClientCustomizer<DynamoDbClientBuilder>> configurer, ObjectProvider<AwsConnectionDetails> connectionDetails, DynamoDbProperties properties, ObjectProvider<DynamoDbClientCustomizer> dynamoDbClientCustomizers, ObjectProvider<AwsSyncClientCustomizer> awsSyncClientCustomizers) { - return awsClientBuilderConfigurer.configureSyncClient(DynamoDbClient.builder(), properties, - connectionDetails.getIfAvailable(), configurer.getIfAvailable(), - dynamoDbClientCustomizers.orderedStream(), awsSyncClientCustomizers.orderedStream()).build(); + return awsClientBuilderConfigurer + .configureSyncClient(DynamoDbClient.builder(), properties, connectionDetails.getIfAvailable(), + dynamoDbClientCustomizers.orderedStream(), awsSyncClientCustomizers.orderedStream()) + .build(); } } diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchExportAutoConfiguration.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchExportAutoConfiguration.java index aca3bdc75..f3315d70d 100644 --- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchExportAutoConfiguration.java +++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchExportAutoConfiguration.java @@ -17,7 +17,6 @@ import io.awspring.cloud.autoconfigure.AwsAsyncClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsClientBuilderConfigurer; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsConnectionDetails; import io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration; import io.awspring.cloud.autoconfigure.core.RegionProviderAutoConfiguration; @@ -38,7 +37,6 @@ import org.springframework.context.annotation.Bean; import software.amazon.awssdk.regions.providers.AwsRegionProvider; import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient; -import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClientBuilder; /** * Configuration for exporting metrics to CloudWatch. @@ -69,13 +67,13 @@ public CloudWatchMeterRegistry cloudWatchMeterRegistry(CloudWatchConfig config, @ConditionalOnMissingBean public CloudWatchAsyncClient cloudWatchAsyncClient(CloudWatchProperties properties, AwsClientBuilderConfigurer awsClientBuilderConfigurer, - ObjectProvider<AwsClientCustomizer<CloudWatchAsyncClientBuilder>> configurer, ObjectProvider<AwsConnectionDetails> connectionDetails, ObjectProvider<CloudWatchAsyncClientCustomizer> cloudWatchAsyncClientCustomizers, ObjectProvider<AwsAsyncClientCustomizer> awsAsyncClientCustomizers) { - return awsClientBuilderConfigurer.configureAsyncClient(CloudWatchAsyncClient.builder(), properties, - connectionDetails.getIfAvailable(), configurer.getIfAvailable(), - cloudWatchAsyncClientCustomizers.orderedStream(), awsAsyncClientCustomizers.orderedStream()).build(); + return awsClientBuilderConfigurer + .configureAsyncClient(CloudWatchAsyncClient.builder(), properties, connectionDetails.getIfAvailable(), + cloudWatchAsyncClientCustomizers.orderedStream(), awsAsyncClientCustomizers.orderedStream()) + .build(); } @Bean diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3AutoConfiguration.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3AutoConfiguration.java index c72d2727f..2d43ebdbe 100644 --- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3AutoConfiguration.java +++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3AutoConfiguration.java @@ -18,7 +18,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import io.awspring.cloud.autoconfigure.AwsSyncClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsClientBuilderConfigurer; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsConnectionDetails; import io.awspring.cloud.autoconfigure.core.AwsProperties; import io.awspring.cloud.autoconfigure.s3.properties.S3Properties; @@ -73,12 +72,11 @@ public S3AutoConfiguration(S3Properties properties) { @Bean @ConditionalOnMissingBean S3ClientBuilder s3ClientBuilder(AwsClientBuilderConfigurer awsClientBuilderConfigurer, - ObjectProvider<AwsClientCustomizer<S3ClientBuilder>> configurer, ObjectProvider<AwsConnectionDetails> connectionDetails, ObjectProvider<S3ClientCustomizer> s3ClientCustomizers, ObjectProvider<AwsSyncClientCustomizer> awsSyncClientCustomizers) { S3ClientBuilder builder = awsClientBuilderConfigurer.configureSyncClient(S3Client.builder(), this.properties, - connectionDetails.getIfAvailable(), configurer.getIfAvailable(), s3ClientCustomizers.orderedStream(), + connectionDetails.getIfAvailable(), s3ClientCustomizers.orderedStream(), awsSyncClientCustomizers.orderedStream()); if (ClassUtils.isPresent("software.amazon.awssdk.s3accessgrants.plugin.S3AccessGrantsPlugin", null)) { @@ -142,15 +140,13 @@ S3Client s3EncryptionClient(S3EncryptionClient.Builder s3EncryptionBuilder, S3Cl @ConditionalOnMissingBean S3EncryptionClient.Builder s3EncrpytionClientBuilder(S3Properties properties, AwsClientBuilderConfigurer awsClientBuilderConfigurer, - ObjectProvider<AwsClientCustomizer<S3EncryptionClient.Builder>> configurer, ObjectProvider<AwsConnectionDetails> connectionDetails, ObjectProvider<S3EncryptionClientCustomizer> s3ClientCustomizers, ObjectProvider<AwsSyncClientCustomizer> awsSyncClientCustomizers, ObjectProvider<S3RsaProvider> rsaProvider, ObjectProvider<S3AesProvider> aesProvider) { S3EncryptionClient.Builder builder = awsClientBuilderConfigurer.configureSyncClient( S3EncryptionClient.builder(), properties, connectionDetails.getIfAvailable(), - configurer.getIfAvailable(), s3ClientCustomizers.orderedStream(), - awsSyncClientCustomizers.orderedStream()); + s3ClientCustomizers.orderedStream(), awsSyncClientCustomizers.orderedStream()); Optional.ofNullable(properties.getCrossRegionEnabled()).ifPresent(builder::crossRegionAccessEnabled); builder.serviceConfiguration(properties.toS3Configuration()); diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/ses/SesAutoConfiguration.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/ses/SesAutoConfiguration.java index 91b7e070f..80bec2e5f 100644 --- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/ses/SesAutoConfiguration.java +++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/ses/SesAutoConfiguration.java @@ -17,7 +17,6 @@ import io.awspring.cloud.autoconfigure.AwsSyncClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsClientBuilderConfigurer; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsConnectionDetails; import io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration; import io.awspring.cloud.autoconfigure.core.RegionProviderAutoConfiguration; @@ -36,7 +35,6 @@ import org.springframework.mail.MailSender; import org.springframework.mail.javamail.JavaMailSender; import software.amazon.awssdk.services.ses.SesClient; -import software.amazon.awssdk.services.ses.SesClientBuilder; /** * {@link EnableAutoConfiguration} for {@link SimpleEmailServiceMailSender} and @@ -56,13 +54,13 @@ public class SesAutoConfiguration { @Bean @ConditionalOnMissingBean public SesClient sesClient(SesProperties properties, AwsClientBuilderConfigurer awsClientBuilderConfigurer, - ObjectProvider<AwsClientCustomizer<SesClientBuilder>> configurer, ObjectProvider<AwsConnectionDetails> connectionDetails, ObjectProvider<SesClientCustomizer> sesClientCustomizers, ObjectProvider<AwsSyncClientCustomizer> awsSyncClientCustomizers) { - return awsClientBuilderConfigurer.configureSyncClient(SesClient.builder(), properties, - connectionDetails.getIfAvailable(), configurer.getIfAvailable(), sesClientCustomizers.orderedStream(), - awsSyncClientCustomizers.orderedStream()).build(); + return awsClientBuilderConfigurer + .configureSyncClient(SesClient.builder(), properties, connectionDetails.getIfAvailable(), + sesClientCustomizers.orderedStream(), awsSyncClientCustomizers.orderedStream()) + .build(); } @Bean diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/sns/SnsAutoConfiguration.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/sns/SnsAutoConfiguration.java index 882a4b0ea..8b2c3b4a1 100644 --- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/sns/SnsAutoConfiguration.java +++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/sns/SnsAutoConfiguration.java @@ -20,7 +20,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import io.awspring.cloud.autoconfigure.AwsSyncClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsClientBuilderConfigurer; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsConnectionDetails; import io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration; import io.awspring.cloud.autoconfigure.core.RegionProviderAutoConfiguration; @@ -46,7 +45,6 @@ import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import software.amazon.awssdk.services.sns.SnsClient; -import software.amazon.awssdk.services.sns.SnsClientBuilder; /** * {@link EnableAutoConfiguration Auto-configuration} for SNS integration. @@ -69,13 +67,13 @@ public class SnsAutoConfiguration { @ConditionalOnMissingBean @Bean public SnsClient snsClient(SnsProperties properties, AwsClientBuilderConfigurer awsClientBuilderConfigurer, - ObjectProvider<AwsClientCustomizer<SnsClientBuilder>> configurer, ObjectProvider<AwsConnectionDetails> connectionDetails, ObjectProvider<SnsClientCustomizer> snsClientCustomizers, ObjectProvider<AwsSyncClientCustomizer> awsSyncClientCustomizers) { - return awsClientBuilderConfigurer.configureSyncClient(SnsClient.builder(), properties, - connectionDetails.getIfAvailable(), configurer.getIfAvailable(), snsClientCustomizers.orderedStream(), - awsSyncClientCustomizers.orderedStream()).build(); + return awsClientBuilderConfigurer + .configureSyncClient(SnsClient.builder(), properties, connectionDetails.getIfAvailable(), + snsClientCustomizers.orderedStream(), awsSyncClientCustomizers.orderedStream()) + .build(); } @ConditionalOnMissingBean(SnsOperations.class) diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/sqs/SqsAutoConfiguration.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/sqs/SqsAutoConfiguration.java index 4eb085678..a5ab51921 100644 --- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/sqs/SqsAutoConfiguration.java +++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/sqs/SqsAutoConfiguration.java @@ -18,7 +18,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import io.awspring.cloud.autoconfigure.AwsAsyncClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsClientBuilderConfigurer; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.AwsConnectionDetails; import io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration; import io.awspring.cloud.autoconfigure.core.RegionProviderAutoConfiguration; @@ -49,7 +48,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; import software.amazon.awssdk.services.sqs.SqsAsyncClient; -import software.amazon.awssdk.services.sqs.SqsAsyncClientBuilder; import software.amazon.awssdk.services.sqs.model.Message; /** @@ -78,13 +76,13 @@ public SqsAutoConfiguration(SqsProperties sqsProperties) { @ConditionalOnMissingBean @Bean public SqsAsyncClient sqsAsyncClient(AwsClientBuilderConfigurer awsClientBuilderConfigurer, - ObjectProvider<AwsClientCustomizer<SqsAsyncClientBuilder>> configurer, ObjectProvider<AwsConnectionDetails> connectionDetails, ObjectProvider<SqsAsyncClientCustomizer> sqsAsyncClientCustomizers, ObjectProvider<AwsAsyncClientCustomizer> awsAsyncClientCustomizers) { - return awsClientBuilderConfigurer.configureAsyncClient(SqsAsyncClient.builder(), this.sqsProperties, - connectionDetails.getIfAvailable(), configurer.getIfAvailable(), - sqsAsyncClientCustomizers.orderedStream(), awsAsyncClientCustomizers.orderedStream()).build(); + return awsClientBuilderConfigurer + .configureAsyncClient(SqsAsyncClient.builder(), this.sqsProperties, connectionDetails.getIfAvailable(), + sqsAsyncClientCustomizers.orderedStream(), awsAsyncClientCustomizers.orderedStream()) + .build(); } @ConditionalOnMissingBean diff --git a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/config/parameterstore/ParameterStoreConfigDataLoaderIntegrationTests.java b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/config/parameterstore/ParameterStoreConfigDataLoaderIntegrationTests.java index fc742b5f1..373cf997b 100644 --- a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/config/parameterstore/ParameterStoreConfigDataLoaderIntegrationTests.java +++ b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/config/parameterstore/ParameterStoreConfigDataLoaderIntegrationTests.java @@ -47,8 +47,6 @@ import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; -import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; -import software.amazon.awssdk.http.SdkHttpClient; import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.services.ssm.SsmClient; import software.amazon.awssdk.services.ssm.model.GetParametersByPathRequest; @@ -125,20 +123,6 @@ void resolvesPropertiesWithPrefixes() { } } - @Test - void clientIsConfiguredWithConfigurerProvidedToBootstrapRegistry() { - SpringApplication application = new SpringApplication(App.class); - application.setWebApplicationType(WebApplicationType.NONE); - application.addBootstrapRegistryInitializer(new AwsConfigurerClientConfiguration()); - - try (ConfigurableApplicationContext context = runApplication(application, - "aws-parameterstore:/config/spring/")) { - ConfiguredAwsClient ssmClient = new ConfiguredAwsClient(context.getBean(SsmClient.class)); - assertThat(ssmClient.getApiCallTimeout()).isEqualTo(Duration.ofMillis(2828)); - assertThat(ssmClient.getSyncHttpClient()).isNotNull(); - } - } - @Test void clientIsConfiguredWithCustomizerProvidedToBootstrapRegistry() { SpringApplication application = new SpringApplication(App.class); @@ -445,27 +429,6 @@ static class App { } - static class AwsConfigurerClientConfiguration implements BootstrapRegistryInitializer { - - @Override - public void initialize(BootstrapRegistry registry) { - registry.register(AwsParameterStoreClientCustomizer.class, - context -> new AwsParameterStoreClientCustomizer() { - - @Override - public ClientOverrideConfiguration overrideConfiguration() { - return ClientOverrideConfiguration.builder().apiCallTimeout(Duration.ofMillis(2828)) - .build(); - } - - @Override - public SdkHttpClient httpClient() { - return ApacheHttpClient.builder().connectionTimeout(Duration.ofMillis(1542)).build(); - } - }); - } - } - static class CustomizerConfiguration implements BootstrapRegistryInitializer { @Override diff --git a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/config/secretsmanager/SecretsManagerConfigDataLoaderIntegrationTests.java b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/config/secretsmanager/SecretsManagerConfigDataLoaderIntegrationTests.java index c7cadd1d8..b85829c0b 100644 --- a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/config/secretsmanager/SecretsManagerConfigDataLoaderIntegrationTests.java +++ b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/config/secretsmanager/SecretsManagerConfigDataLoaderIntegrationTests.java @@ -53,8 +53,6 @@ import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; import software.amazon.awssdk.core.SdkBytes; -import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; -import software.amazon.awssdk.http.SdkHttpClient; import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient; import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueRequest; @@ -180,20 +178,6 @@ void respectsImportOrder() { } } - @Test - void clientIsConfiguredWithConfigurerProvidedToBootstrapRegistry() { - SpringApplication application = new SpringApplication(App.class); - application.setWebApplicationType(WebApplicationType.NONE); - application.addBootstrapRegistryInitializer(new AwsConfigurerClientConfiguration()); - - try (ConfigurableApplicationContext context = runApplication(application, - "aws-secretsmanager:/config/spring;/config/second")) { - ConfiguredAwsClient ssmClient = new ConfiguredAwsClient(context.getBean(SecretsManagerClient.class)); - assertThat(ssmClient.getApiCallTimeout()).isEqualTo(Duration.ofMillis(2828)); - assertThat(ssmClient.getSyncHttpClient()).isNotNull(); - } - } - @Test void clientIsConfiguredWithCustomizerProvidedToBootstrapRegistry() { SpringApplication application = new SpringApplication(App.class); @@ -495,27 +479,6 @@ private static void putSecretValue(LocalStackContainer localstack, String secret static class App { } - static class AwsConfigurerClientConfiguration implements BootstrapRegistryInitializer { - - @Override - public void initialize(BootstrapRegistry registry) { - registry.register(AwsSecretsManagerClientCustomizer.class, - context -> new AwsSecretsManagerClientCustomizer() { - - @Override - public ClientOverrideConfiguration overrideConfiguration() { - return ClientOverrideConfiguration.builder().apiCallTimeout(Duration.ofMillis(2828)) - .build(); - } - - @Override - public SdkHttpClient httpClient() { - return ApacheHttpClient.builder().connectionTimeout(Duration.ofMillis(1542)).build(); - } - }); - } - } - static class CustomizerConfiguration implements BootstrapRegistryInitializer { @Override diff --git a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/core/AwsClientCustomizerTests.java b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/core/AwsClientCustomizerTests.java deleted file mode 100644 index ccdc75258..000000000 --- a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/core/AwsClientCustomizerTests.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2013-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.awspring.cloud.autoconfigure.core; - -import static org.junit.jupiter.api.Assertions.assertAll; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.withSettings; - -import org.junit.jupiter.api.Test; -import software.amazon.awssdk.awscore.client.builder.AwsAsyncClientBuilder; -import software.amazon.awssdk.awscore.client.builder.AwsClientBuilder; -import software.amazon.awssdk.awscore.client.builder.AwsSyncClientBuilder; -import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; -import software.amazon.awssdk.http.SdkHttpClient; -import software.amazon.awssdk.http.async.SdkAsyncHttpClient; - -class AwsClientCustomizerTests { - AwsClientBuilder<?, ?> syncClientBuilder = mock(AwsClientBuilder.class, - withSettings().extraInterfaces(AwsSyncClientBuilder.class)); - AwsClientBuilder<?, ?> asyncClientBuilder = mock(AwsClientBuilder.class, - withSettings().extraInterfaces(AwsAsyncClientBuilder.class)); - - @Test - void applyOverrideConfigurationCustomizer() { - var customizer = new AwsClientCustomizer<AwsClientBuilder<?, ?>>() { - @Override - public ClientOverrideConfiguration overrideConfiguration() { - return ClientOverrideConfiguration.builder().build(); - } - }; - - AwsClientCustomizer.apply(customizer, syncClientBuilder); - assertAll(() -> verify(syncClientBuilder).overrideConfiguration(any(ClientOverrideConfiguration.class)), - () -> verify((AwsSyncClientBuilder<?, ?>) syncClientBuilder, never()) - .httpClient(any(SdkHttpClient.class)), - () -> verify((AwsSyncClientBuilder<?, ?>) syncClientBuilder, never()) - .httpClientBuilder(any(SdkHttpClient.Builder.class))); - } - - @Test - void applySyncClientCustomizer() { - var customizer = new AwsClientCustomizer<AwsClientBuilder<?, ?>>() { - @Override - public SdkHttpClient httpClient() { - return mock(SdkHttpClient.class); - } - - @Override - public SdkHttpClient.Builder<?> httpClientBuilder() { - return mock(SdkHttpClient.Builder.class); - } - }; - - AwsClientCustomizer.apply(customizer, syncClientBuilder); - assertAll( - () -> verify(syncClientBuilder, never()).overrideConfiguration(any(ClientOverrideConfiguration.class)), - () -> verify((AwsSyncClientBuilder<?, ?>) syncClientBuilder).httpClient(any(SdkHttpClient.class)), - () -> verify((AwsSyncClientBuilder<?, ?>) syncClientBuilder) - .httpClientBuilder(any(SdkHttpClient.Builder.class))); - } - - @Test - void applyAsyncClientBuilderCustomizer() { - var customizer = new AwsClientCustomizer<AwsClientBuilder<?, ?>>() { - @Override - public SdkAsyncHttpClient asyncHttpClient() { - return mock(SdkAsyncHttpClient.class); - } - - @Override - public SdkAsyncHttpClient.Builder<?> asyncHttpClientBuilder() { - return mock(SdkAsyncHttpClient.Builder.class); - } - }; - - AwsClientCustomizer.apply(customizer, asyncClientBuilder); - assertAll( - () -> verify(asyncClientBuilder, never()).overrideConfiguration(any(ClientOverrideConfiguration.class)), - () -> verify((AwsAsyncClientBuilder<?, ?>) asyncClientBuilder) - .httpClient(any(SdkAsyncHttpClient.class)), - () -> verify((AwsAsyncClientBuilder<?, ?>) asyncClientBuilder) - .httpClientBuilder(any(SdkAsyncHttpClient.Builder.class))); - } - - @Test - void applyEmptyCustomizer() { - var customizer = new AwsClientCustomizer<AwsClientBuilder<?, ?>>() { - }; - AwsClientCustomizer.apply(customizer, asyncClientBuilder); - assertAll( - () -> verify(asyncClientBuilder, never()).overrideConfiguration(any(ClientOverrideConfiguration.class)), - () -> verify((AwsAsyncClientBuilder<?, ?>) asyncClientBuilder, never()) - .httpClient(any(SdkAsyncHttpClient.class)), - () -> verify((AwsAsyncClientBuilder<?, ?>) asyncClientBuilder, never()) - .httpClientBuilder(any(SdkAsyncHttpClient.Builder.class))); - } -} diff --git a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/dynamodb/DynamoDbAutoConfigurationTest.java b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/dynamodb/DynamoDbAutoConfigurationTest.java index 23956ea4b..bf450922f 100644 --- a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/dynamodb/DynamoDbAutoConfigurationTest.java +++ b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/dynamodb/DynamoDbAutoConfigurationTest.java @@ -19,7 +19,6 @@ import io.awspring.cloud.autoconfigure.ConfiguredAwsClient; import io.awspring.cloud.autoconfigure.core.AwsAutoConfiguration; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration; import io.awspring.cloud.autoconfigure.core.RegionProviderAutoConfiguration; import io.awspring.cloud.dynamodb.DefaultDynamoDbTableSchemaResolver; @@ -27,7 +26,6 @@ import io.awspring.cloud.dynamodb.DynamoDbTableSchemaResolver; import io.awspring.cloud.dynamodb.DynamoDbTemplate; import java.net.URI; -import java.time.Duration; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -35,15 +33,10 @@ import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.lang.Nullable; -import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.TableSchema; import software.amazon.awssdk.enhanced.dynamodb.mapper.StaticTableSchema; -import software.amazon.awssdk.http.SdkHttpClient; -import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; -import software.amazon.awssdk.services.dynamodb.DynamoDbClientBuilder; import software.amazon.dax.ClusterDaxClient; /** @@ -118,17 +111,6 @@ void dynamoDbClientConfiguredSinceNoUrl() { }); } - @Test - void customDynamoDbClientConfigurer() { - contextRunner.withUserConfiguration(DynamoDbAutoConfigurationTest.CustomAwsClientConfig.class) - .run(context -> { - ConfiguredAwsClient dynamoDbClient = new ConfiguredAwsClient( - context.getBean(DynamoDbClient.class)); - assertThat(dynamoDbClient.getApiCallTimeout()).isEqualTo(Duration.ofMillis(1999)); - assertThat(dynamoDbClient.getSyncHttpClient()).isNotNull(); - }); - } - @Test void tableSchemaBeansRegistered() { contextRunner.withUserConfiguration(DynamoDbAutoConfigurationTest.TableSchemaConfiguration.class) @@ -288,30 +270,6 @@ public String resolve(Class clazz) { } } - @Configuration(proxyBeanMethods = false) - static class CustomAwsClientConfig { - - @Bean - AwsClientCustomizer<DynamoDbClientBuilder> dynamoDbClientBuilderAwsClientConfigurer() { - return new DynamoDbAutoConfigurationTest.CustomAwsClientConfig.DynamoDbClientCustomizer(); - } - - static class DynamoDbClientCustomizer implements AwsClientCustomizer<DynamoDbClientBuilder> { - @Override - @Nullable - public ClientOverrideConfiguration overrideConfiguration() { - return ClientOverrideConfiguration.builder().apiCallTimeout(Duration.ofMillis(1999)).build(); - } - - @Override - @Nullable - public SdkHttpClient httpClient() { - return ApacheHttpClient.builder().connectionTimeout(Duration.ofMillis(1542)).build(); - } - } - - } - @Configuration(proxyBeanMethods = false) static class TableSchemaConfiguration { diff --git a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchExportAutoConfigurationTest.java b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchExportAutoConfigurationTest.java index e57cb919c..032a194a4 100644 --- a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchExportAutoConfigurationTest.java +++ b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchExportAutoConfigurationTest.java @@ -19,26 +19,17 @@ import io.awspring.cloud.autoconfigure.ConfiguredAwsClient; import io.awspring.cloud.autoconfigure.core.AwsAutoConfiguration; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration; import io.awspring.cloud.autoconfigure.core.RegionProviderAutoConfiguration; import io.micrometer.cloudwatch2.CloudWatchConfig; import io.micrometer.cloudwatch2.CloudWatchMeterRegistry; import io.micrometer.core.instrument.Clock; import java.net.URI; -import java.time.Duration; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.lang.Nullable; -import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; -import software.amazon.awssdk.http.async.SdkAsyncHttpClient; -import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient; -import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClientBuilder; /** * Test for the {@link CloudWatchExportAutoConfiguration}. @@ -124,39 +115,4 @@ void withCustomGlobalEndpointAndCloudWatchEndpoint() { }); } - @Test - void useAwsConfigurerClient() { - this.contextRunner.withPropertyValues("management.cloudwatch.metrics.export.namespace:test") - .withUserConfiguration(CustomAwsConfigurerClient.class).run(context -> { - ConfiguredAwsClient client = new ConfiguredAwsClient(context.getBean(CloudWatchAsyncClient.class)); - assertThat(client.getApiCallTimeout()).isEqualTo(Duration.ofMillis(1542)); - assertThat(client.getAsyncHttpClient()).isNotNull(); - }); - } - - @Configuration(proxyBeanMethods = false) - static class CustomAwsConfigurerClient { - - @Bean - AwsClientCustomizer<CloudWatchAsyncClientBuilder> cloudWatchClientBuilderAwsClientConfigurer() { - return new CloudWatchAwsAsyncClientClientConfigurer(); - } - - static class CloudWatchAwsAsyncClientClientConfigurer - implements AwsClientCustomizer<CloudWatchAsyncClientBuilder> { - @Override - @Nullable - public ClientOverrideConfiguration overrideConfiguration() { - return ClientOverrideConfiguration.builder().apiCallTimeout(Duration.ofMillis(1542)).build(); - } - - @Override - @Nullable - public SdkAsyncHttpClient asyncHttpClient() { - return NettyNioAsyncHttpClient.builder().connectionTimeout(Duration.ofMillis(1542)).build(); - } - } - - } - } diff --git a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/s3/S3AutoConfigurationTests.java b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/s3/S3AutoConfigurationTests.java index 2d3b060e3..33ad29c65 100644 --- a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/s3/S3AutoConfigurationTests.java +++ b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/s3/S3AutoConfigurationTests.java @@ -22,7 +22,6 @@ import io.awspring.cloud.autoconfigure.ConfiguredAwsClient; import io.awspring.cloud.autoconfigure.ConfiguredAwsPresigner; import io.awspring.cloud.autoconfigure.core.AwsAutoConfiguration; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration; import io.awspring.cloud.autoconfigure.core.RegionProviderAutoConfiguration; import io.awspring.cloud.autoconfigure.s3.properties.S3Properties; @@ -36,7 +35,6 @@ import io.awspring.cloud.s3.S3Template; import java.io.IOException; import java.net.URI; -import java.time.Duration; import java.util.Objects; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -48,10 +46,6 @@ import org.springframework.lang.Nullable; import org.springframework.test.util.ReflectionTestUtils; import software.amazon.awssdk.awscore.defaultsmode.DefaultsMode; -import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; -import software.amazon.awssdk.core.client.config.SdkClientOption; -import software.amazon.awssdk.http.SdkHttpClient; -import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.s3accessgrants.plugin.S3AccessGrantsIdentityProvider; import software.amazon.awssdk.s3accessgrants.plugin.S3AccessGrantsPlugin; @@ -259,16 +253,6 @@ void usesCustomObjectMapperBean() { }); } - @Test - void useAwsConfigurerClient() { - contextRunner.withUserConfiguration(CustomAwsConfigurerClient.class).run(context -> { - S3ClientBuilder s3ClientBuilder = context.getBean(S3ClientBuilder.class); - assertThat(s3ClientBuilder.overrideConfiguration().apiCallTimeout()).contains(Duration.ofMillis(1542)); - AttributeMap.Builder attributeMap = resolveAttributeMap(s3ClientBuilder); - assertThat(attributeMap.get(SdkClientOption.CONFIGURED_SYNC_HTTP_CLIENT)).isNotNull(); - }); - } - @Test void usesCustomS3ObjectConverter() { contextRunner @@ -403,30 +387,6 @@ S3AesProvider aesProvider() { } } - @Configuration(proxyBeanMethods = false) - static class CustomAwsConfigurerClient { - - @Bean - AwsClientCustomizer<S3ClientBuilder> s3ClientBuilderAwsClientConfigurer() { - return new S3AwsClientClientConfigurer(); - } - - static class S3AwsClientClientConfigurer implements AwsClientCustomizer<S3ClientBuilder> { - @Override - @Nullable - public ClientOverrideConfiguration overrideConfiguration() { - return ClientOverrideConfiguration.builder().apiCallTimeout(Duration.ofMillis(1542)).build(); - } - - @Override - @Nullable - public SdkHttpClient httpClient() { - return ApacheHttpClient.builder().connectionTimeout(Duration.ofMillis(1542)).build(); - } - } - - } - static class CustomS3OutputStreamProvider implements S3OutputStreamProvider { @Override diff --git a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/ses/SesAutoConfigurationTest.java b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/ses/SesAutoConfigurationTest.java index e8c437e98..14c7f0d9e 100644 --- a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/ses/SesAutoConfigurationTest.java +++ b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/ses/SesAutoConfigurationTest.java @@ -19,24 +19,16 @@ import io.awspring.cloud.autoconfigure.ConfiguredAwsClient; import io.awspring.cloud.autoconfigure.core.AwsAutoConfiguration; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration; import io.awspring.cloud.autoconfigure.core.RegionProviderAutoConfiguration; import java.net.URI; -import java.time.Duration; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; import org.springframework.mail.MailSender; import org.springframework.mail.javamail.JavaMailSender; -import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; -import software.amazon.awssdk.http.SdkHttpClient; -import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.services.ses.SesClient; -import software.amazon.awssdk.services.ses.SesClientBuilder; /** * Tests for class {@link SesAutoConfiguration}. @@ -114,35 +106,4 @@ void withCustomGlobalEndpointAndSesEndpoint() { }); } - @Test - void customSesClientConfigurer() { - this.contextRunner.withUserConfiguration(CustomAwsClientConfig.class).run(context -> { - ConfiguredAwsClient sesClient = new ConfiguredAwsClient(context.getBean(SesClient.class)); - assertThat(sesClient.getApiCallTimeout()).isEqualTo(Duration.ofMillis(2000)); - assertThat(sesClient.getSyncHttpClient()).isNotNull(); - }); - } - - @Configuration(proxyBeanMethods = false) - static class CustomAwsClientConfig { - - @Bean - AwsClientCustomizer<SesClientBuilder> snsClientBuilderAwsClientConfigurer() { - return new CustomAwsClientConfig.SesAwsClientConfigurer(); - } - - static class SesAwsClientConfigurer implements AwsClientCustomizer<SesClientBuilder> { - @Override - public ClientOverrideConfiguration overrideConfiguration() { - return ClientOverrideConfiguration.builder().apiCallTimeout(Duration.ofMillis(2000)).build(); - } - - @Override - public SdkHttpClient httpClient() { - return ApacheHttpClient.builder().connectionTimeout(Duration.ofMillis(1542)).build(); - } - } - - } - } diff --git a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/sns/SnsAutoConfigurationTest.java b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/sns/SnsAutoConfigurationTest.java index d0d8caf8e..0ea9cf7c5 100644 --- a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/sns/SnsAutoConfigurationTest.java +++ b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/sns/SnsAutoConfigurationTest.java @@ -20,7 +20,6 @@ import io.awspring.cloud.autoconfigure.ConfiguredAwsClient; import io.awspring.cloud.autoconfigure.core.AwsAutoConfiguration; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration; import io.awspring.cloud.autoconfigure.core.RegionProviderAutoConfiguration; import io.awspring.cloud.sns.core.SnsOperations; @@ -29,8 +28,6 @@ import io.awspring.cloud.sns.sms.SnsSmsOperations; import io.awspring.cloud.sns.sms.SnsSmsTemplate; import java.net.URI; -import java.time.Duration; -import java.util.Map; import org.junit.jupiter.api.Test; import org.springframework.boot.ApplicationRunner; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -38,17 +35,10 @@ import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.lang.Nullable; import org.springframework.messaging.support.ChannelInterceptor; -import org.springframework.test.util.ReflectionTestUtils; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import software.amazon.awssdk.arns.Arn; -import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; -import software.amazon.awssdk.core.client.config.SdkClientOption; -import software.amazon.awssdk.http.SdkHttpClient; -import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.services.sns.SnsClient; -import software.amazon.awssdk.services.sns.SnsClientBuilder; /** * Tests for class {@link io.awspring.cloud.autoconfigure.sns.SnsAutoConfiguration}. @@ -102,18 +92,6 @@ void customTopicArnResolverCanBeConfigured() { .run(context -> assertThat(context).hasSingleBean(CustomTopicArnResolver.class)); } - @Test - void customSnsClientConfigurer() { - this.contextRunner.withUserConfiguration(CustomAwsClientConfig.class).run(context -> { - SnsClient snsClient = context.getBean(SnsClient.class); - - Map attributeMap = (Map) ReflectionTestUtils.getField(ReflectionTestUtils.getField( - ReflectionTestUtils.getField(snsClient, "clientConfiguration"), "attributes"), "attributes"); - assertThat(attributeMap.get(SdkClientOption.API_CALL_TIMEOUT).toString()).isEqualTo("Value(PT1.999S)"); - assertThat(attributeMap.get(SdkClientOption.SYNC_HTTP_CLIENT)).isNotNull(); - }); - } - @Test void doesNotConfigureArgumentResolversWhenSpringWebNotOnTheClasspath() { this.contextRunner.withClassLoader(new FilteredClassLoader(WebMvcConfigurer.class)).run(context -> { @@ -163,29 +141,6 @@ public Arn resolveTopicArn(String topicName) { } } - @Configuration(proxyBeanMethods = false) - static class CustomAwsClientConfig { - - @Bean - AwsClientCustomizer<SnsClientBuilder> snsClientBuilderAwsClientConfigurer() { - return new CustomAwsClientConfig.SnsAwsClientConfigurer(); - } - - static class SnsAwsClientConfigurer implements AwsClientCustomizer<SnsClientBuilder> { - @Override - @Nullable - public ClientOverrideConfiguration overrideConfiguration() { - return ClientOverrideConfiguration.builder().apiCallTimeout(Duration.ofMillis(1999)).build(); - } - - @Override - @Nullable - public SdkHttpClient httpClient() { - return ApacheHttpClient.builder().connectionTimeout(Duration.ofMillis(1542)).build(); - } - } - } - @Configuration(proxyBeanMethods = false) static class CustomSmsOperations { diff --git a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/sqs/SqsAutoConfigurationTest.java b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/sqs/SqsAutoConfigurationTest.java index 83fb77bb0..4c550dea4 100644 --- a/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/sqs/SqsAutoConfigurationTest.java +++ b/spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/sqs/SqsAutoConfigurationTest.java @@ -16,14 +16,12 @@ package io.awspring.cloud.autoconfigure.sqs; import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.InstanceOfAssertFactories.map; import static org.assertj.core.api.InstanceOfAssertFactories.type; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import io.awspring.cloud.autoconfigure.ConfiguredAwsClient; import io.awspring.cloud.autoconfigure.core.AwsAutoConfiguration; -import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer; import io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration; import io.awspring.cloud.autoconfigure.core.RegionProviderAutoConfiguration; import io.awspring.cloud.sqs.annotation.SqsListenerAnnotationBeanPostProcessor; @@ -46,22 +44,15 @@ import java.net.URI; import java.time.Duration; import java.util.List; -import java.util.Map; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.lang.Nullable; import org.springframework.messaging.converter.CompositeMessageConverter; import org.springframework.messaging.converter.MappingJackson2MessageConverter; -import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; -import software.amazon.awssdk.core.client.config.SdkClientOption; -import software.amazon.awssdk.http.async.SdkAsyncHttpClient; -import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient; import software.amazon.awssdk.services.sqs.SqsAsyncClient; -import software.amazon.awssdk.services.sqs.SqsAsyncClientBuilder; import software.amazon.awssdk.services.sqs.model.Message; /** @@ -211,25 +202,6 @@ void withObservationDisabled() { }); } - // @formatter:off - @Test - void customSqsClientConfigurer() { - this.contextRunner.withUserConfiguration(CustomAwsAsyncClientConfig.class).run(context -> { - SqsAsyncClient sqsAsyncClient = context.getBean(SqsAsyncClient.class); - assertThat(sqsAsyncClient) - .extracting("clientConfiguration") - .extracting("attributes") - .extracting("attributes") - .asInstanceOf(map(Object.class, Object.class)) - .isInstanceOfSatisfying(Map.class, attributes -> { - assertThat(attributes.get(SdkClientOption.API_CALL_TIMEOUT).toString()) - .isEqualTo("Value(PT1.999S)"); - assertThat(attributes.get(SdkClientOption.ASYNC_HTTP_CLIENT)) - .isNotNull(); - }); - }); - } - @Test void configuresFactoryComponentsAndOptions() { this.contextRunner @@ -238,33 +210,29 @@ void configuresFactoryComponentsAndOptions() { "spring.cloud.aws.sqs.listener.max-messages-per-poll:8", "spring.cloud.aws.sqs.listener.poll-timeout:6s", "spring.cloud.aws.sqs.listener.max-delay-between-polls:15s") - .withUserConfiguration(CustomComponentsConfiguration.class, ObjectMapperConfiguration.class).run(context -> { + .withUserConfiguration(CustomComponentsConfiguration.class, ObjectMapperConfiguration.class) + .run(context -> { assertThat(context).hasSingleBean(SqsMessageListenerContainerFactory.class); SqsMessageListenerContainerFactory<?> factory = context .getBean(SqsMessageListenerContainerFactory.class); - assertThat(factory) - .hasFieldOrProperty("errorHandler") - .extracting("asyncMessageInterceptors").asList().isNotEmpty(); - assertThat(factory) - .extracting("containerOptionsBuilder") - .asInstanceOf(type(ContainerOptionsBuilder.class)) - .extracting(ContainerOptionsBuilder::build) - .isInstanceOfSatisfying(ContainerOptions.class, options -> { - assertThat(options.getMaxConcurrentMessages()).isEqualTo(19); - assertThat(options.getMaxMessagesPerPoll()).isEqualTo(8); - assertThat(options.getPollTimeout()).isEqualTo(Duration.ofSeconds(6)); - assertThat(options.getMaxDelayBetweenPolls()).isEqualTo(Duration.ofSeconds(15)); - }) - .extracting("messageConverter") - .asInstanceOf(type(SqsMessagingMessageConverter.class)) - .extracting("payloadMessageConverter") - .asInstanceOf(type(CompositeMessageConverter.class)) - .extracting(CompositeMessageConverter::getConverters) - .isInstanceOfSatisfying(List.class, converters -> - assertThat(converters.get(2)).isInstanceOfSatisfying( - MappingJackson2MessageConverter.class, - jackson2MessageConverter -> - assertThat(jackson2MessageConverter.getObjectMapper().getRegisteredModuleIds()).contains("jackson-datatype-jsr310"))); + assertThat(factory).hasFieldOrProperty("errorHandler").extracting("asyncMessageInterceptors") + .asList().isNotEmpty(); + assertThat(factory).extracting("containerOptionsBuilder") + .asInstanceOf(type(ContainerOptionsBuilder.class)) + .extracting(ContainerOptionsBuilder::build) + .isInstanceOfSatisfying(ContainerOptions.class, options -> { + assertThat(options.getMaxConcurrentMessages()).isEqualTo(19); + assertThat(options.getMaxMessagesPerPoll()).isEqualTo(8); + assertThat(options.getPollTimeout()).isEqualTo(Duration.ofSeconds(6)); + assertThat(options.getMaxDelayBetweenPolls()).isEqualTo(Duration.ofSeconds(15)); + }).extracting("messageConverter").asInstanceOf(type(SqsMessagingMessageConverter.class)) + .extracting("payloadMessageConverter").asInstanceOf(type(CompositeMessageConverter.class)) + .extracting(CompositeMessageConverter::getConverters).isInstanceOfSatisfying(List.class, + converters -> assertThat(converters.get(2)).isInstanceOfSatisfying( + MappingJackson2MessageConverter.class, + jackson2MessageConverter -> assertThat( + jackson2MessageConverter.getObjectMapper().getRegisteredModuleIds()) + .contains("jackson-datatype-jsr310"))); }); } @@ -274,25 +242,22 @@ void configuresFactoryComponentsAndOptionsWithDefaults() { assertThat(context).hasSingleBean(SqsMessageListenerContainerFactory.class); var factory = context.getBean(SqsMessageListenerContainerFactory.class); assertThat(factory).hasFieldOrProperty("errorHandler").extracting("asyncMessageInterceptors").asList() - .isEmpty(); + .isEmpty(); assertThat(factory).extracting("containerOptionsBuilder").asInstanceOf(type(ContainerOptionsBuilder.class)) - .extracting(ContainerOptionsBuilder::build) - .isInstanceOfSatisfying(ContainerOptions.class, options -> { - assertThat(options.getMaxConcurrentMessages()).isEqualTo(10); - assertThat(options.getMaxMessagesPerPoll()).isEqualTo(10); - assertThat(options.getPollTimeout()).isEqualTo(Duration.ofSeconds(10)); - assertThat(options.getMaxDelayBetweenPolls()).isEqualTo(Duration.ofSeconds(10)); - }) - .extracting("messageConverter") - .asInstanceOf(type(SqsMessagingMessageConverter.class)) - .extracting("payloadMessageConverter") - .asInstanceOf(type(CompositeMessageConverter.class)) - .extracting(CompositeMessageConverter::getConverters) - .isInstanceOfSatisfying(List.class, converters -> - assertThat(converters.get(2)).isInstanceOfSatisfying( - MappingJackson2MessageConverter.class, - jackson2MessageConverter -> - assertThat(jackson2MessageConverter.getObjectMapper().getRegisteredModuleIds()).isEmpty())); + .extracting(ContainerOptionsBuilder::build) + .isInstanceOfSatisfying(ContainerOptions.class, options -> { + assertThat(options.getMaxConcurrentMessages()).isEqualTo(10); + assertThat(options.getMaxMessagesPerPoll()).isEqualTo(10); + assertThat(options.getPollTimeout()).isEqualTo(Duration.ofSeconds(10)); + assertThat(options.getMaxDelayBetweenPolls()).isEqualTo(Duration.ofSeconds(10)); + }).extracting("messageConverter").asInstanceOf(type(SqsMessagingMessageConverter.class)) + .extracting("payloadMessageConverter").asInstanceOf(type(CompositeMessageConverter.class)) + .extracting(CompositeMessageConverter::getConverters).isInstanceOfSatisfying(List.class, + converters -> assertThat(converters.get(2)).isInstanceOfSatisfying( + MappingJackson2MessageConverter.class, + jackson2MessageConverter -> assertThat( + jackson2MessageConverter.getObjectMapper().getRegisteredModuleIds()) + .isEmpty())); }); } // @formatter:on @@ -400,25 +365,4 @@ MessagingMessageConverter<Message> messageConverter() { } - @Configuration(proxyBeanMethods = false) - static class CustomAwsAsyncClientConfig { - - @Bean - AwsClientCustomizer<SqsAsyncClientBuilder> sqsClientBuilderAwsClientConfigurer() { - return new AwsClientCustomizer<>() { - @Override - @Nullable - public ClientOverrideConfiguration overrideConfiguration() { - return ClientOverrideConfiguration.builder().apiCallTimeout(Duration.ofMillis(1999)).build(); - } - - @Override - @Nullable - public SdkAsyncHttpClient asyncHttpClient() { - return NettyNioAsyncHttpClient.builder().connectionTimeout(Duration.ofMillis(1542)).build(); - } - }; - } - } - }