From 5eaa686b9b4369335986e6dc1dd4bb19349f5270 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Fri, 27 Apr 2012 18:44:48 +0200 Subject: [PATCH] DATAJPA-201 - Fixed NullPointerException for null Pageables. The optimization for DATAJPA-124 introduced a NullPointerException being thrown if the Pageable instance handed to a paging query was null. Added a guard to handle this situation correctly. Unfortunately had to disable the test case for EclipseLink as the bug with HSQL still exists. --- .../data/jpa/repository/query/JpaQueryExecution.java | 3 ++- .../EclipseLinkNamespaceUserRepositoryTests.java | 8 ++++++++ .../data/jpa/repository/UserRepositoryTests.java | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryExecution.java b/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryExecution.java index ad9f2e9a9..2aaf0d01b 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryExecution.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryExecution.java @@ -104,7 +104,8 @@ public abstract class JpaQueryExecution { ParameterAccessor accessor = new ParametersParameterAccessor(parameters, values); Pageable pageable = accessor.getPageable(); - List content = total > pageable.getOffset() ? query.getResultList() : Collections.emptyList(); + List content = pageable == null || total > pageable.getOffset() ? query.getResultList() : Collections + .emptyList(); return new PageImpl(content, pageable, total); } diff --git a/src/test/java/org/springframework/data/jpa/repository/EclipseLinkNamespaceUserRepositoryTests.java b/src/test/java/org/springframework/data/jpa/repository/EclipseLinkNamespaceUserRepositoryTests.java index 748dc8e77..f96ae716b 100644 --- a/src/test/java/org/springframework/data/jpa/repository/EclipseLinkNamespaceUserRepositoryTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/EclipseLinkNamespaceUserRepositoryTests.java @@ -35,4 +35,12 @@ public class EclipseLinkNamespaceUserRepositoryTests extends NamespaceUserReposi public void findsAllByGivenIds() { } + + /** + * Ignored until https://bugs.eclipse.org/bugs/show_bug.cgi?id=349477 is resolved. + */ + @Override + public void allowsExecutingPageableMethodWithNullPageable() { + + } } diff --git a/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java b/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java index 5bca46c71..d36b4946e 100644 --- a/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java @@ -818,6 +818,7 @@ public class UserRepositoryTests { /** * @see DATAJPA-201 */ + @Test public void allowsExecutingPageableMethodWithNullPageable() { flushTestUsers(); @@ -829,6 +830,10 @@ public class UserRepositoryTests { Page page = repository.findByFirstnameIn(null, "Oliver"); assertThat(page.getNumberOfElements(), is(1)); assertThat(page.getContent(), hasItem(firstUser)); + + page = repository.findAll((Pageable) null); + assertThat(page.getNumberOfElements(), is(3)); + assertThat(page.getContent(), hasItems(firstUser, secondUser, thirdUser)); } protected void flushTestUsers() {