diff --git a/src/main/java/org/springframework/data/repository/core/support/DefaultRepositoryInformation.java b/src/main/java/org/springframework/data/repository/core/support/DefaultRepositoryInformation.java index 0aeaaed53..90061f827 100644 --- a/src/main/java/org/springframework/data/repository/core/support/DefaultRepositoryInformation.java +++ b/src/main/java/org/springframework/data/repository/core/support/DefaultRepositoryInformation.java @@ -246,7 +246,7 @@ class DefaultRepositoryInformation implements RepositoryInformation { Supplier> detailedComparison = () -> baseClass.flatMap(it -> Arrays.stream(it.getMethods())// .filter(baseClassMethod -> method.getName().equals(baseClassMethod.getName()))// Right name - .filter(baseClassMethod -> method.getParameterTypes().length == baseClassMethod.getParameterTypes().length) + .filter(baseClassMethod -> method.getParameterCount() == baseClassMethod.getParameterCount()) .filter(baseClassMethod -> parametersMatch(method, baseClassMethod))// All parameters match .findFirst()); diff --git a/src/main/java/org/springframework/data/repository/core/support/ReactiveRepositoryInformation.java b/src/main/java/org/springframework/data/repository/core/support/ReactiveRepositoryInformation.java index a94c8b37b..916fd5893 100644 --- a/src/main/java/org/springframework/data/repository/core/support/ReactiveRepositoryInformation.java +++ b/src/main/java/org/springframework/data/repository/core/support/ReactiveRepositoryInformation.java @@ -163,7 +163,7 @@ public class ReactiveRepositoryInformation extends DefaultRepositoryInformation return Arrays.stream(baseClass.getMethods())// .filter(it -> method.getName().equals(it.getName()))// - .filter(it -> method.getParameterTypes().length == it.getParameterTypes().length)// + .filter(it -> method.getParameterCount() == it.getParameterCount())// .filter(it -> parametersMatch(it, method, predicate))// .findFirst(); } diff --git a/src/main/java/org/springframework/data/repository/query/spi/Function.java b/src/main/java/org/springframework/data/repository/query/spi/Function.java index 54b9d1d1e..84f8ff676 100644 --- a/src/main/java/org/springframework/data/repository/query/spi/Function.java +++ b/src/main/java/org/springframework/data/repository/query/spi/Function.java @@ -101,12 +101,12 @@ public class Function { */ public boolean supports(List argumentTypes) { - Class[] parameterTypes = method.getParameterTypes(); - - if (parameterTypes.length != argumentTypes.size()) { + if (method.getParameterCount() != argumentTypes.size()) { return false; } + Class[] parameterTypes = method.getParameterTypes(); + for (int i = 0; i < parameterTypes.length; i++) { if (!TypeUtils.isAssignable(parameterTypes[i], argumentTypes.get(i).getType())) { return false; diff --git a/src/main/java/org/springframework/data/repository/support/MethodParameters.java b/src/main/java/org/springframework/data/repository/support/MethodParameters.java index 252ef1c95..25540b745 100644 --- a/src/main/java/org/springframework/data/repository/support/MethodParameters.java +++ b/src/main/java/org/springframework/data/repository/support/MethodParameters.java @@ -60,7 +60,7 @@ class MethodParameters { Assert.notNull(method, "Method must not be null!"); this.parameters = new ArrayList<>(); - for (int i = 0; i < method.getParameterTypes().length; i++) { + for (int i = 0; i < method.getParameterCount(); i++) { MethodParameter parameter = new AnnotationNamingMethodParameter(method, i, namingAnnotation); parameter.initParameterNameDiscovery(discoverer); 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 a0d8980b4..f366b685f 100644 --- a/src/main/java/org/springframework/data/repository/support/ReflectionRepositoryInvoker.java +++ b/src/main/java/org/springframework/data/repository/support/ReflectionRepositoryInvoker.java @@ -283,9 +283,8 @@ class ReflectionRepositoryInvoker implements RepositoryInvoker { Method method = methods.getFindAllMethod() .orElseThrow(() -> new IllegalStateException("Repository doesn't have a find-all-method declared!")); - Class[] types = method.getParameterTypes(); - if (types.length == 0) { + if (method.getParameterCount() == 0) { return invoke(method); } diff --git a/src/test/java/org/springframework/data/mapping/model/ClassGeneratingPropertyAccessorFactoryTests.java b/src/test/java/org/springframework/data/mapping/model/ClassGeneratingPropertyAccessorFactoryTests.java index 13d38d8d1..e1755f2c9 100755 --- a/src/test/java/org/springframework/data/mapping/model/ClassGeneratingPropertyAccessorFactoryTests.java +++ b/src/test/java/org/springframework/data/mapping/model/ClassGeneratingPropertyAccessorFactoryTests.java @@ -116,7 +116,7 @@ public class ClassGeneratingPropertyAccessorFactoryTests { Constructor[] declaredConstructors = persistentPropertyAccessor.getClass().getDeclaredConstructors(); assertThat(declaredConstructors.length).isEqualTo(1); - assertThat(declaredConstructors[0].getParameterTypes().length).isEqualTo(1); + assertThat(declaredConstructors[0].getParameterCount()).isEqualTo(1); assertThat(declaredConstructors[0].getParameterTypes()[0]).isEqualTo(expectedConstructorType); }