diff --git a/src/main/java/org/springframework/data/repository/support/ReflectionRepositoryInvoker.java b/src/main/java/org/springframework/data/repository/support/ReflectionRepositoryInvoker.java index 38a2d4a97..93b4ee006 100644 --- a/src/main/java/org/springframework/data/repository/support/ReflectionRepositoryInvoker.java +++ b/src/main/java/org/springframework/data/repository/support/ReflectionRepositoryInvoker.java @@ -178,8 +178,8 @@ class ReflectionRepositoryInvoker implements RepositoryInvoker { * @see org.springframework.data.rest.core.invoke.RepositoryInvoker#invokeQueryMethod(java.lang.reflect.Method, java.util.Map, org.springframework.data.domain.Pageable, org.springframework.data.domain.Sort) */ @Override - public Optional invokeQueryMethod(Method method, MultiValueMap parameters, - Pageable pageable, Sort sort) { + public Optional invokeQueryMethod(Method method, MultiValueMap parameters, Pageable pageable, + Sort sort) { Assert.notNull(method, "Method must not be null!"); Assert.notNull(parameters, "Parameters must not be null!"); @@ -191,8 +191,8 @@ class ReflectionRepositoryInvoker implements RepositoryInvoker { return returnAsOptional(invoke(method, prepareParameters(method, parameters, pageable, sort))); } - private Object[] prepareParameters(Method method, MultiValueMap rawParameters, - Pageable pageable, Sort sort) { + private Object[] prepareParameters(Method method, MultiValueMap rawParameters, Pageable pageable, + Sort sort) { List parameters = new MethodParameters(method, Optional.of(PARAM_ANNOTATION)).getParameters(); @@ -286,6 +286,10 @@ class ReflectionRepositoryInvoker implements RepositoryInvoker { Assert.notNull(id, "Id must not be null!"); + if (idType.isInstance(id)) { + return id; + } + Object result = conversionService.convert(id, idType); if (result == null) { diff --git a/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java b/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java index a2bb29c04..d453d50be 100755 --- a/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java +++ b/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java @@ -100,21 +100,16 @@ class DomainClassConverterUnitTests { assertMatches(false); } - // DATACMNS-233 + @Test // DATACMNS-233 void returnsNullForNullSource() { assertThat(converter.convert(null, STRING_TYPE, USER_TYPE)).isNull(); } - // DATACMNS-233 + @Test // DATACMNS-233 void returnsNullForEmptyStringSource() { assertThat(converter.convert("", STRING_TYPE, USER_TYPE)).isNull(); } - private void assertMatches(boolean matchExpected) { - - assertThat(converter.matches(STRING_TYPE, USER_TYPE)).isEqualTo(matchExpected); - } - @Test void convertsStringToUserCorrectly() throws Exception { @@ -234,6 +229,10 @@ class DomainClassConverterUnitTests { return ctx; } + private void assertMatches(boolean matchExpected) { + assertThat(converter.matches(STRING_TYPE, USER_TYPE)).isEqualTo(matchExpected); + } + static interface Wrapper { void foo(@ModelAttribute User user);