From 200c091b34813fc2636372fc2dcefd298d6bf5a2 Mon Sep 17 00:00:00 2001 From: Yanming Zhou Date: Tue, 3 Jun 2025 16:23:42 +0800 Subject: [PATCH] Use mutable list to collect items from `Stream` for reversal. >> There are no guarantees on the type, mutability, serializability, or thread-safety of the List returned `Collector.toList()` doesn't guarantee mutability, then passing it to `Collections.reverse()` is not safe. Signed-off-by: Yanming Zhou Closes #3304 --- .../org/springframework/data/convert/CustomConversions.java | 2 +- .../data/spel/ExtensionAwareEvaluationContextProvider.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/data/convert/CustomConversions.java b/src/main/java/org/springframework/data/convert/CustomConversions.java index 242f6e0d4..a9e48c09e 100644 --- a/src/main/java/org/springframework/data/convert/CustomConversions.java +++ b/src/main/java/org/springframework/data/convert/CustomConversions.java @@ -124,7 +124,7 @@ public class CustomConversions { converterConfiguration.getStoreConversions(), converterConfiguration.getUserConverters()).stream() .filter(this::isSupportedConverter).filter(this::shouldRegister) .map(ConverterRegistrationIntent::getConverterRegistration).map(this::register).distinct() - .collect(Collectors.toList()); + .collect(Collectors.toCollection(ArrayList::new)); Collections.reverse(registeredConverters); diff --git a/src/main/java/org/springframework/data/spel/ExtensionAwareEvaluationContextProvider.java b/src/main/java/org/springframework/data/spel/ExtensionAwareEvaluationContextProvider.java index b3d5eec7a..f3b049f02 100644 --- a/src/main/java/org/springframework/data/spel/ExtensionAwareEvaluationContextProvider.java +++ b/src/main/java/org/springframework/data/spel/ExtensionAwareEvaluationContextProvider.java @@ -189,7 +189,7 @@ public class ExtensionAwareEvaluationContextProvider implements EvaluationContex return extensions.stream()// .sorted(AnnotationAwareOrderComparator.INSTANCE)// .map(it -> new EvaluationContextExtensionAdapter(it, getOrCreateInformation(it))) // - .collect(Collectors.toList()); + .collect(Collectors.toCollection(ArrayList::new)); } /**