From 9ceaf21d2461b696e790e0f61188b50debb787b0 Mon Sep 17 00:00:00 2001 From: Sam Brannen <104798+sbrannen@users.noreply.github.com> Date: Mon, 3 Jun 2024 14:56:43 +0200 Subject: [PATCH] Extract findMethods() logic in TestBeanOverrideProcessor --- .../convention/TestBeanOverrideProcessor.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java b/spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java index 457acf75c1..71c6dc4787 100644 --- a/spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java +++ b/spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java @@ -22,7 +22,6 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; -import java.util.Arrays; import java.util.LinkedHashSet; import java.util.List; import java.util.Objects; @@ -37,6 +36,7 @@ import org.springframework.test.context.bean.override.BeanOverrideStrategy; import org.springframework.test.context.bean.override.OverrideMetadata; import org.springframework.util.Assert; import org.springframework.util.ReflectionUtils; +import org.springframework.util.ReflectionUtils.MethodFilter; import org.springframework.util.StringUtils; /** @@ -84,18 +84,13 @@ class TestBeanOverrideProcessor implements BeanOverrideProcessor { static Method findTestBeanFactoryMethod(Class clazz, Class methodReturnType, List methodNames) { Assert.notEmpty(methodNames, "At least one candidate method name is required"); Set supportedNames = new LinkedHashSet<>(methodNames); - List methods = Arrays.stream(ReflectionUtils.getAllDeclaredMethods(clazz)) - .filter(method -> Modifier.isStatic(method.getModifiers()) && - supportedNames.contains(method.getName()) && - methodReturnType.isAssignableFrom(method.getReturnType())) - .toList(); + MethodFilter methodFilter = method -> (Modifier.isStatic(method.getModifiers()) && + supportedNames.contains(method.getName()) && + methodReturnType.isAssignableFrom(method.getReturnType())); + List methods = findMethods(clazz, methodFilter); if (methods.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(clazz)) { - methods = Arrays.stream(ReflectionUtils.getAllDeclaredMethods(clazz.getEnclosingClass())) - .filter(method -> Modifier.isStatic(method.getModifiers()) && - supportedNames.contains(method.getName()) && - methodReturnType.isAssignableFrom(method.getReturnType())) - .toList(); + methods = findMethods(clazz.getEnclosingClass(), methodFilter); } Assert.state(!methods.isEmpty(), () -> """ @@ -143,6 +138,13 @@ class TestBeanOverrideProcessor implements BeanOverrideProcessor { } + private static List findMethods(Class clazz, MethodFilter methodFilter) { + List methods = new ArrayList<>(); + ReflectionUtils.doWithMethods(clazz, methods::add, methodFilter); + return methods; + } + + static final class TestBeanOverrideMetadata extends OverrideMetadata { private final Method overrideMethod;