From e342008c4be765480d2064c5ae6e3e418716d8f1 Mon Sep 17 00:00:00 2001 From: Edward Prentice Date: Tue, 7 Feb 2017 21:27:40 +0000 Subject: [PATCH] DATAMONGO-1608 - Add guard against NPE in MongoQueryCreator when using IgnoreCase. Original Pull Request: #439 --- .../data/mongodb/repository/query/MongoQueryCreator.java | 5 ++++- .../AbstractPersonRepositoryIntegrationTests.java | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java index 0d40ed4d2..276de5d2c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java @@ -55,6 +55,7 @@ import org.springframework.util.ClassUtils; * @author Oliver Gierke * @author Thomas Darimont * @author Christoph Strobl + * @author Edward Prentice */ class MongoQueryCreator extends AbstractQueryCreator { @@ -299,7 +300,9 @@ class MongoQueryCreator extends AbstractQueryCreator { criteria = criteria.not(); } - return addAppropriateLikeRegexTo(criteria, part, parameters.next().toString()); + Object next = parameters.next(); + + return addAppropriateLikeRegexTo(criteria, part, next != null ? next.toString() : ""); case NEVER: // intentional no-op diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java index b2d925bc6..3bb60ff39 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java @@ -67,6 +67,7 @@ import org.springframework.test.util.ReflectionTestUtils; * @author Christoph Strobl * @author Mark Paluch * @author Fırat KÜÇÜK + * @author Edward Prentice */ @RunWith(SpringJUnit4ClassRunner.class) public abstract class AbstractPersonRepositoryIntegrationTests { @@ -654,6 +655,14 @@ public abstract class AbstractPersonRepositoryIntegrationTests { assertThat(results.getAverageDistance().getMetric(), is((Metric) Metrics.KILOMETERS)); } + @Test // DATAMONGO-1608 + public void findByFirstNameIgnoreCaseWithNull() { + + List result = repository.findByFirstnameIgnoreCase(null); + + assertThat(result.size(), is(0)); + } + @Test // DATAMONGO-770 public void findByFirstNameIgnoreCase() {