Skip to content

Commit 2ca10e2

Browse files
committed
Simplify implementation of BeanOverrideParser
See gh-29917
1 parent 0ef5a40 commit 2ca10e2

File tree

1 file changed

+14
-20
lines changed

1 file changed

+14
-20
lines changed

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

+14-20
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525

2626
import org.springframework.beans.BeanUtils;
2727
import org.springframework.core.ResolvableType;
28-
import org.springframework.core.annotation.MergedAnnotation;
2928
import org.springframework.core.annotation.MergedAnnotations;
3029
import org.springframework.util.Assert;
3130
import org.springframework.util.ReflectionUtils;
@@ -94,26 +93,21 @@ boolean hasBeanOverride(Class<?> testClass) {
9493
private void parseField(Field field, Class<?> source) {
9594
AtomicBoolean overrideAnnotationFound = new AtomicBoolean();
9695

97-
MergedAnnotations.from(field, DIRECT)
98-
.stream(BeanOverride.class)
99-
.map(mergedAnnotation -> {
100-
MergedAnnotation<?> metaSource = mergedAnnotation.getMetaSource();
101-
Assert.notNull(metaSource, "@BeanOverride annotation must be meta-present");
102-
return new AnnotationPair(metaSource.synthesize(), mergedAnnotation.synthesize());
103-
})
104-
.forEach(pair -> {
105-
BeanOverrideProcessor processor = BeanUtils.instantiateClass(pair.beanOverride.value());
106-
ResolvableType typeToOverride = processor.getOrDeduceType(field, pair.composedAnnotation, source);
96+
MergedAnnotations.from(field, DIRECT).stream(BeanOverride.class).forEach(mergedAnnotation -> {
97+
Assert.notNull(mergedAnnotation.isMetaPresent(), "@BeanOverride annotation must be meta-present");
10798

108-
Assert.state(overrideAnnotationFound.compareAndSet(false, true),
109-
() -> "Multiple @BeanOverride annotations found on field: " + field);
110-
OverrideMetadata metadata = processor.createMetadata(field, pair.composedAnnotation, typeToOverride);
111-
boolean isNewDefinition = this.parsedMetadata.add(metadata);
112-
Assert.state(isNewDefinition, () -> "Duplicate " + metadata.getBeanOverrideDescription() +
113-
" OverrideMetadata: " + metadata);
114-
});
115-
}
99+
BeanOverride beanOverride = mergedAnnotation.synthesize();
100+
BeanOverrideProcessor processor = BeanUtils.instantiateClass(beanOverride.value());
101+
Annotation composedAnnotation = mergedAnnotation.getMetaSource().synthesize();
102+
ResolvableType typeToOverride = processor.getOrDeduceType(field, composedAnnotation, source);
116103

117-
private record AnnotationPair(Annotation composedAnnotation, BeanOverride beanOverride) {}
104+
Assert.state(overrideAnnotationFound.compareAndSet(false, true),
105+
() -> "Multiple @BeanOverride annotations found on field: " + field);
106+
OverrideMetadata metadata = processor.createMetadata(field, composedAnnotation, typeToOverride);
107+
boolean isNewDefinition = this.parsedMetadata.add(metadata);
108+
Assert.state(isNewDefinition, () -> "Duplicate " + metadata.getBeanOverrideDescription() +
109+
" OverrideMetadata: " + metadata);
110+
});
111+
}
118112

119113
}

0 commit comments

Comments
 (0)