From 3a9c98ef14e5181e7857c5288cd980ed22b29279 Mon Sep 17 00:00:00 2001 From: mockxe <38732499+mockxe@users.noreply.github.com> Date: Wed, 19 Apr 2023 18:58:05 +0200 Subject: [PATCH] fixed a ClassCastException when returning an Iterable that couldn't be cast into Collection from a web-function (e.g. Page) Resolves #1026 --- .../web/util/FunctionWebRequestProcessingHelper.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/util/FunctionWebRequestProcessingHelper.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/util/FunctionWebRequestProcessingHelper.java index c34ce5909..ebc1795f9 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/util/FunctionWebRequestProcessingHelper.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/util/FunctionWebRequestProcessingHelper.java @@ -16,10 +16,10 @@ package org.springframework.cloud.function.web.util; -import java.util.Collection; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import java.util.stream.StreamSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -126,8 +126,8 @@ public final class FunctionWebRequestProcessingHelper { } return Mono.from(pResult).map(v -> { - if (v instanceof Iterable) { - List aggregatedResult = (List) ((Collection) v).stream().map(m -> { + if (v instanceof Iterable i) { + List aggregatedResult = (List) StreamSupport.stream(i.spliterator(), false).map(m -> { return m instanceof Message ? processMessage(responseOkBuilder, (Message) m) : m; }).collect(Collectors.toList()); return responseOkBuilder.header("content-type", "application/json").body(aggregatedResult);