This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-lang.git
commit 6622a46857509a8920a3f085dbca007286c703ac Author: Gary D. Gregory <garydgreg...@gmail.com> AuthorDate: Sat Jun 14 13:23:23 2025 -0400 Fix generics in org.apache.commons.lang3.stream.Streams.toArray(Class) signature --- src/changes/changes.xml | 3 ++- src/main/java/org/apache/commons/lang3/stream/Streams.java | 2 +- .../java/org/apache/commons/lang3/stream/StreamsTest.java | 11 +++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 762653c37..43fd65b1f 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -92,7 +92,8 @@ The <action> type attribute can be add,update,fix,remove. <action issue="LANG-1773" type="fix" dev="ggregory" due-to="Éamonn McManus, Gary Gregory">Apache Commons Lang no longer builds on Android #1381.</action> <action issue="LANG-1772" type="fix" dev="ggregory" due-to="James Winters, Piotr P. Karwasz, Gary Gregory">Restrict size of cache to prevent overflow errors #1379.</action> <action issue="LANG-1772" type="fix" dev="ggregory" due-to="Gary Gregory">Reimplement org.apache.commons.lang3.ClassUtils.hierarchy(Class, Interfaces) using an AtomicReference.</action> - <action type="fix" dev="ggregory" due-to="Ken Dombeck">Correct Javadoc code examples in DiffBuilder and ReflectionDiffBuilder #1400.</action> + <action type="fix" dev="ggregory" due-to="Ken Dombeck">Fix Javadoc code examples in DiffBuilder and ReflectionDiffBuilder #1400.</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix generics in org.apache.commons.lang3.stream.Streams.toArray(Class) signature.</action> <!-- ADD --> <action type="add" dev="ggregory" due-to="Gary Gregory">Add Strings and refactor StringUtils.</action> <action issue="LANG-1747" type="add" dev="ggregory" due-to="Oliver B. Fischer, Gary Gregory">Add StopWatch.run([Failable]Runnable) and get([Failable]Supplier).</action> diff --git a/src/main/java/org/apache/commons/lang3/stream/Streams.java b/src/main/java/org/apache/commons/lang3/stream/Streams.java index 8679390ce..1be9b6f8d 100644 --- a/src/main/java/org/apache/commons/lang3/stream/Streams.java +++ b/src/main/java/org/apache/commons/lang3/stream/Streams.java @@ -838,7 +838,7 @@ private static <T> Stream<T> streamOf(final T value) { * @param elementType Type of an element in the array. * @return a {@link Collector} which collects all the input elements into an array, in encounter order */ - public static <T> Collector<T, ?, T[]> toArray(final Class<T> elementType) { + public static <T> Collector<T, List<T>, T[]> toArray(final Class<T> elementType) { return new ArrayCollector<>(elementType); } diff --git a/src/test/java/org/apache/commons/lang3/stream/StreamsTest.java b/src/test/java/org/apache/commons/lang3/stream/StreamsTest.java index f3b3dda61..a4e153970 100644 --- a/src/test/java/org/apache/commons/lang3/stream/StreamsTest.java +++ b/src/test/java/org/apache/commons/lang3/stream/StreamsTest.java @@ -16,6 +16,7 @@ */ package org.apache.commons.lang3.stream; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -125,6 +126,16 @@ public Stream<DynamicTest> simpleStreamForEachFailing() { })); } + @Test + void testArrayCollectorCombiner() { + final String[] expected = { "A1", "B1" }; + assertArrayEquals(expected, Stream.of("A", "B").collect(Collectors.mapping(s -> s + "1", Streams.toArray(String.class)))); + assertArrayEquals(expected, Streams.failableStream("A", "B").collect(Collectors.mapping(s -> s + "1", Streams.toArray(String.class)))); + final List<String> left = new ArrayList<>(); + left.add("a"); + assertEquals(Arrays.asList("a", "b", "c"), Streams.toArray(String.class).combiner().apply(left, Arrays.asList("b", "c"))); + } + @SuppressWarnings("deprecation") @Test void testDeprefcatedCopnstructor() {