From e7df65c88504b989464842e57954e75f2a2d4f3f Mon Sep 17 00:00:00 2001 From: mikereiche Date: Mon, 17 Mar 2025 14:04:57 -0700 Subject: [PATCH] Allow null arguments in method calls to DyanmicProxyable repositories. Closes #2025. Signed-off-by: mikereiche --- .../couchbase/repository/support/FindMethod.java | 2 ++ ...CouchbaseRepositoryQueryIntegrationTests.java | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/couchbase/repository/support/FindMethod.java b/src/main/java/org/springframework/data/couchbase/repository/support/FindMethod.java index 22b37479..b86c5a7c 100644 --- a/src/main/java/org/springframework/data/couchbase/repository/support/FindMethod.java +++ b/src/main/java/org/springframework/data/couchbase/repository/support/FindMethod.java @@ -74,6 +74,8 @@ public class FindMethod { continue; if(params[j] == boolean.class && parameterTypes[j] == Boolean.class ) continue; + if(parameterTypes[j] == null && Object.class.isAssignableFrom(params[j])) // any non-primitive + continue; if (!params[j].isAssignableFrom(parameterTypes[j])) break; } diff --git a/src/test/java/org/springframework/data/couchbase/repository/ReactiveCouchbaseRepositoryQueryIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/repository/ReactiveCouchbaseRepositoryQueryIntegrationTests.java index cda62809..277d4da3 100644 --- a/src/test/java/org/springframework/data/couchbase/repository/ReactiveCouchbaseRepositoryQueryIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/repository/ReactiveCouchbaseRepositoryQueryIntegrationTests.java @@ -19,6 +19,7 @@ package org.springframework.data.couchbase.repository; import static java.util.Arrays.asList; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -141,7 +142,20 @@ public class ReactiveCouchbaseRepositoryQueryIntegrationTests extends JavaIntegr Airport airport1 = reactiveAirportRepository.findById(airports.get(0).getId()).block(); assertEquals(airport1.getIata(), vie.getIata()); Airport airport2 = reactiveAirportRepository.findByIata(airports.get(0).getIata()).block(); - assertEquals(airport1.getId(), vie.getId()); + assertEquals(airport2.getId(), vie.getId()); + } finally { + reactiveAirportRepository.delete(vie).block(); + } + } + + @Test + void testNullParamToDyanmicProxyable() { + Airport vie = null; + try { + vie = new Airport("airports::vie", "vie", "low2"); + reactiveAirportRepository.save(vie).block(); + Airport airport2 = reactiveAirportRepository.withCollection("_default").findByIata(null).block(); + assertNull(airport2); } finally { reactiveAirportRepository.delete(vie).block(); }