diff --git a/pom.xml b/pom.xml
index 114fb9c3bc..07ae040a3d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
org.springframework.cloud
spring-cloud-build
- 5.0.0-M1
+ 5.0.0-M4
diff --git a/spring-cloud-aws-autoconfigure/pom.xml b/spring-cloud-aws-autoconfigure/pom.xml
index 8d7e8e4ab2..ef155cb47b 100644
--- a/spring-cloud-aws-autoconfigure/pom.xml
+++ b/spring-cloud-aws-autoconfigure/pom.xml
@@ -31,7 +31,7 @@
org.springframework.boot
- spring-boot-metrics
+ spring-boot-micrometer-metrics
true
@@ -168,7 +168,7 @@
org.springframework.boot
- spring-boot-starter-aop
+ spring-boot-starter-aspectj
true
diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/AbstractAwsConfigDataLocationResolver.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/AbstractAwsConfigDataLocationResolver.java
index 3d0577a246..638f5a03f8 100644
--- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/AbstractAwsConfigDataLocationResolver.java
+++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/AbstractAwsConfigDataLocationResolver.java
@@ -26,9 +26,9 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-import org.springframework.boot.BootstrapContext;
-import org.springframework.boot.BootstrapRegistry;
-import org.springframework.boot.ConfigurableBootstrapContext;
+import org.springframework.boot.bootstrap.BootstrapContext;
+import org.springframework.boot.bootstrap.BootstrapRegistry;
+import org.springframework.boot.bootstrap.ConfigurableBootstrapContext;
import org.springframework.boot.context.config.ConfigDataLocation;
import org.springframework.boot.context.config.ConfigDataLocationNotFoundException;
import org.springframework.boot.context.config.ConfigDataLocationResolver;
diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/BootstrapLoggingHelper.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/BootstrapLoggingHelper.java
index e99c93eb63..9bfa2d0952 100644
--- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/BootstrapLoggingHelper.java
+++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/BootstrapLoggingHelper.java
@@ -20,7 +20,7 @@
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
-import org.springframework.boot.BootstrapRegistry;
+import org.springframework.boot.bootstrap.BootstrapRegistry;
import org.springframework.boot.logging.DeferredLogFactory;
import org.springframework.util.ClassUtils;
import org.springframework.util.ReflectionUtils;
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 a6620b4472..8e624326ff 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
@@ -23,7 +23,7 @@
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
-import org.springframework.boot.BootstrapContext;
+import org.springframework.boot.bootstrap.BootstrapContext;
import org.springframework.boot.context.config.ConfigDataLocation;
import org.springframework.boot.context.config.ConfigDataLocationNotFoundException;
import org.springframework.boot.context.config.ConfigDataLocationResolverContext;
diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/s3/S3ConfigDataLocationResolver.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/s3/S3ConfigDataLocationResolver.java
index 3e52c4f684..91b39e4f55 100644
--- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/s3/S3ConfigDataLocationResolver.java
+++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/config/s3/S3ConfigDataLocationResolver.java
@@ -23,7 +23,7 @@
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
-import org.springframework.boot.BootstrapContext;
+import org.springframework.boot.bootstrap.BootstrapContext;
import org.springframework.boot.context.config.ConfigDataLocation;
import org.springframework.boot.context.config.ConfigDataLocationNotFoundException;
import org.springframework.boot.context.config.ConfigDataLocationResolverContext;
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 05e6c2ddbf..2e0f4594e2 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
@@ -23,7 +23,7 @@
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
-import org.springframework.boot.BootstrapContext;
+import org.springframework.boot.bootstrap.BootstrapContext;
import org.springframework.boot.context.config.*;
import org.springframework.boot.context.properties.bind.Bindable;
import org.springframework.boot.context.properties.bind.Binder;
diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/core/CredentialsProviderAutoConfiguration.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/core/CredentialsProviderAutoConfiguration.java
index 3b7c2eefd3..407ca49ee0 100644
--- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/core/CredentialsProviderAutoConfiguration.java
+++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/core/CredentialsProviderAutoConfiguration.java
@@ -159,10 +159,10 @@ private static AwsCredentialsProvider create(@Nullable StsProperties stsProperti
if (stsProperties != null) {
builder.asyncCredentialUpdateEnabled(stsProperties.isAsyncCredentialsUpdate());
- propertyMapper.from(stsProperties::getRoleArn).whenNonNull().to(builder::roleArn);
- propertyMapper.from(stsProperties::getWebIdentityTokenFile).whenNonNull()
+ propertyMapper.from(stsProperties::getRoleArn).to(builder::roleArn);
+ propertyMapper.from(stsProperties::getWebIdentityTokenFile)
.to(b -> builder.webIdentityTokenFile(Paths.get(b)));
- propertyMapper.from(stsProperties::getRoleSessionName).whenNonNull().to(builder::roleSessionName);
+ propertyMapper.from(stsProperties::getRoleSessionName).to(builder::roleSessionName);
}
return builder.build();
}
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 68792069cb..bb51a0479b 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
@@ -77,24 +77,20 @@ public DynamoDbClient dynamoDbClient(DynamoDbProperties properties, AwsCredentia
PropertyMapper propertyMapper = PropertyMapper.get();
software.amazon.dax.Configuration.Builder configuration = software.amazon.dax.Configuration.builder();
- propertyMapper.from(daxProperties.getIdleTimeoutMillis()).whenNonNull()
- .to(configuration::idleTimeoutMillis);
- propertyMapper.from(daxProperties.getConnectionTtlMillis()).whenNonNull()
- .to(configuration::connectionTtlMillis);
- propertyMapper.from(daxProperties.getConnectTimeoutMillis()).whenNonNull()
- .to(configuration::connectTimeoutMillis);
- propertyMapper.from(daxProperties.getRequestTimeoutMillis()).whenNonNull()
- .to(configuration::requestTimeoutMillis);
- propertyMapper.from(daxProperties.getWriteRetries()).whenNonNull().to(configuration::writeRetries);
- propertyMapper.from(daxProperties.getReadRetries()).whenNonNull().to(configuration::readRetries);
- propertyMapper.from(daxProperties.getClusterUpdateIntervalMillis()).whenNonNull()
+ propertyMapper.from(daxProperties.getIdleTimeoutMillis()).to(configuration::idleTimeoutMillis);
+ propertyMapper.from(daxProperties.getConnectionTtlMillis()).to(configuration::connectionTtlMillis);
+ propertyMapper.from(daxProperties.getConnectTimeoutMillis()).to(configuration::connectTimeoutMillis);
+ propertyMapper.from(daxProperties.getRequestTimeoutMillis()).to(configuration::requestTimeoutMillis);
+ propertyMapper.from(daxProperties.getWriteRetries()).to(configuration::writeRetries);
+ propertyMapper.from(daxProperties.getReadRetries()).to(configuration::readRetries);
+ propertyMapper.from(daxProperties.getClusterUpdateIntervalMillis())
.to(configuration::clusterUpdateIntervalMillis);
- propertyMapper.from(daxProperties.getEndpointRefreshTimeoutMillis()).whenNonNull()
+ propertyMapper.from(daxProperties.getEndpointRefreshTimeoutMillis())
.to(configuration::endpointRefreshTimeoutMillis);
- propertyMapper.from(daxProperties.getMaxConcurrency()).whenNonNull().to(configuration::maxConcurrency);
- propertyMapper.from(daxProperties.getMaxPendingConnectionAcquires()).whenNonNull()
+ propertyMapper.from(daxProperties.getMaxConcurrency()).to(configuration::maxConcurrency);
+ propertyMapper.from(daxProperties.getMaxPendingConnectionAcquires())
.to(configuration::maxPendingConnectionAcquires);
- propertyMapper.from(daxProperties.getSkipHostNameVerification()).whenNonNull()
+ propertyMapper.from(daxProperties.getSkipHostNameVerification())
.to(configuration::skipHostNameVerification);
configuration.region(AwsClientBuilderConfigurer.resolveRegion(properties,
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 83b828a41f..bacb1cda80 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
@@ -31,9 +31,10 @@
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.boot.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration;
-import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
-import org.springframework.boot.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration;
+import org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration;
+import org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration;
+import org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration;
+import org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration;
import org.springframework.context.annotation.Bean;
import software.amazon.awssdk.regions.providers.AwsRegionProvider;
import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient;
@@ -50,7 +51,7 @@
@AutoConfiguration
@AutoConfigureBefore({ CompositeMeterRegistryAutoConfiguration.class, SimpleMetricsExportAutoConfiguration.class })
@AutoConfigureAfter({ CredentialsProviderAutoConfiguration.class, RegionProviderAutoConfiguration.class,
- MetricsAutoConfiguration.class })
+ ObservationAutoConfiguration.class, MetricsAutoConfiguration.class })
@EnableConfigurationProperties({ CloudWatchRegistryProperties.class, CloudWatchProperties.class })
@ConditionalOnProperty(prefix = "management.cloudwatch.metrics.export", name = "namespace")
@ConditionalOnClass({ CloudWatchAsyncClient.class, CloudWatchMeterRegistry.class, AwsRegionProvider.class })
diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchPropertiesConfigAdapter.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchPropertiesConfigAdapter.java
index ba6ebef233..a9bc0ca111 100644
--- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchPropertiesConfigAdapter.java
+++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchPropertiesConfigAdapter.java
@@ -16,7 +16,7 @@
package io.awspring.cloud.autoconfigure.metrics;
import io.micrometer.cloudwatch2.CloudWatchConfig;
-import org.springframework.boot.metrics.autoconfigure.export.properties.StepRegistryPropertiesConfigAdapter;
+import org.springframework.boot.micrometer.metrics.autoconfigure.export.properties.StepRegistryPropertiesConfigAdapter;
/**
* Adapter to convert {@link CloudWatchRegistryProperties} to a {@link CloudWatchConfig}.
diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchRegistryProperties.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchRegistryProperties.java
index 9976bf89e6..11e16bbb15 100644
--- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchRegistryProperties.java
+++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/metrics/CloudWatchRegistryProperties.java
@@ -16,7 +16,7 @@
package io.awspring.cloud.autoconfigure.metrics;
import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.metrics.autoconfigure.export.properties.StepRegistryProperties;
+import org.springframework.boot.micrometer.metrics.autoconfigure.export.properties.StepRegistryProperties;
/**
* {@link ConfigurationProperties} for configuring CloudWatch metrics export.
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 2d43ebdbe3..d4d865cc87 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
@@ -15,7 +15,6 @@
*/
package io.awspring.cloud.autoconfigure.s3;
-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.AwsConnectionDetails;
@@ -49,6 +48,7 @@
import software.amazon.awssdk.services.s3.S3ClientBuilder;
import software.amazon.awssdk.services.s3.presigner.S3Presigner;
import software.amazon.encryption.s3.S3EncryptionClient;
+import tools.jackson.databind.json.JsonMapper;
/**
* {@link AutoConfiguration} for {@link S3Client} and {@link S3ProtocolResolver}.
@@ -188,13 +188,13 @@ S3Client s3Client(S3ClientBuilder s3ClientBuilder) {
}
@Configuration
- @ConditionalOnClass(ObjectMapper.class)
+ @ConditionalOnClass(JsonMapper.class)
static class Jackson2JsonS3ObjectConverterConfiguration {
@ConditionalOnMissingBean
@Bean
- S3ObjectConverter s3ObjectConverter(Optional objectMapper) {
- return new Jackson2JsonS3ObjectConverter(objectMapper.orElseGet(ObjectMapper::new));
+ S3ObjectConverter s3ObjectConverter(Optional jsonMapper) {
+ return new Jackson2JsonS3ObjectConverter(jsonMapper.orElseGet(JsonMapper::new));
}
}
diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3CrtAsyncClientAutoConfiguration.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3CrtAsyncClientAutoConfiguration.java
index 24d795872a..0cfc3f0339 100644
--- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3CrtAsyncClientAutoConfiguration.java
+++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3CrtAsyncClientAutoConfiguration.java
@@ -78,11 +78,10 @@ S3AsyncClient s3AsyncClient(AwsCredentialsProvider credentialsProvider,
if (this.properties.getCrt() != null) {
S3CrtClientProperties crt = this.properties.getCrt();
PropertyMapper propertyMapper = PropertyMapper.get();
- propertyMapper.from(crt::getMaxConcurrency).whenNonNull().to(builder::maxConcurrency);
- propertyMapper.from(crt::getTargetThroughputInGbps).whenNonNull().to(builder::targetThroughputInGbps);
- propertyMapper.from(crt::getMinimumPartSizeInBytes).whenNonNull().to(builder::minimumPartSizeInBytes);
- propertyMapper.from(crt::getInitialReadBufferSizeInBytes).whenNonNull()
- .to(builder::initialReadBufferSizeInBytes);
+ propertyMapper.from(crt::getMaxConcurrency).to(builder::maxConcurrency);
+ propertyMapper.from(crt::getTargetThroughputInGbps).to(builder::targetThroughputInGbps);
+ propertyMapper.from(crt::getMinimumPartSizeInBytes).to(builder::minimumPartSizeInBytes);
+ propertyMapper.from(crt::getInitialReadBufferSizeInBytes).to(builder::initialReadBufferSizeInBytes);
}
return builder.build();
diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3TransferManagerAutoConfiguration.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3TransferManagerAutoConfiguration.java
index a49258ef0c..8b204bc712 100644
--- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3TransferManagerAutoConfiguration.java
+++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3TransferManagerAutoConfiguration.java
@@ -72,9 +72,8 @@ S3TransferManager s3TransferManager(ObjectProvider s3AsyncClient)
if (this.properties.getTransferManager() != null) {
S3TransferManagerProperties transferManagerProperties = this.properties.getTransferManager();
PropertyMapper propertyMapper = PropertyMapper.get();
- propertyMapper.from(transferManagerProperties::getMaxDepth).whenNonNull()
- .to(builder::uploadDirectoryMaxDepth);
- propertyMapper.from(transferManagerProperties::getFollowSymbolicLinks).whenNonNull()
+ propertyMapper.from(transferManagerProperties::getMaxDepth).to(builder::uploadDirectoryMaxDepth);
+ propertyMapper.from(transferManagerProperties::getFollowSymbolicLinks)
.to(builder::uploadDirectoryFollowSymbolicLinks);
}
return builder.s3Client(s3AsyncClient.getIfAvailable()).build();
diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/properties/S3Properties.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/properties/S3Properties.java
index 8d45c6270f..a3a19c4a05 100644
--- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/properties/S3Properties.java
+++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/properties/S3Properties.java
@@ -202,11 +202,11 @@ public void setCrt(@Nullable S3CrtClientProperties crt) {
public S3Configuration toS3Configuration() {
S3Configuration.Builder config = S3Configuration.builder();
PropertyMapper propertyMapper = PropertyMapper.get();
- propertyMapper.from(this::getAccelerateModeEnabled).whenNonNull().to(config::accelerateModeEnabled);
- propertyMapper.from(this::getChecksumValidationEnabled).whenNonNull().to(config::checksumValidationEnabled);
- propertyMapper.from(this::getChunkedEncodingEnabled).whenNonNull().to(config::chunkedEncodingEnabled);
- propertyMapper.from(this::getPathStyleAccessEnabled).whenNonNull().to(config::pathStyleAccessEnabled);
- propertyMapper.from(this::getUseArnRegionEnabled).whenNonNull().to(config::useArnRegionEnabled);
+ propertyMapper.from(this::getAccelerateModeEnabled).to(config::accelerateModeEnabled);
+ propertyMapper.from(this::getChecksumValidationEnabled).to(config::checksumValidationEnabled);
+ propertyMapper.from(this::getChunkedEncodingEnabled).to(config::chunkedEncodingEnabled);
+ propertyMapper.from(this::getPathStyleAccessEnabled).to(config::pathStyleAccessEnabled);
+ propertyMapper.from(this::getUseArnRegionEnabled).to(config::useArnRegionEnabled);
return config.build();
}
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 8b2c3b4a14..ddb33a7339 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
@@ -17,7 +17,6 @@
import static io.awspring.cloud.sns.configuration.NotificationHandlerMethodArgumentResolverConfigurationUtils.getNotificationHandlerMethodArgumentResolver;
-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.AwsConnectionDetails;
@@ -40,11 +39,12 @@
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.messaging.converter.MappingJackson2MessageConverter;
+import org.springframework.messaging.converter.JacksonJsonMessageConverter;
import org.springframework.messaging.support.ChannelInterceptor;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import software.amazon.awssdk.services.sns.SnsClient;
+import tools.jackson.databind.json.JsonMapper;
/**
* {@link EnableAutoConfiguration Auto-configuration} for SNS integration.
@@ -78,11 +78,16 @@ public SnsClient snsClient(SnsProperties properties, AwsClientBuilderConfigurer
@ConditionalOnMissingBean(SnsOperations.class)
@Bean
- public SnsTemplate snsTemplate(SnsClient snsClient, Optional objectMapper,
+ public SnsTemplate snsTemplate(SnsClient snsClient, Optional jsonMapper,
Optional topicArnResolver, ObjectProvider interceptors) {
- MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
+ JacksonJsonMessageConverter converter;
+ if (jsonMapper.isPresent()) {
+ converter = new JacksonJsonMessageConverter(jsonMapper.get());
+ }
+ else {
+ converter = new JacksonJsonMessageConverter();
+ }
converter.setSerializedPayloadClass(String.class);
- objectMapper.ifPresent(converter::setObjectMapper);
SnsTemplate snsTemplate = topicArnResolver.map(it -> new SnsTemplate(snsClient, it, converter))
.orElseGet(() -> new SnsTemplate(snsClient, converter));
interceptors.forEach(snsTemplate::addChannelInterceptor);
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 77320f67fb..39e8eb47fb 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
@@ -15,7 +15,6 @@
*/
package io.awspring.cloud.autoconfigure.sqs;
-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.AwsConnectionDetails;
@@ -49,6 +48,7 @@
import org.springframework.context.annotation.Import;
import software.amazon.awssdk.services.sqs.SqsAsyncClient;
import software.amazon.awssdk.services.sqs.model.Message;
+import tools.jackson.databind.json.JsonMapper;
/**
* {@link EnableAutoConfiguration Auto-configuration} for SQS integration.
@@ -87,13 +87,12 @@ public SqsAsyncClient sqsAsyncClient(AwsClientBuilderConfigurer awsClientBuilder
@ConditionalOnMissingBean
@Bean
- public SqsTemplate sqsTemplate(SqsAsyncClient sqsAsyncClient, ObjectProvider objectMapperProvider,
+ public SqsTemplate sqsTemplate(SqsAsyncClient sqsAsyncClient,
ObjectProvider observationRegistryProvider,
ObjectProvider observationConventionProvider,
MessagingMessageConverter messageConverter) {
SqsTemplateBuilder builder = SqsTemplate.builder().sqsAsyncClient(sqsAsyncClient)
.messageConverter(messageConverter);
- objectMapperProvider.ifAvailable(om -> setMapperToConverter(messageConverter, om));
if (this.sqsProperties.isObservationEnabled()) {
observationRegistryProvider
.ifAvailable(registry -> builder.configure(options -> options.observationRegistry(registry)));
@@ -114,7 +113,7 @@ public SqsMessageListenerContainerFactory
- com.fasterxml.jackson.core
+ tools.jackson.core
jackson-databind
diff --git a/spring-cloud-aws-s3/src/main/java/io/awspring/cloud/s3/Jackson2JsonS3ObjectConverter.java b/spring-cloud-aws-s3/src/main/java/io/awspring/cloud/s3/Jackson2JsonS3ObjectConverter.java
index 02317595f0..e2ccae49d7 100644
--- a/spring-cloud-aws-s3/src/main/java/io/awspring/cloud/s3/Jackson2JsonS3ObjectConverter.java
+++ b/spring-cloud-aws-s3/src/main/java/io/awspring/cloud/s3/Jackson2JsonS3ObjectConverter.java
@@ -15,12 +15,11 @@
*/
package io.awspring.cloud.s3;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.IOException;
import java.io.InputStream;
import org.springframework.util.Assert;
import software.amazon.awssdk.core.sync.RequestBody;
+import tools.jackson.core.JacksonException;
+import tools.jackson.databind.json.JsonMapper;
/**
* Jackson based implementation of {@link S3ObjectConverter}. Serializes/deserializes objects to/from JSON.
@@ -29,20 +28,20 @@
* @since 3.0
*/
public class Jackson2JsonS3ObjectConverter implements S3ObjectConverter {
- private final ObjectMapper objectMapper;
+ private final JsonMapper jsonMapper;
- public Jackson2JsonS3ObjectConverter(ObjectMapper objectMapper) {
- Assert.notNull(objectMapper, "objectMapper is required");
- this.objectMapper = objectMapper;
+ public Jackson2JsonS3ObjectConverter(JsonMapper jsonMapper) {
+ Assert.notNull(jsonMapper, "objectMapper is required");
+ this.jsonMapper = jsonMapper;
}
@Override
public RequestBody write(T object) {
Assert.notNull(object, "object is required");
try {
- return RequestBody.fromBytes(objectMapper.writeValueAsBytes(object));
+ return RequestBody.fromBytes(jsonMapper.writeValueAsBytes(object));
}
- catch (JsonProcessingException e) {
+ catch (JacksonException e) {
throw new S3Exception("Failed to serialize object to JSON", e);
}
}
@@ -52,9 +51,9 @@ public T read(InputStream is, Class clazz) {
Assert.notNull(is, "InputStream is required");
Assert.notNull(clazz, "Clazz is required");
try {
- return objectMapper.readValue(is, clazz);
+ return jsonMapper.readValue(is, clazz);
}
- catch (IOException e) {
+ catch (JacksonException e) {
throw new S3Exception("Failed to deserialize object from JSON", e);
}
}
diff --git a/spring-cloud-aws-s3/src/test/java/io/awspring/cloud/s3/S3TemplateIntegrationTests.java b/spring-cloud-aws-s3/src/test/java/io/awspring/cloud/s3/S3TemplateIntegrationTests.java
index f3b127b07e..6517a15efd 100644
--- a/spring-cloud-aws-s3/src/test/java/io/awspring/cloud/s3/S3TemplateIntegrationTests.java
+++ b/spring-cloud-aws-s3/src/test/java/io/awspring/cloud/s3/S3TemplateIntegrationTests.java
@@ -19,7 +19,6 @@
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.assertj.core.api.Assertions.assertThatNoException;
-import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -53,6 +52,7 @@
import software.amazon.awssdk.services.s3.model.ListBucketsResponse;
import software.amazon.awssdk.services.s3.model.NoSuchKeyException;
import software.amazon.awssdk.services.s3.presigner.S3Presigner;
+import tools.jackson.databind.json.JsonMapper;
/**
* Integration tests for {@link S3Template}.
@@ -85,7 +85,7 @@ static void beforeAll() {
void init() {
this.s3Template = new S3Template(client,
new DiskBufferingS3OutputStreamProvider(client, new PropertiesS3ObjectContentTypeResolver()),
- new Jackson2JsonS3ObjectConverter(new ObjectMapper()), presigner);
+ new Jackson2JsonS3ObjectConverter(new JsonMapper()), presigner);
client.createBucket(r -> r.bucket(BUCKET_NAME));
}
diff --git a/spring-cloud-aws-secrets-manager/pom.xml b/spring-cloud-aws-secrets-manager/pom.xml
index d7f474d98d..1a9a062698 100644
--- a/spring-cloud-aws-secrets-manager/pom.xml
+++ b/spring-cloud-aws-secrets-manager/pom.xml
@@ -27,7 +27,7 @@
secretsmanager
- com.fasterxml.jackson.core
+ tools.jackson.core
jackson-databind
diff --git a/spring-cloud-aws-secrets-manager/src/main/java/io/awspring/cloud/secretsmanager/SecretsManagerPropertySource.java b/spring-cloud-aws-secrets-manager/src/main/java/io/awspring/cloud/secretsmanager/SecretsManagerPropertySource.java
index 2c7f02059a..ec1b356903 100644
--- a/spring-cloud-aws-secrets-manager/src/main/java/io/awspring/cloud/secretsmanager/SecretsManagerPropertySource.java
+++ b/spring-cloud-aws-secrets-manager/src/main/java/io/awspring/cloud/secretsmanager/SecretsManagerPropertySource.java
@@ -15,10 +15,6 @@
*/
package io.awspring.cloud.secretsmanager;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.core.config.AwsPropertySource;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -31,6 +27,9 @@
import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueRequest;
import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueResponse;
import software.amazon.awssdk.services.secretsmanager.model.ResourceNotFoundException;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.type.TypeReference;
+import tools.jackson.databind.json.JsonMapper;
/**
* Retrieves secret value under the given context / path from the AWS Secrets Manager using the provided Secrets Manager
@@ -48,7 +47,7 @@ public class SecretsManagerPropertySource
private static Log LOG = LogFactory.getLog(SecretsManagerPropertySource.class);
private static final String PREFIX_PART = "?prefix=";
- private final ObjectMapper jsonMapper = new ObjectMapper();
+ private final JsonMapper jsonMapper = new JsonMapper();
/**
* Full secret path containing both secret id and prefix.
@@ -112,7 +111,7 @@ private void readSecretValue(GetSecretValueRequest secretValueRequest) {
properties.put(propertyKey, secretEntry.getValue());
}
}
- catch (JsonParseException e) {
+ catch (JacksonException e) {
// If the secret is not a JSON string, then it is a simple "plain text" string
String[] parts = secretValueResponse.name().split("/");
String secretName = parts[parts.length - 1];
@@ -120,7 +119,7 @@ private void readSecretValue(GetSecretValueRequest secretValueRequest) {
String propertyKey = prefix != null ? prefix + secretName : secretName;
properties.put(propertyKey, secretValueResponse.secretString());
}
- catch (JsonProcessingException e) {
+ catch (Exception e) {
throw new RuntimeException(e);
}
}
diff --git a/spring-cloud-aws-sns/pom.xml b/spring-cloud-aws-sns/pom.xml
index c825518b21..3d07d6ccc9 100644
--- a/spring-cloud-aws-sns/pom.xml
+++ b/spring-cloud-aws-sns/pom.xml
@@ -28,7 +28,7 @@
spring-messaging
- com.fasterxml.jackson.core
+ tools.jackson.core
jackson-databind
diff --git a/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/core/TopicMessageChannel.java b/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/core/TopicMessageChannel.java
index 4e9eed44ab..d12203843f 100644
--- a/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/core/TopicMessageChannel.java
+++ b/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/core/TopicMessageChannel.java
@@ -19,7 +19,6 @@
import static io.awspring.cloud.sns.core.SnsHeaders.MESSAGE_GROUP_ID_HEADER;
import static io.awspring.cloud.sns.core.SnsHeaders.NOTIFICATION_SUBJECT_HEADER;
-import com.fasterxml.jackson.core.io.JsonStringEncoder;
import java.nio.ByteBuffer;
import java.util.HashMap;
import java.util.List;
@@ -38,6 +37,7 @@
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.MessageAttributeValue;
import software.amazon.awssdk.services.sns.model.PublishRequest;
+import tools.jackson.core.io.JsonStringEncoder;
/**
* Implementation of {@link AbstractMessageChannel} which is used for converting and sending messages via
@@ -134,10 +134,11 @@ private boolean isSkipHeader(String headerName) {
}
private MessageAttributeValue getStringArrayMessageAttribute(List messageHeaderValue) {
-
- String stringValue = "[" + messageHeaderValue.stream()
- .map(item -> "\"" + String.valueOf(jsonStringEncoder.quoteAsString(item.toString())) + "\"")
- .collect(Collectors.joining(", ")) + "]";
+ String stringValue = messageHeaderValue.stream().map(item -> {
+ StringBuilder sb = new StringBuilder();
+ JsonStringEncoder.getInstance().quoteAsString(item.toString(), sb);
+ return "\"" + sb + "\"";
+ }).collect(Collectors.joining(", ", "[", "]"));
return MessageAttributeValue.builder().dataType(MessageAttributeDataTypes.STRING_ARRAY).stringValue(stringValue)
.build();
diff --git a/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/handlers/AbstractNotificationMessageHandlerMethodArgumentResolver.java b/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/handlers/AbstractNotificationMessageHandlerMethodArgumentResolver.java
index cea1d55dc1..1e3fb77a07 100644
--- a/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/handlers/AbstractNotificationMessageHandlerMethodArgumentResolver.java
+++ b/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/handlers/AbstractNotificationMessageHandlerMethodArgumentResolver.java
@@ -15,11 +15,10 @@
*/
package io.awspring.cloud.sns.handlers;
-import com.fasterxml.jackson.databind.JsonNode;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.core.MethodParameter;
import org.springframework.http.HttpInputMessage;
-import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.util.Assert;
import org.springframework.web.bind.support.WebDataBinderFactory;
@@ -27,6 +26,7 @@
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;
+import tools.jackson.databind.JsonNode;
/**
* @author Agim Emruli
@@ -37,7 +37,7 @@ public abstract class AbstractNotificationMessageHandlerMethodArgumentResolver
private static final String NOTIFICATION_REQUEST_ATTRIBUTE_NAME = "NOTIFICATION_REQUEST";
- private final MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
+ private final JacksonJsonHttpMessageConverter messageConverter = new JacksonJsonHttpMessageConverter();
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
diff --git a/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/handlers/NotificationMessageHandlerMethodArgumentResolver.java b/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/handlers/NotificationMessageHandlerMethodArgumentResolver.java
index db64d786da..6e974e0911 100644
--- a/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/handlers/NotificationMessageHandlerMethodArgumentResolver.java
+++ b/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/handlers/NotificationMessageHandlerMethodArgumentResolver.java
@@ -15,7 +15,6 @@
*/
package io.awspring.cloud.sns.handlers;
-import com.fasterxml.jackson.databind.JsonNode;
import io.awspring.cloud.sns.annotation.handlers.NotificationMessage;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
@@ -30,8 +29,9 @@
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.StringHttpMessageConverter;
-import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter;
import org.springframework.util.StringUtils;
+import tools.jackson.databind.JsonNode;
/**
* Handles conversion of SNS notification value to a variable that is annotated with {@link NotificationMessage}.
@@ -47,7 +47,7 @@ public class NotificationMessageHandlerMethodArgumentResolver
private final List> messageConverter;
public NotificationMessageHandlerMethodArgumentResolver() {
- this(Arrays.asList(new MappingJackson2HttpMessageConverter(), new StringHttpMessageConverter()));
+ this(Arrays.asList(new JacksonJsonHttpMessageConverter(), new StringHttpMessageConverter()));
}
public NotificationMessageHandlerMethodArgumentResolver(List> messageConverter) {
@@ -57,7 +57,7 @@ public NotificationMessageHandlerMethodArgumentResolver(List parameterType) {
- if (!"SubscriptionConfirmation".equals(content.get("Type").asText())
- && !"UnsubscribeConfirmation".equals(content.get("Type").asText())) {
+ if (!"SubscriptionConfirmation".equals(content.get("Type").asString())
+ && !"UnsubscribeConfirmation".equals(content.get("Type").asString())) {
throw new IllegalArgumentException(
"NotificationStatus is only available for subscription and unsubscription requests");
}
- return new AmazonSnsNotificationStatus(this.snsClient, content.get("TopicArn").asText(),
- content.get("Token").asText());
+ return new AmazonSnsNotificationStatus(this.snsClient, content.get("TopicArn").asString(),
+ content.get("Token").asString());
}
public static final class AmazonSnsNotificationStatus implements NotificationStatus {
diff --git a/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/handlers/NotificationSubjectHandlerMethodArgumentResolver.java b/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/handlers/NotificationSubjectHandlerMethodArgumentResolver.java
index 6edc60cb9c..fe883b5287 100644
--- a/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/handlers/NotificationSubjectHandlerMethodArgumentResolver.java
+++ b/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/handlers/NotificationSubjectHandlerMethodArgumentResolver.java
@@ -15,11 +15,11 @@
*/
package io.awspring.cloud.sns.handlers;
-import com.fasterxml.jackson.databind.JsonNode;
import io.awspring.cloud.sns.annotation.handlers.NotificationSubject;
import org.springframework.core.MethodParameter;
import org.springframework.http.HttpInputMessage;
import org.springframework.util.ClassUtils;
+import tools.jackson.databind.JsonNode;
/**
*
@@ -39,11 +39,11 @@ public boolean supportsParameter(MethodParameter parameter) {
@Override
protected Object doResolveArgumentFromNotificationMessage(JsonNode content, HttpInputMessage request,
Class> parameterType) {
- if (!"Notification".equals(content.get("Type").asText())) {
+ if (!"Notification".equals(content.get("Type").asString())) {
throw new IllegalArgumentException(
"@NotificationMessage annotated parameters are only allowed for method that receive a notification message.");
}
- return content.findPath("Subject").asText();
+ return content.findPath("Subject").asString();
}
}
diff --git a/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/integration/SnsInboundChannelAdapter.java b/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/integration/SnsInboundChannelAdapter.java
index a20c79c8b9..498c22497f 100644
--- a/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/integration/SnsInboundChannelAdapter.java
+++ b/spring-cloud-aws-sns/src/main/java/io/awspring/cloud/sns/integration/SnsInboundChannelAdapter.java
@@ -15,7 +15,6 @@
*/
package io.awspring.cloud.sns.integration;
-import com.fasterxml.jackson.databind.JsonNode;
import io.awspring.cloud.sns.core.SnsHeaders;
import io.awspring.cloud.sns.handlers.NotificationStatus;
import io.awspring.cloud.sns.handlers.NotificationStatusHandlerMethodArgumentResolver;
@@ -31,6 +30,7 @@
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter;
import org.springframework.integration.expression.ValueExpression;
import org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway;
import org.springframework.integration.http.inbound.RequestMapping;
@@ -40,6 +40,7 @@
import org.springframework.util.Assert;
import org.springframework.web.multipart.MultipartResolver;
import software.amazon.awssdk.services.sns.SnsClient;
+import tools.jackson.databind.JsonNode;
/**
* The {@link HttpRequestHandlingMessagingGateway} extension for the Amazon WS SNS HTTP(S) endpoints. Accepts all
@@ -72,7 +73,7 @@ public class SnsInboundChannelAdapter extends HttpRequestHandlingMessagingGatewa
private final NotificationStatusResolver notificationStatusResolver;
- private final org.springframework.http.converter.json.MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new org.springframework.http.converter.json.MappingJackson2HttpMessageConverter();
+ private final JacksonJsonHttpMessageConverter jackson2HttpMessageConverter = new JacksonJsonHttpMessageConverter();
private final String[] path;
@@ -140,7 +141,7 @@ protected void send(Object object) {
String type = payload.get("Type");
if ("SubscriptionConfirmation".equals(type) || "UnsubscribeConfirmation".equals(type)) {
- JsonNode content = this.jackson2HttpMessageConverter.getObjectMapper().valueToTree(payload);
+ JsonNode content = this.jackson2HttpMessageConverter.getMapper().valueToTree(payload);
NotificationStatus notificationStatus = this.notificationStatusResolver.resolveNotificationStatus(content);
if (this.handleNotificationStatus) {
messageToSendBuilder.setHeader(SnsHeaders.NOTIFICATION_STATUS_HEADER, notificationStatus);
diff --git a/spring-cloud-aws-sns/src/test/java/io/awspring/cloud/sns/core/SnsTemplateTest.java b/spring-cloud-aws-sns/src/test/java/io/awspring/cloud/sns/core/SnsTemplateTest.java
index e215d3b2c3..663fa9cca2 100644
--- a/spring-cloud-aws-sns/src/test/java/io/awspring/cloud/sns/core/SnsTemplateTest.java
+++ b/spring-cloud-aws-sns/src/test/java/io/awspring/cloud/sns/core/SnsTemplateTest.java
@@ -29,7 +29,7 @@
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.MessageHeaders;
-import org.springframework.messaging.converter.MappingJackson2MessageConverter;
+import org.springframework.messaging.converter.JacksonJsonMessageConverter;
import org.springframework.messaging.support.ChannelInterceptor;
import org.springframework.messaging.support.GenericMessage;
import software.amazon.awssdk.services.sns.SnsClient;
@@ -52,7 +52,7 @@ class SnsTemplateTest {
@BeforeEach
void init() {
- MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
+ JacksonJsonMessageConverter converter = new JacksonJsonMessageConverter();
converter.setSerializedPayloadClass(String.class);
snsTemplate = new SnsTemplate(snsClient, new DefaultTopicArnResolver(snsClient), converter);
diff --git a/spring-cloud-aws-sns/src/test/java/io/awspring/cloud/sns/handlers/BaseNotificationMessageHandlerMethodArgumentResolverTest.java b/spring-cloud-aws-sns/src/test/java/io/awspring/cloud/sns/handlers/BaseNotificationMessageHandlerMethodArgumentResolverTest.java
index 92096bca53..85fda2c328 100644
--- a/spring-cloud-aws-sns/src/test/java/io/awspring/cloud/sns/handlers/BaseNotificationMessageHandlerMethodArgumentResolverTest.java
+++ b/spring-cloud-aws-sns/src/test/java/io/awspring/cloud/sns/handlers/BaseNotificationMessageHandlerMethodArgumentResolverTest.java
@@ -17,8 +17,6 @@
import static org.assertj.core.api.Assertions.assertThat;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
import org.junit.jupiter.api.Test;
import org.springframework.core.MethodParameter;
import org.springframework.http.HttpInputMessage;
@@ -26,6 +24,8 @@
import org.springframework.util.FileCopyUtils;
import org.springframework.util.ReflectionUtils;
import org.springframework.web.context.request.ServletWebRequest;
+import tools.jackson.databind.JsonNode;
+import tools.jackson.databind.node.ObjectNode;
class BaseNotificationMessageHandlerMethodArgumentResolverTest {
@@ -64,30 +64,32 @@ public boolean supportsParameter(MethodParameter parameter) {
ObjectNode content = (ObjectNode) resolver.resolveArgument(methodParameter, null, servletWebRequest, null);
// Assert
- assertThat(content.get("Type").asText()).isEqualTo("SubscriptionConfirmation");
- assertThat(content.get("MessageId").asText()).isEqualTo("e267b24c-5532-472f-889d-c2cdd2143bbc");
- assertThat(content.get("Token").asText()).isEqualTo("111111111111111111111111111111111111111111111111111111111"
- + "111111111111111111111111111111111111111111111111111111111111111"
- + "111111111111111111111111111111111111111111111111111111111111111" + "111111111111111111111111111");
- assertThat(content.get("TopicArn").asText()).isEqualTo("arn:aws:sns:eu-west-1:111111111111:mySampleTopic");
- assertThat(content.get("Message").asText())
+ assertThat(content.get("Type").asString()).isEqualTo("SubscriptionConfirmation");
+ assertThat(content.get("MessageId").asString()).isEqualTo("e267b24c-5532-472f-889d-c2cdd2143bbc");
+ assertThat(content.get("Token").asString())
+ .isEqualTo("111111111111111111111111111111111111111111111111111111111"
+ + "111111111111111111111111111111111111111111111111111111111111111"
+ + "111111111111111111111111111111111111111111111111111111111111111"
+ + "111111111111111111111111111");
+ assertThat(content.get("TopicArn").asString()).isEqualTo("arn:aws:sns:eu-west-1:111111111111:mySampleTopic");
+ assertThat(content.get("Message").asString())
.isEqualTo("You have chosen to subscribe to the topic arn:aws:sns:eu-west-1:721324560415:mySampleTopic."
+ "To confirm the subscription, visit the SubscribeURL included in this message.");
- assertThat(content.get("SubscribeURL").asText())
+ assertThat(content.get("SubscribeURL").asString())
.isEqualTo("https://sns.eu-west-1.amazonaws.com/?Action=ConfirmSubscription&"
+ "TopicArn=arn:aws:sns:eu-west-1:111111111111:mySampleTopic"
+ "&Token=11111111111111111111111111111111111111111111111111111111111111111111"
+ "1111111111111111111111111111111111111111111111111111111111111111"
+ "1111111111111111111111111111111111111111111111111111111111111111" + "11111111111111");
- assertThat(content.get("Timestamp").asText()).isEqualTo("2014-06-28T10:22:18.086Z");
- assertThat(content.get("SignatureVersion").asText()).isEqualTo("1");
- assertThat(content.get("Signature").asText()).isEqualTo("JLdRUR+uhP4cyVW6bRuUSAkUosFMJyO7g7WCAwEUJoB4"
+ assertThat(content.get("Timestamp").asString()).isEqualTo("2014-06-28T10:22:18.086Z");
+ assertThat(content.get("SignatureVersion").asString()).isEqualTo("1");
+ assertThat(content.get("Signature").asString()).isEqualTo("JLdRUR+uhP4cyVW6bRuUSAkUosFMJyO7g7WCAwEUJoB4"
+ "y8vQE1uDUWGpbQSEbruVTjPEM8hFsf4/95NftfM0W5IgND1uS" + "nv4P/4AYyL+q0bLOJlquzXrw4w2NX3QShS3y+r/gXzo7p"
+ "/UP4NOr35MGCEGPqHAEe1Coc5S0eaP3JvKU6xY1tcop6ze2RNH"
+ "TwzhM43dda2bnjPYogAJzA5uHfmSjs3cMVvPCckj3zdLyvxISp"
+ "+RgrogdvlNyu9ycND1SxagmbzjkBaqvF/4aiSYFxsEXX4e9zuNu"
+ "HGmXGWgm1ppYUGLSPPJruCsPUa7Ii1mYvpX7SezuFZlAAXXBk0mHg==");
- assertThat(content.get("SigningCertURL").asText()).isEqualTo(
+ assertThat(content.get("SigningCertURL").asString()).isEqualTo(
"https://sns.eu-west-1.amazonaws.com/SimpleNotificationService-e372f8ca30337fdb084e8ac449342c77.pem");
}
@@ -124,22 +126,22 @@ public boolean supportsParameter(MethodParameter parameter) {
ObjectNode content = (ObjectNode) resolver.resolveArgument(methodParameter, null, servletWebRequest, null);
// Assert
- assertThat(content.get("Type").asText()).isEqualTo("Notification");
- assertThat(content.get("MessageId").asText()).isEqualTo("f2c15fec-c617-5b08-b54d-13c4099fec60");
- assertThat(content.get("TopicArn").asText()).isEqualTo("arn:aws:sns:eu-west-1:111111111111:mySampleTopic");
- assertThat(content.get("Subject").asText()).isEqualTo("asdasd");
- assertThat(content.get("Message").asText()).isEqualTo("asdasd");
- assertThat(content.get("Timestamp").asText()).isEqualTo("2014-06-28T14:12:24.418Z");
- assertThat(content.get("SignatureVersion").asText()).isEqualTo("1");
- assertThat(content.get("Signature").asText()).isEqualTo("XDvKSAnhxECrAmyIrs0Dsfbp/tnKD1IvoOOYTU28FtbUoxr"
+ assertThat(content.get("Type").asString()).isEqualTo("Notification");
+ assertThat(content.get("MessageId").asString()).isEqualTo("f2c15fec-c617-5b08-b54d-13c4099fec60");
+ assertThat(content.get("TopicArn").asString()).isEqualTo("arn:aws:sns:eu-west-1:111111111111:mySampleTopic");
+ assertThat(content.get("Subject").asString()).isEqualTo("asdasd");
+ assertThat(content.get("Message").asString()).isEqualTo("asdasd");
+ assertThat(content.get("Timestamp").asString()).isEqualTo("2014-06-28T14:12:24.418Z");
+ assertThat(content.get("SignatureVersion").asString()).isEqualTo("1");
+ assertThat(content.get("Signature").asString()).isEqualTo("XDvKSAnhxECrAmyIrs0Dsfbp/tnKD1IvoOOYTU28FtbUoxr"
+ "/CgziuW87yZwTuSNNbHJbdD3BEjHS0vKewm0xBeQ0PToDkgtoORXo"
+ "5RWnmShDQ2nhkthFhZnNulKtmFtRogjBtCwbz8sPnbOCSk21ruyXNd"
+ "V2RUbdDalndAW002CWEQmYMxFSN6OXUtMueuT610aX+tqeYP4Z6+8WT"
+ "WLWjAuVyy7rOI6KHYBcVDhKtskvTOPZ4tiVohtQdQbO2Gjuh1vbl"
+ "RzzwMkfaoFTSWImd4pFXxEsv/fq9aGIlqq9xEryJ0w2huFwI5gxyhvGt0RnTd9YvmAEC+WzdJDOqaDNxg==");
- assertThat(content.get("SigningCertURL").asText()).isEqualTo(
+ assertThat(content.get("SigningCertURL").asString()).isEqualTo(
"https://sns.eu-west-1.amazonaws.com/SimpleNotificationService-e372f8ca30337fdb084e8ac449342c77.pem");
- assertThat(content.get("UnsubscribeURL").asText())
+ assertThat(content.get("UnsubscribeURL").asString())
.isEqualTo("https://sns.eu-west-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn="
+ "arn:aws:sns:eu-west-1:721324560415:mySampleTopic:9859a6c9-6083-4690-ab02-d1aead3442df");
}
diff --git a/spring-cloud-aws-sns/src/test/java/io/awspring/cloud/sns/integration/SnsTemplateIntegrationTest.java b/spring-cloud-aws-sns/src/test/java/io/awspring/cloud/sns/integration/SnsTemplateIntegrationTest.java
index ef50855571..c728c97562 100644
--- a/spring-cloud-aws-sns/src/test/java/io/awspring/cloud/sns/integration/SnsTemplateIntegrationTest.java
+++ b/spring-cloud-aws-sns/src/test/java/io/awspring/cloud/sns/integration/SnsTemplateIntegrationTest.java
@@ -31,12 +31,10 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
-import org.springframework.messaging.converter.MappingJackson2MessageConverter;
+import org.springframework.messaging.converter.JacksonJsonMessageConverter;
import org.testcontainers.containers.localstack.LocalStackContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
-import org.testcontainers.shaded.com.fasterxml.jackson.databind.JsonNode;
-import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper;
import org.testcontainers.utility.DockerImageName;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
@@ -47,6 +45,8 @@
import software.amazon.awssdk.services.sqs.model.PurgeQueueRequest;
import software.amazon.awssdk.services.sqs.model.QueueAttributeName;
import software.amazon.awssdk.services.sqs.model.ReceiveMessageResponse;
+import tools.jackson.databind.JsonNode;
+import tools.jackson.databind.json.JsonMapper;
/**
* Integration tests for {@link SnsTemplate}.
@@ -59,7 +59,7 @@ class SnsTemplateIntegrationTest {
private static final String TOPIC_NAME = "my_topic_name";
private static SnsTemplate snsTemplate;
private static SnsClient snsClient;
- private static final ObjectMapper objectMapper = new ObjectMapper();
+ private static final JsonMapper jsonMapper = new JsonMapper();
private static SqsClient sqsClient;
@Container
@@ -76,7 +76,7 @@ public static void createSnsTemplate() {
.region(Region.of(localstack.getRegion()))
.credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create("noop", "noop")))
.build();
- MappingJackson2MessageConverter mappingJackson2MessageConverter = new MappingJackson2MessageConverter();
+ JacksonJsonMessageConverter mappingJackson2MessageConverter = new JacksonJsonMessageConverter();
mappingJackson2MessageConverter.setSerializedPayloadClass(String.class);
snsTemplate = new SnsTemplate(snsClient, mappingJackson2MessageConverter);
}
@@ -113,7 +113,7 @@ void send_validTextMessage_usesFifoChannel_send_arn_read_by_sqs() {
await().untilAsserted(() -> {
ReceiveMessageResponse response = sqsClient.receiveMessage(r -> r.queueUrl(queueUrl));
assertThat(response.hasMessages()).isTrue();
- JsonNode body = objectMapper.readTree(response.messages().get(0).body());
+ JsonNode body = jsonMapper.readTree(response.messages().get(0).body());
assertThat(body.get("Message").asText()).isEqualTo("message");
});
}
@@ -147,8 +147,8 @@ void send_validTextMessage_usesTopicChannel_send_arn_read_by_sqs() {
await().untilAsserted(() -> {
ReceiveMessageResponse response = sqsClient.receiveMessage(r -> r.queueUrl(queueUrl));
assertThat(response.hasMessages()).isTrue();
- JsonNode body = objectMapper.readTree(response.messages().get(0).body());
- assertThat(body.get("Message").asText()).isEqualTo("message");
+ JsonNode body = jsonMapper.readTree(response.messages().get(0).body());
+ assertThat(body.get("Message").asString()).isEqualTo("message");
});
}
@@ -163,8 +163,8 @@ void send_validPersonObject_usesTopicChannel_send_arn_read_sqs() {
await().untilAsserted(() -> {
ReceiveMessageResponse response = sqsClient.receiveMessage(r -> r.queueUrl(queueUrl));
assertThat(response.hasMessages()).isTrue();
- Person person = objectMapper.readValue(
- objectMapper.readTree(response.messages().get(0).body()).get("Message").asText(), Person.class);
+ Person person = jsonMapper.readValue(
+ jsonMapper.readTree(response.messages().get(0).body()).get("Message").asText(), Person.class);
assertThat(person.getName()).isEqualTo("foo");
});
}
diff --git a/spring-cloud-aws-sqs/pom.xml b/spring-cloud-aws-sqs/pom.xml
index d057900cc5..47986dbe3f 100644
--- a/spring-cloud-aws-sqs/pom.xml
+++ b/spring-cloud-aws-sqs/pom.xml
@@ -40,7 +40,7 @@
spring-retry
- com.fasterxml.jackson.core
+ tools.jackson.core
jackson-databind
diff --git a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/annotation/AbstractListenerAnnotationBeanPostProcessor.java b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/annotation/AbstractListenerAnnotationBeanPostProcessor.java
index 506d3e5c60..1b797be611 100644
--- a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/annotation/AbstractListenerAnnotationBeanPostProcessor.java
+++ b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/annotation/AbstractListenerAnnotationBeanPostProcessor.java
@@ -15,7 +15,6 @@
*/
package io.awspring.cloud.sqs.annotation;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.ConfigUtils;
import io.awspring.cloud.sqs.config.Endpoint;
import io.awspring.cloud.sqs.config.EndpointRegistrar;
@@ -55,11 +54,7 @@
import org.springframework.core.annotation.AnnotatedElementUtils;
import org.springframework.core.convert.support.DefaultConversionService;
import org.springframework.lang.Nullable;
-import org.springframework.messaging.converter.CompositeMessageConverter;
-import org.springframework.messaging.converter.MappingJackson2MessageConverter;
-import org.springframework.messaging.converter.MessageConverter;
-import org.springframework.messaging.converter.SimpleMessageConverter;
-import org.springframework.messaging.converter.StringMessageConverter;
+import org.springframework.messaging.converter.*;
import org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;
import org.springframework.messaging.handler.annotation.support.HeaderMethodArgumentResolver;
import org.springframework.messaging.handler.annotation.support.HeadersMethodArgumentResolver;
@@ -70,6 +65,7 @@
import org.springframework.messaging.handler.invocation.InvocableHandlerMethod;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
+import tools.jackson.databind.json.JsonMapper;
/**
* {@link BeanPostProcessor} implementation that scans beans for a {@link SqsListener @SqsListener} annotation, extracts
@@ -78,6 +74,7 @@
* @author Tomaz Fernandes
* @author Joao Calassio
* @author José Iêdo
+ * @author Matej Nedic
* @since 3.0
*/
public abstract class AbstractListenerAnnotationBeanPostProcessor
@@ -315,7 +312,7 @@ protected void configureDefaultHandlerMethodFactory(DefaultMessageHandlerMethodF
CompositeMessageConverter compositeMessageConverter = createCompositeMessageConverter();
List methodArgumentResolvers = new ArrayList<>(
- createAdditionalArgumentResolvers(compositeMessageConverter, this.endpointRegistrar.getObjectMapper()));
+ createAdditionalArgumentResolvers(compositeMessageConverter, this.endpointRegistrar.getJsonMapper()));
methodArgumentResolvers.addAll(createArgumentResolvers(compositeMessageConverter));
this.endpointRegistrar.getMethodArgumentResolversConsumer().accept(methodArgumentResolvers);
handlerMethodFactory.setArgumentResolvers(methodArgumentResolvers);
@@ -323,7 +320,7 @@ protected void configureDefaultHandlerMethodFactory(DefaultMessageHandlerMethodF
}
protected Collection createAdditionalArgumentResolvers(
- MessageConverter messageConverter, ObjectMapper objectMapper) {
+ MessageConverter messageConverter, JsonMapper jsonMapper) {
return createAdditionalArgumentResolvers();
}
@@ -335,7 +332,7 @@ protected CompositeMessageConverter createCompositeMessageConverter() {
List messageConverters = new ArrayList<>();
messageConverters.add(new StringMessageConverter());
messageConverters.add(new SimpleMessageConverter());
- messageConverters.add(createDefaultMappingJackson2MessageConverter(this.endpointRegistrar.getObjectMapper()));
+ messageConverters.add(createDefaultMappingJackson2MessageConverter(this.endpointRegistrar.getJsonMapper()));
this.endpointRegistrar.getMessageConverterConsumer().accept(messageConverters);
return new CompositeMessageConverter(messageConverters);
}
@@ -353,13 +350,16 @@ protected List createArgumentResolvers(MessageCon
}
// @formatter:on
- protected MappingJackson2MessageConverter createDefaultMappingJackson2MessageConverter(ObjectMapper objectMapper) {
- MappingJackson2MessageConverter jacksonMessageConverter = new MappingJackson2MessageConverter();
+ protected JacksonJsonMessageConverter createDefaultMappingJackson2MessageConverter(JsonMapper jsonMapper) {
+ JacksonJsonMessageConverter jacksonMessageConverter;
+ if (jsonMapper == null) {
+ jacksonMessageConverter = new JacksonJsonMessageConverter();
+ }
+ else {
+ jacksonMessageConverter = new JacksonJsonMessageConverter(jsonMapper);
+ }
jacksonMessageConverter.setSerializedPayloadClass(String.class);
jacksonMessageConverter.setStrictContentTypeMatch(false);
- if (objectMapper != null) {
- jacksonMessageConverter.setObjectMapper(objectMapper);
- }
return jacksonMessageConverter;
}
diff --git a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/annotation/SqsListenerAnnotationBeanPostProcessor.java b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/annotation/SqsListenerAnnotationBeanPostProcessor.java
index 02ee705138..901f5eecbc 100644
--- a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/annotation/SqsListenerAnnotationBeanPostProcessor.java
+++ b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/annotation/SqsListenerAnnotationBeanPostProcessor.java
@@ -15,7 +15,6 @@
*/
package io.awspring.cloud.sqs.annotation;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.config.Endpoint;
import io.awspring.cloud.sqs.config.MultiMethodSqsEndpoint;
import io.awspring.cloud.sqs.config.SqsBeanNames;
@@ -40,6 +39,7 @@
import org.springframework.messaging.converter.MessageConverter;
import org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver;
import org.springframework.util.ReflectionUtils;
+import tools.jackson.databind.json.JsonMapper;
/**
* {@link AbstractListenerAnnotationBeanPostProcessor} implementation for {@link SqsListener @SqsListener}.
@@ -106,12 +106,12 @@ protected Collection createAdditionalArgumentReso
@Override
protected Collection createAdditionalArgumentResolvers(
- MessageConverter messageConverter, ObjectMapper objectMapper) {
+ MessageConverter messageConverter, JsonMapper jsonMapper) {
List argumentResolvers = new ArrayList<>(createAdditionalArgumentResolvers());
- if (objectMapper != null) {
- argumentResolvers.add(new NotificationMessageArgumentResolver(messageConverter, objectMapper));
- argumentResolvers.add(new NotificationSubjectArgumentResolver(objectMapper));
- argumentResolvers.add(new SnsNotificationArgumentResolver(messageConverter, objectMapper));
+ if (jsonMapper != null) {
+ argumentResolvers.add(new NotificationMessageArgumentResolver(messageConverter, jsonMapper));
+ argumentResolvers.add(new NotificationSubjectArgumentResolver(jsonMapper));
+ argumentResolvers.add(new SnsNotificationArgumentResolver(messageConverter, jsonMapper));
}
return argumentResolvers;
}
diff --git a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/config/EndpointRegistrar.java b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/config/EndpointRegistrar.java
index 48e90df52b..0bd084a7db 100644
--- a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/config/EndpointRegistrar.java
+++ b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/config/EndpointRegistrar.java
@@ -15,7 +15,6 @@
*/
package io.awspring.cloud.sqs.config;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.listener.MessageListenerContainer;
import io.awspring.cloud.sqs.listener.MessageListenerContainerRegistry;
import java.util.ArrayList;
@@ -37,6 +36,7 @@
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.validation.Validator;
+import tools.jackson.databind.json.JsonMapper;
/**
* Processes the registered {@link Endpoint} instances using the appropriate {@link MessageListenerContainerFactory}.
@@ -73,7 +73,7 @@ public class EndpointRegistrar implements BeanFactoryAware, SmartInitializingSin
};
@Nullable
- private ObjectMapper objectMapper;
+ private JsonMapper jsonMapper;
@Nullable
private Validator validator;
@@ -118,11 +118,11 @@ public void setMessageListenerContainerRegistryBeanName(String messageListenerCo
/**
* Set the object mapper to be used to deserialize payloads fot SqsListener endpoints.
- * @param objectMapper the object mapper instance.
+ * @param jsonMapper the object mapper instance.
*/
- public void setObjectMapper(ObjectMapper objectMapper) {
- Assert.notNull(objectMapper, "objectMapper cannot be null.");
- this.objectMapper = objectMapper;
+ public void setJsonMapper(JsonMapper jsonMapper) {
+ Assert.notNull(jsonMapper, "objectMapper cannot be null.");
+ this.jsonMapper = jsonMapper;
}
/**
@@ -173,8 +173,8 @@ public Consumer> getMethodArgumentResolversC
* @return the object mapper instance.
*/
@Nullable
- public ObjectMapper getObjectMapper() {
- return this.objectMapper;
+ public JsonMapper getJsonMapper() {
+ return this.jsonMapper;
}
/**
diff --git a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/listener/ContainerOptionsBuilder.java b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/listener/ContainerOptionsBuilder.java
index bd0ebd1f24..ee51b1cd51 100644
--- a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/listener/ContainerOptionsBuilder.java
+++ b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/listener/ContainerOptionsBuilder.java
@@ -153,8 +153,8 @@ default B pollBackOffPolicy(BackOffPolicy pollBackOffPolicy) {
/**
* Sets the {@link BackPressureHandlerFactory} for this container. Default is
* {@code AbstractContainerOptions.DEFAULT_BACKPRESSURE_FACTORY} which results in a default
- * {@link io.awspring.cloud.sqs.listener.backpressure.CompositeBackPressureHandler} to be instantiated,
- * with behavior analogous to the original {@code SemaphoreBackPressureHandler}.
+ * {@link io.awspring.cloud.sqs.listener.backpressure.CompositeBackPressureHandler} to be instantiated, with
+ * behavior analogous to the original {@code SemaphoreBackPressureHandler}.
*
* @param backPressureHandlerFactory the BackPressureHandler supplier.
* @return this instance.
diff --git a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/AbstractMessagingMessageConverter.java b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/AbstractMessagingMessageConverter.java
index a3f854fb6d..acd8504234 100644
--- a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/AbstractMessagingMessageConverter.java
+++ b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/AbstractMessagingMessageConverter.java
@@ -15,7 +15,6 @@
*/
package io.awspring.cloud.sqs.support.converter;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.MessageHeaderUtils;
import io.awspring.cloud.sqs.listener.SqsHeaders;
import java.util.ArrayList;
@@ -29,21 +28,21 @@
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
import org.springframework.messaging.converter.CompositeMessageConverter;
-import org.springframework.messaging.converter.MappingJackson2MessageConverter;
+import org.springframework.messaging.converter.JacksonJsonMessageConverter;
import org.springframework.messaging.converter.MessageConverter;
import org.springframework.messaging.converter.StringMessageConverter;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.util.Assert;
+import tools.jackson.databind.json.JsonMapper;
/**
* Base {@link MessagingMessageConverter} implementation.
*
* @author Tomaz Fernandes
* @author Dongha Kim
- *
- * @since 3.0
* @see SqsHeaderMapper
* @see SqsMessageConversionContext
+ * @since 3.0
*/
public abstract class AbstractMessagingMessageConverter implements ContextAwareMessagingMessageConverter {
@@ -60,8 +59,8 @@ public abstract class AbstractMessagingMessageConverter implements ContextAwa
private Function, String> payloadTypeHeaderFunction = message -> message.getPayload().getClass()
.getName();
- protected AbstractMessagingMessageConverter() {
- this.payloadMessageConverter = createDefaultCompositeMessageConverter();
+ protected AbstractMessagingMessageConverter(JsonMapper jsonMapper) {
+ this.payloadMessageConverter = createDefaultCompositeMessageConverter(jsonMapper);
this.headerMapper = createDefaultHeaderMapper();
this.payloadTypeMapper = this::defaultHeaderTypeMapping;
}
@@ -71,6 +70,7 @@ protected AbstractMessagingMessageConverter() {
* {@link Class} returned by this function. The {@link #defaultHeaderTypeMapping} uses the {@link #typeHeader}
* property to retrieve the payload class' FQCN. This method replaces the default type mapping for this converter
* instance.
+ *
* @param payloadTypeMapper the type mapping function.
*/
public void setPayloadTypeMapper(Function, Class>> payloadTypeMapper) {
@@ -78,49 +78,38 @@ public void setPayloadTypeMapper(Function, Class>> payloadTypeMappe
this.payloadTypeMapper = payloadTypeMapper;
}
- /**
- * Set the {@link MessageConverter} to be used for converting the {@link Message} instances payloads.
- * @param messageConverter the converter instance.
- */
- public void setPayloadMessageConverter(MessageConverter messageConverter) {
- Assert.notNull(messageConverter, "messageConverter cannot be null");
- this.payloadMessageConverter = messageConverter;
- }
-
- /**
- * Set the {@link ObjectMapper} instance to be used for converting the {@link Message} instances payloads.
- * @param objectMapper the object mapper instance.
- */
- public void setObjectMapper(ObjectMapper objectMapper) {
- Assert.notNull(objectMapper, "messageConverter cannot be null");
- MappingJackson2MessageConverter converter = getMappingJackson2MessageConverter().orElseThrow(
- () -> new IllegalStateException("%s can only be set in %s instances, or %s containing one.".formatted(
- ObjectMapper.class.getSimpleName(), MappingJackson2MessageConverter.class.getSimpleName(),
- CompositeMessageConverter.class.getSimpleName())));
- converter.setObjectMapper(objectMapper);
- }
-
- private Optional getMappingJackson2MessageConverter() {
+ private Optional getMappingJackson2MessageConverter() {
return this.payloadMessageConverter instanceof CompositeMessageConverter compositeConverter
? compositeConverter.getConverters().stream()
- .filter(converter -> converter instanceof MappingJackson2MessageConverter)
- .map(MappingJackson2MessageConverter.class::cast).findFirst()
- : this.payloadMessageConverter instanceof MappingJackson2MessageConverter converter
- ? Optional.of(converter)
+ .filter(converter -> converter instanceof JacksonJsonMessageConverter)
+ .map(JacksonJsonMessageConverter.class::cast).findFirst()
+ : this.payloadMessageConverter instanceof JacksonJsonMessageConverter converter ? Optional.of(converter)
: Optional.empty();
}
/**
* Get the {@link MessageConverter} to be used for converting the {@link Message} instances payloads.
+ *
* @return the instance.
*/
public MessageConverter getPayloadMessageConverter() {
return this.payloadMessageConverter;
}
+ /**
+ * Set the {@link MessageConverter} to be used for converting the {@link Message} instances payloads.
+ *
+ * @param messageConverter the converter instance.
+ */
+ public void setPayloadMessageConverter(MessageConverter messageConverter) {
+ Assert.notNull(messageConverter, "messageConverter cannot be null");
+ this.payloadMessageConverter = messageConverter;
+ }
+
/**
* Set the name of the header to be looked up in a {@link Message} instance by the
* {@link #defaultHeaderTypeMapping(Message)}.
+ *
* @param typeHeader the header name.
*/
public void setPayloadTypeHeader(String typeHeader) {
@@ -130,6 +119,7 @@ public void setPayloadTypeHeader(String typeHeader) {
/**
* Set the function to create the payload type header value from.
+ *
* @param payloadTypeHeaderFunction the function.
*/
public void setPayloadTypeHeaderValueFunction(Function, String> payloadTypeHeaderFunction) {
@@ -140,6 +130,7 @@ public void setPayloadTypeHeaderValueFunction(Function, String> paylo
/**
* Set the {@link HeaderMapper} to used to convert headers for
* {@link software.amazon.awssdk.services.sqs.model.Message} instances.
+ *
* @param headerMapper the header mapper instance.
*/
public void setHeaderMapper(HeaderMapper headerMapper) {
@@ -237,11 +228,11 @@ private MessageHeaders getMessageHeaders(Message> message) {
protected abstract S doConvertMessage(S messageWithHeaders, Object payload);
- private CompositeMessageConverter createDefaultCompositeMessageConverter() {
+ private CompositeMessageConverter createDefaultCompositeMessageConverter(JsonMapper jsonMapper) {
List messageConverters = new ArrayList<>();
messageConverters.add(createClassMatchingMessageConverter());
messageConverters.add(createStringMessageConverter());
- messageConverters.add(createDefaultMappingJackson2MessageConverter());
+ messageConverters.add(createDefaultMappingJackson2MessageConverter(jsonMapper));
return new CompositeMessageConverter(messageConverters);
}
@@ -257,8 +248,14 @@ private StringMessageConverter createStringMessageConverter() {
return stringMessageConverter;
}
- private MappingJackson2MessageConverter createDefaultMappingJackson2MessageConverter() {
- MappingJackson2MessageConverter messageConverter = new MappingJackson2MessageConverter();
+ private JacksonJsonMessageConverter createDefaultMappingJackson2MessageConverter(JsonMapper jsonMapper) {
+ JacksonJsonMessageConverter messageConverter;
+ if (jsonMapper != null) {
+ messageConverter = new JacksonJsonMessageConverter(jsonMapper);
+ }
+ else {
+ messageConverter = new JacksonJsonMessageConverter();
+ }
messageConverter.setSerializedPayloadClass(String.class);
messageConverter.setStrictContentTypeMatch(false);
return messageConverter;
diff --git a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsJsonNode.java b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsJsonNode.java
index 145338df63..1810849943 100644
--- a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsJsonNode.java
+++ b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsJsonNode.java
@@ -15,9 +15,9 @@
*/
package io.awspring.cloud.sqs.support.converter;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.messaging.converter.MessageConversionException;
+import tools.jackson.databind.JsonNode;
+import tools.jackson.databind.json.JsonMapper;
/**
* @author Michael Sosa
@@ -28,7 +28,7 @@ public class SnsJsonNode {
private final String jsonString;
private final JsonNode jsonNode;
- public SnsJsonNode(ObjectMapper jsonMapper, String jsonString) {
+ public SnsJsonNode(JsonMapper jsonMapper, String jsonString) {
try {
this.jsonString = jsonString;
jsonNode = jsonMapper.readTree(jsonString);
diff --git a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsMessageConverter.java b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsMessageConverter.java
index 6e1a42071b..9797033738 100644
--- a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsMessageConverter.java
+++ b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsMessageConverter.java
@@ -15,7 +15,6 @@
*/
package io.awspring.cloud.sqs.support.converter;
-import com.fasterxml.jackson.databind.ObjectMapper;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
@@ -29,6 +28,7 @@
import org.springframework.messaging.converter.SmartMessageConverter;
import org.springframework.messaging.support.GenericMessage;
import org.springframework.util.Assert;
+import tools.jackson.databind.json.JsonMapper;
/**
* @author Michael Sosa
@@ -38,11 +38,11 @@
*/
public class SnsMessageConverter implements SmartMessageConverter {
- private final ObjectMapper jsonMapper;
+ private final JsonMapper jsonMapper;
private final MessageConverter payloadConverter;
- public SnsMessageConverter(MessageConverter payloadConverter, ObjectMapper jsonMapper) {
+ public SnsMessageConverter(MessageConverter payloadConverter, JsonMapper jsonMapper) {
Assert.notNull(payloadConverter, "payloadConverter must not be null");
Assert.notNull(jsonMapper, "jsonMapper must not be null");
this.payloadConverter = payloadConverter;
diff --git a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsNotificationConverter.java b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsNotificationConverter.java
index ad970c09ca..26c91bd303 100644
--- a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsNotificationConverter.java
+++ b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsNotificationConverter.java
@@ -15,7 +15,6 @@
*/
package io.awspring.cloud.sqs.support.converter;
-import com.fasterxml.jackson.databind.ObjectMapper;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
@@ -29,6 +28,7 @@
import org.springframework.messaging.converter.SmartMessageConverter;
import org.springframework.messaging.support.GenericMessage;
import org.springframework.util.Assert;
+import tools.jackson.databind.json.JsonMapper;
/**
* Converter that extracts SNS notifications from SQS messages and creates {@link SnsNotification} objects.
@@ -38,7 +38,7 @@
*/
public class SnsNotificationConverter implements SmartMessageConverter {
- private final ObjectMapper jsonMapper;
+ private final JsonMapper jsonMapper;
private final MessageConverter payloadConverter;
@@ -47,7 +47,7 @@ public class SnsNotificationConverter implements SmartMessageConverter {
* @param payloadConverter the converter to use for the message payload
* @param jsonMapper the JSON mapper to use for parsing the SNS notification
*/
- public SnsNotificationConverter(MessageConverter payloadConverter, ObjectMapper jsonMapper) {
+ public SnsNotificationConverter(MessageConverter payloadConverter, JsonMapper jsonMapper) {
Assert.notNull(payloadConverter, "payloadConverter must not be null");
Assert.notNull(jsonMapper, "jsonMapper must not be null");
this.payloadConverter = payloadConverter;
diff --git a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsSubjectConverter.java b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsSubjectConverter.java
index f371e411f9..8416964426 100644
--- a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsSubjectConverter.java
+++ b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsSubjectConverter.java
@@ -15,7 +15,6 @@
*/
package io.awspring.cloud.sqs.support.converter;
-import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
@@ -23,6 +22,7 @@
import org.springframework.messaging.converter.MessageConverter;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
+import tools.jackson.databind.json.JsonMapper;
/**
* @author Alexander Nebel
@@ -30,11 +30,11 @@
*/
public class SnsSubjectConverter implements MessageConverter {
- private final ObjectMapper objectMapper;
+ private final JsonMapper jsonMapper;
- public SnsSubjectConverter(ObjectMapper objectMapper) {
- Assert.notNull(objectMapper, "jsonMapper must not be null");
- this.objectMapper = objectMapper;
+ public SnsSubjectConverter(JsonMapper jsonMapper) {
+ Assert.notNull(jsonMapper, "jsonMapper must not be null");
+ this.jsonMapper = jsonMapper;
}
@Override
@@ -51,7 +51,7 @@ public Object fromMessage(Message> message, Class> targetClass) {
throw new MessageConversionException("Conversion of List is not supported", null);
}
- var snsJsonNode = new SnsJsonNode(objectMapper, message.getPayload().toString());
+ var snsJsonNode = new SnsJsonNode(jsonMapper, message.getPayload().toString());
return snsJsonNode.getSubjectAsString();
}
diff --git a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SqsMessagingMessageConverter.java b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SqsMessagingMessageConverter.java
index 67d0879c93..df6ad01540 100644
--- a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SqsMessagingMessageConverter.java
+++ b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SqsMessagingMessageConverter.java
@@ -17,6 +17,7 @@
import org.springframework.messaging.Message;
import org.springframework.util.Assert;
+import tools.jackson.databind.json.JsonMapper;
/**
* {@link MessagingMessageConverter} implementation for converting SQS
@@ -31,6 +32,14 @@
public class SqsMessagingMessageConverter
extends AbstractMessagingMessageConverter {
+ public SqsMessagingMessageConverter() {
+ this(null);
+ }
+
+ public SqsMessagingMessageConverter(JsonMapper jsonMapper) {
+ super(jsonMapper);
+ }
+
@Override
protected HeaderMapper createDefaultHeaderMapper() {
return new SqsHeaderMapper();
diff --git a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/resolver/NotificationMessageArgumentResolver.java b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/resolver/NotificationMessageArgumentResolver.java
index dd297f2172..e928b94489 100644
--- a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/resolver/NotificationMessageArgumentResolver.java
+++ b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/resolver/NotificationMessageArgumentResolver.java
@@ -15,7 +15,6 @@
*/
package io.awspring.cloud.sqs.support.resolver;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.annotation.SnsNotificationMessage;
import io.awspring.cloud.sqs.support.converter.SnsMessageConverter;
import org.springframework.core.MethodParameter;
@@ -23,6 +22,7 @@
import org.springframework.messaging.converter.MessageConverter;
import org.springframework.messaging.converter.SmartMessageConverter;
import org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver;
+import tools.jackson.databind.json.JsonMapper;
/**
* @author Michael Sosa
@@ -34,7 +34,7 @@ public class NotificationMessageArgumentResolver implements HandlerMethodArgumen
private final SmartMessageConverter converter;
- public NotificationMessageArgumentResolver(MessageConverter converter, ObjectMapper jsonMapper) {
+ public NotificationMessageArgumentResolver(MessageConverter converter, JsonMapper jsonMapper) {
this.converter = new SnsMessageConverter(converter, jsonMapper);
}
diff --git a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/resolver/NotificationSubjectArgumentResolver.java b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/resolver/NotificationSubjectArgumentResolver.java
index ba7a1770cf..a608f00557 100644
--- a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/resolver/NotificationSubjectArgumentResolver.java
+++ b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/resolver/NotificationSubjectArgumentResolver.java
@@ -15,7 +15,6 @@
*/
package io.awspring.cloud.sqs.support.resolver;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.annotation.SnsNotificationSubject;
import io.awspring.cloud.sqs.support.converter.SnsSubjectConverter;
import java.lang.reflect.Executable;
@@ -27,6 +26,7 @@
import org.springframework.messaging.converter.MessageConverter;
import org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver;
import org.springframework.util.ClassUtils;
+import tools.jackson.databind.json.JsonMapper;
/**
* @author Alexander Nebel
@@ -38,7 +38,7 @@ public class NotificationSubjectArgumentResolver implements HandlerMethodArgumen
private final MessageConverter converter;
- public NotificationSubjectArgumentResolver(ObjectMapper jsonMapper) {
+ public NotificationSubjectArgumentResolver(JsonMapper jsonMapper) {
this.converter = new SnsSubjectConverter(jsonMapper);
}
diff --git a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/resolver/SnsNotificationArgumentResolver.java b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/resolver/SnsNotificationArgumentResolver.java
index 2524cb3a6f..1afaa846e1 100644
--- a/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/resolver/SnsNotificationArgumentResolver.java
+++ b/spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/resolver/SnsNotificationArgumentResolver.java
@@ -15,7 +15,6 @@
*/
package io.awspring.cloud.sqs.support.resolver;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.support.converter.SnsNotification;
import io.awspring.cloud.sqs.support.converter.SnsNotificationConverter;
import org.springframework.core.MethodParameter;
@@ -23,6 +22,7 @@
import org.springframework.messaging.converter.MessageConverter;
import org.springframework.messaging.converter.SmartMessageConverter;
import org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver;
+import tools.jackson.databind.json.JsonMapper;
/**
* Resolves method parameters with {@link SnsNotification} object.
@@ -39,7 +39,7 @@ public class SnsNotificationArgumentResolver implements HandlerMethodArgumentRes
* @param converter the message converter to use for the message payload
* @param jsonMapper the JSON mapper to use for parsing the SNS notification
*/
- public SnsNotificationArgumentResolver(MessageConverter converter, ObjectMapper jsonMapper) {
+ public SnsNotificationArgumentResolver(MessageConverter converter, JsonMapper jsonMapper) {
this.converter = new SnsNotificationConverter(converter, jsonMapper);
}
diff --git a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/annotation/SqsListenerAnnotationBeanPostProcessorTests.java b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/annotation/SqsListenerAnnotationBeanPostProcessorTests.java
index 6919699a65..bfa613ce55 100644
--- a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/annotation/SqsListenerAnnotationBeanPostProcessorTests.java
+++ b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/annotation/SqsListenerAnnotationBeanPostProcessorTests.java
@@ -24,7 +24,6 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.config.Endpoint;
import io.awspring.cloud.sqs.config.EndpointRegistrar;
import io.awspring.cloud.sqs.config.MessageListenerContainerFactory;
@@ -45,7 +44,7 @@
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.context.expression.StandardBeanExpressionResolver;
import org.springframework.messaging.converter.CompositeMessageConverter;
-import org.springframework.messaging.converter.MappingJackson2MessageConverter;
+import org.springframework.messaging.converter.JacksonJsonMessageConverter;
import org.springframework.messaging.converter.MessageConverter;
import org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;
import org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory;
@@ -53,6 +52,7 @@
import org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver;
import org.springframework.util.StringValueResolver;
import org.springframework.validation.Validator;
+import tools.jackson.databind.json.JsonMapper;
/**
* Tests for {@link SqsListenerAnnotationBeanPostProcessor}.
@@ -65,7 +65,7 @@ class SqsListenerAnnotationBeanPostProcessorTests {
@Test
void shouldCustomizeRegistrar() {
ListableBeanFactory beanFactory = mock(ListableBeanFactory.class);
- ObjectMapper objectMapper = new ObjectMapper();
+ JsonMapper jsonMapper = new JsonMapper();
MessageHandlerMethodFactory methodFactory = new DefaultMessageHandlerMethodFactory();
DefaultListenerContainerRegistry registry = new DefaultListenerContainerRegistry() {
@Override
@@ -81,7 +81,7 @@ public void registerListenerContainer(MessageListenerContainer> listenerContai
registrar.setDefaultListenerContainerFactoryBeanName(factoryName);
registrar.setListenerContainerRegistry(registry);
registrar.setMessageHandlerMethodFactory(methodFactory);
- registrar.setObjectMapper(objectMapper);
+ registrar.setJsonMapper(jsonMapper);
registrar.manageMessageConverters(converters -> converters.add(converter));
registrar.manageMethodArgumentResolvers(resolvers -> resolvers.add(resolver));
registrar.setValidator(validator);
@@ -128,8 +128,8 @@ protected EndpointRegistrar createEndpointRegistrar() {
assertThat(thisResolver).extracting("converter").asInstanceOf(type(CompositeMessageConverter.class))
.extracting(CompositeMessageConverter::getConverters)
.asInstanceOf(list(MessageConverter.class)).contains(converter)
- .filteredOn(thisConverter -> thisConverter instanceof MappingJackson2MessageConverter)
- .element(0).extracting("objectMapper").isEqualTo(objectMapper);
+ .filteredOn(thisConverter -> thisConverter instanceof JacksonJsonMessageConverter)
+ .element(0).extracting("jsonMapper").isEqualTo(jsonMapper);
});
}
diff --git a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SnsNotificationIntegrationTests.java b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SnsNotificationIntegrationTests.java
index 8a10df716f..ab7c90eb99 100644
--- a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SnsNotificationIntegrationTests.java
+++ b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SnsNotificationIntegrationTests.java
@@ -20,7 +20,6 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.awaitility.Awaitility.await;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.annotation.SqsListener;
import io.awspring.cloud.sqs.config.SqsBootstrapConfiguration;
import io.awspring.cloud.sqs.config.SqsListenerConfigurer;
@@ -47,6 +46,7 @@
import org.springframework.test.context.TestPropertySource;
import software.amazon.awssdk.services.sqs.SqsAsyncClient;
import software.amazon.awssdk.services.sqs.model.QueueAttributeName;
+import tools.jackson.databind.json.JsonMapper;
/**
* Integration tests for SNS notifications in SQS.
@@ -70,7 +70,7 @@ class SnsNotificationIntegrationTests extends BaseSqsIntegrationTest {
SqsTemplate sqsTemplate;
@Autowired
- ObjectMapper objectMapper;
+ JsonMapper jsonMapper;
@BeforeAll
static void beforeTests() {
@@ -191,7 +191,7 @@ void shouldReceiveSnsNotificationWithJsonPayload() throws Exception {
String sequenceNumber = "10000000000000003000";
String topicArn = "topic-arn-json";
TestPayload payload = new TestPayload("test", 123);
- String messageContent = objectMapper.writeValueAsString(payload);
+ String messageContent = jsonMapper.writeValueAsString(payload);
Instant timestamp = Instant.parse("2023-01-01T00:00:00Z");
String unsubscribeUrl = "https://sns.region.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:region:accountId:topicName:uuid";
String subject = "subject-json";
@@ -228,7 +228,7 @@ void shouldReceiveSnsNotificationWithJsonPayload() throws Exception {
assertThat(receivedNotification.getSubject()).isEqualTo(Optional.of(subject));
String jsonMessage = receivedNotification.getMessage();
- TestPayload resultPayload = objectMapper.readValue(jsonMessage, TestPayload.class);
+ TestPayload resultPayload = jsonMapper.readValue(jsonMessage, TestPayload.class);
assertThat(resultPayload.getName()).isEqualTo(payload.getName());
assertThat(resultPayload.getValue()).isEqualTo(payload.getValue());
@@ -352,13 +352,13 @@ LatchContainer latchContainer() {
}
@Bean
- ObjectMapper objectMapper() {
- return new ObjectMapper();
+ JsonMapper jsonMapper() {
+ return new JsonMapper();
}
@Bean
- SqsListenerConfigurer sqsListenerConfigurer(ObjectMapper objectMapper) {
- return registrar -> registrar.setObjectMapper(objectMapper);
+ SqsListenerConfigurer sqsListenerConfigurer(JsonMapper jsonMapper) {
+ return registrar -> registrar.setJsonMapper(jsonMapper);
}
@Bean
diff --git a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsErrorHandlerIntegrationTests.java b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsErrorHandlerIntegrationTests.java
index 38deb6975a..cedf193f0b 100644
--- a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsErrorHandlerIntegrationTests.java
+++ b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsErrorHandlerIntegrationTests.java
@@ -19,7 +19,6 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.awaitility.Awaitility.await;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.MessageHeaderUtils;
import io.awspring.cloud.sqs.annotation.SqsListener;
import io.awspring.cloud.sqs.config.SqsBootstrapConfiguration;
@@ -53,6 +52,7 @@
import org.springframework.messaging.support.MessageBuilder;
import software.amazon.awssdk.services.sqs.SqsAsyncClient;
import software.amazon.awssdk.services.sqs.model.QueueAttributeName;
+import tools.jackson.databind.json.JsonMapper;
/**
* Integration tests for SQS ErrorHandler integration.
@@ -117,7 +117,7 @@ static void beforeTests() {
SqsTemplate sqsTemplate;
@Autowired
- ObjectMapper objectMapper;
+ JsonMapper jsonMapper;
@Test
void receivesMessageVisibilityTimeout() throws Exception {
@@ -744,8 +744,8 @@ LatchContainer latchContainer() {
}
@Bean
- ObjectMapper objectMapper() {
- return new ObjectMapper();
+ JsonMapper jsonMapper() {
+ return new JsonMapper();
}
@Bean
diff --git a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsFifoIntegrationTests.java b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsFifoIntegrationTests.java
index 71f7c67bff..c7d2fbf7d3 100644
--- a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsFifoIntegrationTests.java
+++ b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsFifoIntegrationTests.java
@@ -23,7 +23,6 @@
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.spy;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.CompletableFutures;
import io.awspring.cloud.sqs.MessageHeaderUtils;
import io.awspring.cloud.sqs.annotation.SqsListener;
@@ -87,6 +86,7 @@
import software.amazon.awssdk.services.sqs.model.ChangeMessageVisibilityBatchRequest;
import software.amazon.awssdk.services.sqs.model.ChangeMessageVisibilityBatchRequestEntry;
import software.amazon.awssdk.services.sqs.model.QueueAttributeName;
+import tools.jackson.databind.json.JsonMapper;
/**
* Integration tests for handling SQS FIFO queues.
@@ -133,7 +133,7 @@ class SqsFifoIntegrationTests extends BaseSqsIntegrationTest {
SqsTemplate sqsTemplate;
@Autowired
- ObjectMapper objectMapper;
+ JsonMapper jsonMapper;
@Autowired(required = false)
ReceivesMessageInOrderListener receivesMessageInOrderListener;
@@ -1026,8 +1026,8 @@ Settings settings() {
}
@Bean
- ObjectMapper objectMapper() {
- return new ObjectMapper();
+ JsonMapper jsonMapper() {
+ return new JsonMapper();
}
@Bean
diff --git a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsIntegrationTests.java b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsIntegrationTests.java
index 46e1f7b46a..2deb196752 100644
--- a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsIntegrationTests.java
+++ b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsIntegrationTests.java
@@ -20,7 +20,6 @@
import static org.awaitility.Awaitility.await;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.CompletableFutures;
import io.awspring.cloud.sqs.MessageHeaderUtils;
import io.awspring.cloud.sqs.annotation.SqsHandler;
@@ -97,6 +96,7 @@
import software.amazon.awssdk.services.sqs.SqsAsyncClient;
import software.amazon.awssdk.services.sqs.model.DeleteMessageBatchRequestEntry;
import software.amazon.awssdk.services.sqs.model.QueueAttributeName;
+import tools.jackson.databind.json.JsonMapper;
/**
* Integration tests for SQS integration.
@@ -1004,8 +1004,8 @@ LatchContainer latchContainer() {
}
@Bean
- ObjectMapper objectMapper() {
- return new ObjectMapper();
+ JsonMapper jsonMapper() {
+ return new JsonMapper();
}
@Bean
diff --git a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsLoadIntegrationTests.java b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsLoadIntegrationTests.java
index 8c33648939..1983313d2b 100644
--- a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsLoadIntegrationTests.java
+++ b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsLoadIntegrationTests.java
@@ -18,7 +18,6 @@
import static java.util.Collections.singletonMap;
import static org.assertj.core.api.Assertions.assertThat;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.MessageHeaderUtils;
import io.awspring.cloud.sqs.annotation.SqsListener;
import io.awspring.cloud.sqs.config.SqsBootstrapConfiguration;
@@ -60,6 +59,7 @@
import org.springframework.util.StopWatch;
import software.amazon.awssdk.services.sqs.SqsAsyncClient;
import software.amazon.awssdk.services.sqs.model.QueueAttributeName;
+import tools.jackson.databind.json.JsonMapper;
/**
* Load test for SQS integration.
@@ -380,8 +380,8 @@ LoadSimulator sleeper() {
}
@Bean
- ObjectMapper objectMapper() {
- return new ObjectMapper();
+ JsonMapper objectMapper() {
+ return new JsonMapper();
}
@Bean
diff --git a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsMessageConversionIntegrationTests.java b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsMessageConversionIntegrationTests.java
index 37d5070dee..42901ca6bb 100644
--- a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsMessageConversionIntegrationTests.java
+++ b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsMessageConversionIntegrationTests.java
@@ -17,7 +17,6 @@
import static org.assertj.core.api.Assertions.assertThat;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.annotation.SnsNotificationMessage;
import io.awspring.cloud.sqs.annotation.SnsNotificationSubject;
import io.awspring.cloud.sqs.annotation.SqsListener;
@@ -53,6 +52,7 @@
import org.springframework.util.FileCopyUtils;
import software.amazon.awssdk.services.sqs.SqsAsyncClient;
import software.amazon.awssdk.services.sqs.model.QueueAttributeName;
+import tools.jackson.databind.json.JsonMapper;
/**
* Integration tests for SQS message conversion.
@@ -417,13 +417,13 @@ LatchContainer latchContainer() {
}
@Bean
- ObjectMapper objectMapper() {
- return new ObjectMapper();
+ JsonMapper jsonMapper() {
+ return new JsonMapper();
}
@Bean
- SqsListenerConfigurer customizer(ObjectMapper objectMapper) {
- return registrar -> registrar.setObjectMapper(objectMapper);
+ SqsListenerConfigurer customizer(JsonMapper jsonMapper) {
+ return registrar -> registrar.setJsonMapper(jsonMapper);
}
@Bean
diff --git a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/listener/ContainerOptionsTests.java b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/listener/ContainerOptionsTests.java
index ce844ef80a..8d8f9421f7 100644
--- a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/listener/ContainerOptionsTests.java
+++ b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/listener/ContainerOptionsTests.java
@@ -151,10 +151,8 @@ void shouldDefaultToNoopObservationRegistry() {
@ValueSource(ints = { 4, 5 })
void shouldAcceptValidMaxMessagesPerPoll(final int maxMessagesPerPoll) {
- final SqsContainerOptions options = SqsContainerOptions.builder()
- .maxMessagesPerPoll(maxMessagesPerPoll)
- .maxConcurrentMessages(5)
- .build();
+ final SqsContainerOptions options = SqsContainerOptions.builder().maxMessagesPerPoll(maxMessagesPerPoll)
+ .maxConcurrentMessages(5).build();
assertThat(options.getMaxMessagesPerPoll()).isEqualTo(maxMessagesPerPoll);
assertThat(options.getMaxConcurrentMessages()).isEqualTo(5);
@@ -167,8 +165,8 @@ void shouldRejectInvalidMaxMessagesPerPoll() {
() -> SqsContainerOptions.builder().maxMessagesPerPoll(6).maxConcurrentMessages(5).build());
assertThat(exception).isInstanceOf(IllegalArgumentException.class)
- .hasMessage("maxMessagesPerPoll should be less than or equal to maxConcurrentMessages. "
- + "Values provided: 6 and 5 respectively");
+ .hasMessage("maxMessagesPerPoll should be less than or equal to maxConcurrentMessages. "
+ + "Values provided: 6 and 5 respectively");
}
private SqsContainerOptions createConfiguredOptions() {
diff --git a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/listener/source/AbstractPollingMessageSourceTests.java b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/listener/source/AbstractPollingMessageSourceTests.java
index fb240cffaa..a3f850eded 100644
--- a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/listener/source/AbstractPollingMessageSourceTests.java
+++ b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/listener/source/AbstractPollingMessageSourceTests.java
@@ -24,8 +24,6 @@
import io.awspring.cloud.sqs.MessageExecutionThreadFactory;
import io.awspring.cloud.sqs.listener.BackPressureMode;
-import io.awspring.cloud.sqs.listener.ContainerOptions;
-import io.awspring.cloud.sqs.listener.ContainerOptionsBuilder;
import io.awspring.cloud.sqs.listener.SqsContainerOptions;
import io.awspring.cloud.sqs.listener.acknowledgement.AcknowledgementCallback;
import io.awspring.cloud.sqs.listener.acknowledgement.AcknowledgementProcessor;
@@ -442,10 +440,9 @@ else if (currentPoll.compareAndSet(2, 3)) {
void shouldRemovePollingFutureOnException() throws InterruptedException {
String testName = "shouldClearPollingFuturesOnException";
- BackPressureHandler backPressureHandler = BackPressureHandlerFactories
- .adaptiveThroughputBackPressureHandler()
- .createBackPressureHandler(SqsContainerOptions.builder()
- .maxDelayBetweenPolls(Duration.ofMillis(100)).backPressureMode(BackPressureMode.ALWAYS_POLL_MAX_MESSAGES).build());
+ BackPressureHandler backPressureHandler = BackPressureHandlerFactories.adaptiveThroughputBackPressureHandler()
+ .createBackPressureHandler(SqsContainerOptions.builder().maxDelayBetweenPolls(Duration.ofMillis(100))
+ .backPressureMode(BackPressureMode.ALWAYS_POLL_MAX_MESSAGES).build());
AbstractPollingMessageSource source = new AbstractPollingMessageSource<>() {
@Override
diff --git a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/operations/SqsTemplateTests.java b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/operations/SqsTemplateTests.java
index b1973cf3cb..1428b2ef95 100644
--- a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/operations/SqsTemplateTests.java
+++ b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/operations/SqsTemplateTests.java
@@ -22,7 +22,6 @@
import static org.mockito.BDDMockito.then;
import static org.mockito.Mockito.*;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.QueueAttributesResolvingException;
import io.awspring.cloud.sqs.SqsAcknowledgementException;
import io.awspring.cloud.sqs.listener.QueueNotFoundStrategy;
@@ -47,6 +46,7 @@
import org.springframework.messaging.support.MessageBuilder;
import software.amazon.awssdk.services.sqs.SqsAsyncClient;
import software.amazon.awssdk.services.sqs.model.*;
+import tools.jackson.databind.json.JsonMapper;
/**
* @author Tomaz Fernandes
@@ -659,7 +659,7 @@ void shouldReceiveFromDefaultEndpoint() {
void shouldConvertToPayloadClass() throws Exception {
String queue = "test-queue";
SampleRecord payload = new SampleRecord("first-prop", "second-prop");
- String payloadString = new ObjectMapper().writeValueAsString(payload);
+ String payloadString = new JsonMapper().writeValueAsString(payload);
GetQueueUrlResponse urlResponse = GetQueueUrlResponse.builder().queueUrl(queue).build();
given(mockClient.getQueueUrl(any(GetQueueUrlRequest.class)))
@@ -687,7 +687,7 @@ void shouldConvertToPayloadClass() throws Exception {
void shouldConvertToDefaultClass() throws Exception {
String queue = "test-queue";
SampleRecord payload = new SampleRecord("first-prop", "second-prop");
- String payloadString = new ObjectMapper().writeValueAsString(payload);
+ String payloadString = new JsonMapper().writeValueAsString(payload);
GetQueueUrlResponse urlResponse = GetQueueUrlResponse.builder().queueUrl(queue).build();
given(mockClient.getQueueUrl(any(GetQueueUrlRequest.class)))
diff --git a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/support/converter/SnsNotificationConverterTest.java b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/support/converter/SnsNotificationConverterTest.java
index 7dba92bb19..c698b9245c 100644
--- a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/support/converter/SnsNotificationConverterTest.java
+++ b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/support/converter/SnsNotificationConverterTest.java
@@ -21,7 +21,6 @@
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
-import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Optional;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -31,6 +30,7 @@
import org.springframework.messaging.Message;
import org.springframework.messaging.converter.MessageConverter;
import org.springframework.messaging.support.GenericMessage;
+import tools.jackson.databind.json.JsonMapper;
/**
* Tests for {@link SnsNotificationConverter}.
@@ -47,12 +47,12 @@ class SnsNotificationConverterTest {
@Mock
private MethodParameter methodParameter;
- private final ObjectMapper objectMapper = new ObjectMapper();
+ private final JsonMapper jsonMapper = new JsonMapper();
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
- converter = new SnsNotificationConverter(payloadConverter, objectMapper);
+ converter = new SnsNotificationConverter(payloadConverter, jsonMapper);
}
@Test
diff --git a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/support/converter/SqsMessagingMessageConverterTests.java b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/support/converter/SqsMessagingMessageConverterTests.java
index 2043a3b423..814574964a 100644
--- a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/support/converter/SqsMessagingMessageConverterTests.java
+++ b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/support/converter/SqsMessagingMessageConverterTests.java
@@ -22,7 +22,6 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Collections;
import java.util.Objects;
import java.util.UUID;
@@ -32,6 +31,7 @@
import org.springframework.messaging.support.MessageBuilder;
import software.amazon.awssdk.services.sqs.model.Message;
import software.amazon.awssdk.services.sqs.model.MessageAttributeValue;
+import tools.jackson.databind.json.JsonMapper;
/**
* Tests for {@link SqsMessagingMessageConverter}.
@@ -40,12 +40,12 @@
*/
class SqsMessagingMessageConverterTests {
- private final ObjectMapper objectMapper = new ObjectMapper();
+ private final JsonMapper jsonMapper = new JsonMapper();
@Test
void shouldUseProvidedTypeMapper() throws Exception {
MyPojo myPojo = new MyPojo();
- String payload = new ObjectMapper().writeValueAsString(myPojo);
+ String payload = new JsonMapper().writeValueAsString(myPojo);
Message message = Message.builder().body(payload).messageId(UUID.randomUUID().toString()).build();
SqsMessagingMessageConverter converter = new SqsMessagingMessageConverter();
converter.setPayloadTypeMapper(msg -> MyPojo.class);
@@ -57,7 +57,7 @@ void shouldUseProvidedTypeMapper() throws Exception {
void shouldUseProvidedTypeHeader() throws Exception {
String typeHeader = "myHeader";
MyPojo myPojo = new MyPojo();
- String payload = this.objectMapper.writeValueAsString(myPojo);
+ String payload = this.jsonMapper.writeValueAsString(myPojo);
Message message = Message.builder()
.messageAttributes(Collections.singletonMap(typeHeader,
MessageAttributeValue.builder().dataType(MessageAttributeDataTypes.STRING)
@@ -73,7 +73,7 @@ void shouldUseProvidedTypeHeader() throws Exception {
void shouldUseHeaderOverPayloadClass() throws Exception {
String typeHeader = "myHeader";
MyPojo myPojo = new MyPojo();
- String payload = this.objectMapper.writeValueAsString(myPojo);
+ String payload = this.jsonMapper.writeValueAsString(myPojo);
Message message = Message.builder()
.messageAttributes(Collections.singletonMap(typeHeader,
MessageAttributeValue.builder().dataType(MessageAttributeDataTypes.STRING)
@@ -103,7 +103,7 @@ void shouldUseProvidedHeaderMapper() {
@Test
void shouldUseProvidedPayloadConverter() throws Exception {
MyPojo myPojo = new MyPojo();
- String payload = new ObjectMapper().writeValueAsString(myPojo);
+ String payload = new JsonMapper().writeValueAsString(myPojo);
Message message = Message.builder().body(payload).messageId(UUID.randomUUID().toString()).build();
MessageConverter payloadConverter = mock(MessageConverter.class);
when(payloadConverter.fromMessage(any(org.springframework.messaging.Message.class), eq(MyPojo.class)))
diff --git a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/support/resolver/SnsNotificationArgumentResolverTest.java b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/support/resolver/SnsNotificationArgumentResolverTest.java
index ff66313843..0a933004ac 100644
--- a/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/support/resolver/SnsNotificationArgumentResolverTest.java
+++ b/spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/support/resolver/SnsNotificationArgumentResolverTest.java
@@ -19,7 +19,6 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.awspring.cloud.sqs.support.converter.SnsNotification;
import java.lang.reflect.Method;
import java.util.Optional;
@@ -31,6 +30,7 @@
import org.springframework.messaging.Message;
import org.springframework.messaging.converter.MessageConverter;
import org.springframework.messaging.support.GenericMessage;
+import tools.jackson.databind.json.JsonMapper;
/**
* Tests for {@link SnsNotificationArgumentResolver}.
@@ -39,7 +39,7 @@
*/
class SnsNotificationArgumentResolverTest {
- private final ObjectMapper objectMapper = new ObjectMapper();
+ private final JsonMapper jsonMapper = new JsonMapper();
private SnsNotificationArgumentResolver resolver;
@@ -49,7 +49,7 @@ class SnsNotificationArgumentResolverTest {
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
- resolver = new SnsNotificationArgumentResolver(messageConverter, objectMapper);
+ resolver = new SnsNotificationArgumentResolver(messageConverter, jsonMapper);
}
@Test
diff --git a/spring-cloud-aws-starters/spring-cloud-aws-starter-imds/pom.xml b/spring-cloud-aws-starters/spring-cloud-aws-starter-imds/pom.xml
index dd68accde7..c8cfc1c0ed 100644
--- a/spring-cloud-aws-starters/spring-cloud-aws-starter-imds/pom.xml
+++ b/spring-cloud-aws-starters/spring-cloud-aws-starter-imds/pom.xml
@@ -5,7 +5,7 @@
spring-cloud-aws
io.awspring.cloud
- 3.1.0-SNAPSHOT
+ 4.0.0-SNAPSHOT
../../pom.xml
4.0.0