Skip to content

Commit cef3ffb

Browse files
committed
GH-356 - Removed legacy way of tweaking autoconfiguration and entity scan packages for test runs.
1 parent 792b69c commit cef3ffb

File tree

1 file changed

+8
-37
lines changed

1 file changed

+8
-37
lines changed

spring-modulith-test/src/main/java/org/springframework/modulith/test/ModuleTestAutoConfiguration.java

Lines changed: 8 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,18 @@
1616
package org.springframework.modulith.test;
1717

1818
import java.util.Arrays;
19-
import java.util.HashSet;
2019
import java.util.List;
21-
import java.util.Set;
2220

2321
import org.slf4j.Logger;
2422
import org.slf4j.LoggerFactory;
2523
import org.springframework.beans.factory.BeanFactory;
26-
import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder;
2724
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
2825
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
2926
import org.springframework.context.annotation.Configuration;
3027
import org.springframework.context.annotation.Import;
3128
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
3229
import org.springframework.core.Ordered;
3330
import org.springframework.core.type.AnnotationMetadata;
34-
import org.springframework.util.ReflectionUtils;
3531
import org.springframework.util.StringUtils;
3632

3733
/**
@@ -66,49 +62,24 @@ public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, B
6662
LOGGER.info("Re-configuring auto-configuration and entity scan packages to: {}.",
6763
StringUtils.collectionToDelimitedString(basePackages, ", "));
6864

69-
setBasePackagesOn(registry, AUTOCONFIG_PACKAGES, "BasePackagesBeanDefinition", "basePackages", basePackages);
70-
setBasePackagesOn(registry, ENTITY_SCAN_PACKAGE, "EntityScanPackagesBeanDefinition", "packageNames",
71-
basePackages);
65+
setBasePackagesOn(registry, AUTOCONFIG_PACKAGES, basePackages);
66+
setBasePackagesOn(registry, ENTITY_SCAN_PACKAGE, basePackages);
7267
}
7368

74-
@SuppressWarnings("unchecked")
75-
private void setBasePackagesOn(BeanDefinitionRegistry registry, String beanName, String definitionType,
76-
String fieldName, List<String> packages) {
69+
private void setBasePackagesOn(BeanDefinitionRegistry registry, String beanName, List<String> packages) {
7770

7871
if (!registry.containsBeanDefinition(beanName)) {
7972
return;
8073
}
8174

8275
var definition = registry.getBeanDefinition(beanName);
76+
var holder = definition.getConstructorArgumentValues().getArgumentValue(0, String[].class);
8377

84-
// For Boot 2.4, we deal with a BasePackagesBeanDefinition
85-
var field = Arrays.stream(definition.getClass().getDeclaredFields())
86-
.filter(__ -> definition.getClass().getSimpleName().equals(definitionType))
87-
.filter(it -> it.getName().equals(fieldName))
88-
.findFirst()
89-
.orElse(null);
78+
Arrays.stream((String[]) holder.getValue())
79+
.filter(it -> it.startsWith("org.springframework.modulith"))
80+
.forEach(packages::add);
9081

91-
if (field != null) {
92-
93-
// Keep all auto-configuration packages from Moduliths
94-
95-
ReflectionUtils.makeAccessible(field);
96-
((Set<String>) ReflectionUtils.getField(field, definition)).stream()
97-
.filter(it -> it.startsWith("org.springframework.modulith"))
98-
.forEach(packages::add);
99-
100-
ReflectionUtils.setField(field, definition, new HashSet<>(packages));
101-
102-
} else {
103-
104-
ValueHolder holder = definition.getConstructorArgumentValues().getArgumentValue(0, String[].class);
105-
Arrays.stream((String[]) holder.getValue())
106-
.filter(it -> it.startsWith("org.springframework.modulith"))
107-
.forEach(packages::add);
108-
109-
// Fall back to customize the bean definition in a Boot 2.3 arrangement
110-
definition.getConstructorArgumentValues().addIndexedArgumentValue(0, packages.toArray(String[]::new));
111-
}
82+
definition.getConstructorArgumentValues().addIndexedArgumentValue(0, packages.toArray(String[]::new));
11283
}
11384
}
11485
}

0 commit comments

Comments
 (0)