Skip to content

Commit a2da6d2

Browse files
authored
Fix deserializing lists with @SnsNotificationMessage (#1282)
Fixes #1280
1 parent a9f51fc commit a2da6d2

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/support/converter/SnsMessageConverter.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,10 @@ private Object fromGenericMessages(List<GenericMessage<?>> messages, Class<?> ta
7272
Type resolvedType = getResolvedType(targetClass, conversionHint);
7373
Class<?> resolvedClazz = ResolvableType.forType(resolvedType).resolve();
7474

75-
return messages.stream().map(message -> fromGenericMessage(message, resolvedClazz, resolvedType)).toList();
75+
Object hint = targetClass.isAssignableFrom(List.class) &&
76+
conversionHint instanceof MethodParameter mp ? mp.nested() : conversionHint;
77+
78+
return messages.stream().map(message -> fromGenericMessage(message, resolvedClazz, hint)).toList();
7679
}
7780

7881
private Object fromGenericMessage(GenericMessage<?> message, Class<?> targetClass,

spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/integration/SqsMessageConversionIntegrationTests.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ static class ResolvesPojoWithNotificationAnnotationListener {
275275

276276
@SqsListener(queueNames = RESOLVES_POJO_FROM_NOTIFICATION_MESSAGE_QUEUE_NAME, id = "resolves-pojo-with-notification-message", factory = "defaultSqsListenerContainerFactory")
277277
void listen(@SnsNotificationMessage MyEnvelope<MyPojo> myPojo) {
278-
Assert.notNull((myPojo).data.firstField, "Received null message");
278+
assertThat(myPojo.getData().getFirstField()).isEqualTo("pojoNotificationMessage");
279279
logger.debug("Received message {} from queue {}", myPojo,
280280
RESOLVES_POJO_FROM_NOTIFICATION_MESSAGE_QUEUE_NAME);
281281
latchContainer.resolvesPojoNotificationMessageLatch.countDown();
@@ -286,6 +286,10 @@ void listen(@SnsNotificationMessage List<MyEnvelope<MyPojo>> myPojos) {
286286
Assert.notEmpty(myPojos, "Received empty messages");
287287
logger.debug("Received messages {} from queue {}", myPojos,
288288
RESOLVES_POJO_FROM_NOTIFICATION_MESSAGE_LIST_QUEUE_NAME);
289+
290+
for (MyEnvelope<MyPojo> myPojo : myPojos) {
291+
assertThat(myPojo.getData().getFirstField()).isEqualTo("pojoNotificationMessage");
292+
}
289293
latchContainer.resolvesPojoNotificationMessageListLatch.countDown();
290294
}
291295
}

0 commit comments

Comments
 (0)