Skip to content

Commit d3f7332

Browse files
authored
Allow null arguments in method calls to DyanmicProxyable repositories. (#2040)
Closes #2025. Signed-off-by: mikereiche <[email protected]>
1 parent 7252527 commit d3f7332

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/main/java/org/springframework/data/couchbase/repository/support/FindMethod.java

+2
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ private static Method internalFind(Method[] toTest, String name, Class[] paramet
7474
continue;
7575
if(params[j] == boolean.class && parameterTypes[j] == Boolean.class )
7676
continue;
77+
if(parameterTypes[j] == null && Object.class.isAssignableFrom(params[j])) // any non-primitive
78+
continue;
7779
if (!params[j].isAssignableFrom(parameterTypes[j]))
7880
break;
7981
}

src/test/java/org/springframework/data/couchbase/repository/ReactiveCouchbaseRepositoryQueryIntegrationTests.java

+15-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static java.util.Arrays.asList;
2020
import static org.junit.jupiter.api.Assertions.assertEquals;
2121
import static org.junit.jupiter.api.Assertions.assertFalse;
22+
import static org.junit.jupiter.api.Assertions.assertNull;
2223
import static org.junit.jupiter.api.Assertions.assertThrows;
2324
import static org.junit.jupiter.api.Assertions.assertTrue;
2425

@@ -141,7 +142,20 @@ void findBySimpleProperty() {
141142
Airport airport1 = reactiveAirportRepository.findById(airports.get(0).getId()).block();
142143
assertEquals(airport1.getIata(), vie.getIata());
143144
Airport airport2 = reactiveAirportRepository.findByIata(airports.get(0).getIata()).block();
144-
assertEquals(airport1.getId(), vie.getId());
145+
assertEquals(airport2.getId(), vie.getId());
146+
} finally {
147+
reactiveAirportRepository.delete(vie).block();
148+
}
149+
}
150+
151+
@Test
152+
void testNullParamToDyanmicProxyable() {
153+
Airport vie = null;
154+
try {
155+
vie = new Airport("airports::vie", "vie", "low2");
156+
reactiveAirportRepository.save(vie).block();
157+
Airport airport2 = reactiveAirportRepository.withCollection("_default").findByIata(null).block();
158+
assertNull(airport2);
145159
} finally {
146160
reactiveAirportRepository.delete(vie).block();
147161
}

0 commit comments

Comments
 (0)