diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/CollectionUtils.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/CollectionUtils.java index 6352836f98..53244d4679 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/CollectionUtils.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/CollectionUtils.java @@ -17,13 +17,20 @@ import java.util.List; +import org.springframework.util.Assert; + /** * Utility methods to obtain sublists. * * @author Mark Paluch + * @author qkrtkdwns3410 */ class CollectionUtils { + private CollectionUtils() { + // prevent instantiation + } + /** * Return the first {@code count} items from the list. * @@ -33,6 +40,7 @@ class CollectionUtils { * @param the element type of the lists. */ public static List getFirst(int count, List list) { + Assert.notNull(list, "List must not be null"); if (count > 0 && list.size() > count) { return list.subList(0, count); @@ -50,9 +58,10 @@ public static List getFirst(int count, List list) { * @param the element type of the lists. */ public static List getLast(int count, List list) { + Assert.notNull(list, "List must not be null"); if (count > 0 && list.size() > count) { - return list.subList(list.size() - (count), list.size()); + return list.subList(list.size() - count, list.size()); } return list; diff --git a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/CollectionUtilsUnitTests.java b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/CollectionUtilsUnitTests.java index 9ab7aa87da..2859924e3b 100644 --- a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/CollectionUtilsUnitTests.java +++ b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/CollectionUtilsUnitTests.java @@ -25,6 +25,7 @@ * Unit tests for {@link CollectionUtils}. * * @author Mark Paluch + * @author qkrtkdwns3410 */ class CollectionUtilsUnitTests { @@ -43,4 +44,14 @@ void shouldReturnLastItems() { assertThat(CollectionUtils.getLast(2, List.of(1, 2))).containsExactly(1, 2); assertThat(CollectionUtils.getLast(2, List.of(1))).containsExactly(1); } + + @Test // GH-4108 + void getFirstShouldRejectNullList() { + assertThatIllegalArgumentException().isThrownBy(() -> CollectionUtils.getFirst(2, null)); + } + + @Test // GH-4108 + void getLastShouldRejectNullList() { + assertThatIllegalArgumentException().isThrownBy(() -> CollectionUtils.getLast(2, null)); + } }