|
25 | 25 |
|
26 | 26 | import org.springframework.beans.BeanUtils;
|
27 | 27 | import org.springframework.core.ResolvableType;
|
28 |
| -import org.springframework.core.annotation.MergedAnnotation; |
29 | 28 | import org.springframework.core.annotation.MergedAnnotations;
|
30 | 29 | import org.springframework.util.Assert;
|
31 | 30 | import org.springframework.util.ReflectionUtils;
|
@@ -94,26 +93,21 @@ boolean hasBeanOverride(Class<?> testClass) {
|
94 | 93 | private void parseField(Field field, Class<?> source) {
|
95 | 94 | AtomicBoolean overrideAnnotationFound = new AtomicBoolean();
|
96 | 95 |
|
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"); |
107 | 98 |
|
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); |
116 | 103 |
|
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 | + } |
118 | 112 |
|
119 | 113 | }
|
0 commit comments