Description
Describe the issue
Message payloads of type ArrayList
lose their elements as they go through the Spring Cloud Stream framework.
For instance, an application configured with:
spring:
cloud:
function:
definition: myFunction
stream:
default:
producer:
use-native-encoding: true
and a function defined as:
@Bean
public Function<Message<?>, Message<?>> myFunction() {
return msg -> msg;
}
the output destination receives the Message with an ArrayList payload, however, all elements from the ArrayList have vanished.
It appears that this issue was introduced as part of the following changes in Spring Cloud Function. When I undo the changes from that PR, the issue goes away.
To Reproduce
I have uploaded a minimal application reproducing the issue here.
Run the unit test called testSpringCloudFunctionIssueWhereArrayListPayloadsLoseTheirElements
to reproduce the issue.
Version of the framework
Using version 4.1.0
of Spring Cloud Stream and Spring Cloud Function
[INFO] +- org.springframework.cloud:spring-cloud-stream:jar:4.1.0:compile
[ ... TRUNCATED ]
[INFO] | +- org.springframework.cloud:spring-cloud-function-context:jar:4.1.0:compile
[INFO] | | +- net.jodah:typetools:jar:0.6.2:compile
[INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:3.2.2:compile
[INFO] | | +- org.springframework.cloud:spring-cloud-function-core:jar:4.1.0:compile
Expected behavior
With the above function, I would expect to receive the message with complete arrayList payload on the output destination.