Skip to content

Commit 9ceaf21

Browse files
committed
Extract findMethods() logic in TestBeanOverrideProcessor
1 parent 1536f34 commit 9ceaf21

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java

+13-11
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import java.lang.reflect.Method;
2323
import java.lang.reflect.Modifier;
2424
import java.util.ArrayList;
25-
import java.util.Arrays;
2625
import java.util.LinkedHashSet;
2726
import java.util.List;
2827
import java.util.Objects;
@@ -37,6 +36,7 @@
3736
import org.springframework.test.context.bean.override.OverrideMetadata;
3837
import org.springframework.util.Assert;
3938
import org.springframework.util.ReflectionUtils;
39+
import org.springframework.util.ReflectionUtils.MethodFilter;
4040
import org.springframework.util.StringUtils;
4141

4242
/**
@@ -84,18 +84,13 @@ static Method findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnTyp
8484
static Method findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, List<String> methodNames) {
8585
Assert.notEmpty(methodNames, "At least one candidate method name is required");
8686
Set<String> supportedNames = new LinkedHashSet<>(methodNames);
87-
List<Method> methods = Arrays.stream(ReflectionUtils.getAllDeclaredMethods(clazz))
88-
.filter(method -> Modifier.isStatic(method.getModifiers()) &&
89-
supportedNames.contains(method.getName()) &&
90-
methodReturnType.isAssignableFrom(method.getReturnType()))
91-
.toList();
87+
MethodFilter methodFilter = method -> (Modifier.isStatic(method.getModifiers()) &&
88+
supportedNames.contains(method.getName()) &&
89+
methodReturnType.isAssignableFrom(method.getReturnType()));
9290

91+
List<Method> methods = findMethods(clazz, methodFilter);
9392
if (methods.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(clazz)) {
94-
methods = Arrays.stream(ReflectionUtils.getAllDeclaredMethods(clazz.getEnclosingClass()))
95-
.filter(method -> Modifier.isStatic(method.getModifiers()) &&
96-
supportedNames.contains(method.getName()) &&
97-
methodReturnType.isAssignableFrom(method.getReturnType()))
98-
.toList();
93+
methods = findMethods(clazz.getEnclosingClass(), methodFilter);
9994
}
10095

10196
Assert.state(!methods.isEmpty(), () -> """
@@ -143,6 +138,13 @@ public TestBeanOverrideMetadata createMetadata(Annotation overrideAnnotation, Cl
143138
}
144139

145140

141+
private static List<Method> findMethods(Class<?> clazz, MethodFilter methodFilter) {
142+
List<Method> methods = new ArrayList<>();
143+
ReflectionUtils.doWithMethods(clazz, methods::add, methodFilter);
144+
return methods;
145+
}
146+
147+
146148
static final class TestBeanOverrideMetadata extends OverrideMetadata {
147149

148150
private final Method overrideMethod;

0 commit comments

Comments
 (0)