From cef3ffbe7eaf234639577e15a2db145583dc72a6 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Thu, 2 Nov 2023 14:06:11 +0100 Subject: [PATCH] GH-356 - Removed legacy way of tweaking autoconfiguration and entity scan packages for test runs. --- .../test/ModuleTestAutoConfiguration.java | 45 ++++--------------- 1 file changed, 8 insertions(+), 37 deletions(-) diff --git a/spring-modulith-test/src/main/java/org/springframework/modulith/test/ModuleTestAutoConfiguration.java b/spring-modulith-test/src/main/java/org/springframework/modulith/test/ModuleTestAutoConfiguration.java index 9ecceec9..38e991a8 100644 --- a/spring-modulith-test/src/main/java/org/springframework/modulith/test/ModuleTestAutoConfiguration.java +++ b/spring-modulith-test/src/main/java/org/springframework/modulith/test/ModuleTestAutoConfiguration.java @@ -16,14 +16,11 @@ package org.springframework.modulith.test; import java.util.Arrays; -import java.util.HashSet; import java.util.List; -import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.boot.autoconfigure.AutoConfigureOrder; import org.springframework.context.annotation.Configuration; @@ -31,7 +28,6 @@ import org.springframework.context.annotation.Import; import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; import org.springframework.core.Ordered; import org.springframework.core.type.AnnotationMetadata; -import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; /** @@ -66,49 +62,24 @@ class ModuleTestAutoConfiguration { LOGGER.info("Re-configuring auto-configuration and entity scan packages to: {}.", StringUtils.collectionToDelimitedString(basePackages, ", ")); - setBasePackagesOn(registry, AUTOCONFIG_PACKAGES, "BasePackagesBeanDefinition", "basePackages", basePackages); - setBasePackagesOn(registry, ENTITY_SCAN_PACKAGE, "EntityScanPackagesBeanDefinition", "packageNames", - basePackages); + setBasePackagesOn(registry, AUTOCONFIG_PACKAGES, basePackages); + setBasePackagesOn(registry, ENTITY_SCAN_PACKAGE, basePackages); } - @SuppressWarnings("unchecked") - private void setBasePackagesOn(BeanDefinitionRegistry registry, String beanName, String definitionType, - String fieldName, List packages) { + private void setBasePackagesOn(BeanDefinitionRegistry registry, String beanName, List packages) { if (!registry.containsBeanDefinition(beanName)) { return; } var definition = registry.getBeanDefinition(beanName); + var holder = definition.getConstructorArgumentValues().getArgumentValue(0, String[].class); - // For Boot 2.4, we deal with a BasePackagesBeanDefinition - var field = Arrays.stream(definition.getClass().getDeclaredFields()) - .filter(__ -> definition.getClass().getSimpleName().equals(definitionType)) - .filter(it -> it.getName().equals(fieldName)) - .findFirst() - .orElse(null); + Arrays.stream((String[]) holder.getValue()) + .filter(it -> it.startsWith("org.springframework.modulith")) + .forEach(packages::add); - if (field != null) { - - // Keep all auto-configuration packages from Moduliths - - ReflectionUtils.makeAccessible(field); - ((Set) ReflectionUtils.getField(field, definition)).stream() - .filter(it -> it.startsWith("org.springframework.modulith")) - .forEach(packages::add); - - ReflectionUtils.setField(field, definition, new HashSet<>(packages)); - - } else { - - ValueHolder holder = definition.getConstructorArgumentValues().getArgumentValue(0, String[].class); - Arrays.stream((String[]) holder.getValue()) - .filter(it -> it.startsWith("org.springframework.modulith")) - .forEach(packages::add); - - // Fall back to customize the bean definition in a Boot 2.3 arrangement - definition.getConstructorArgumentValues().addIndexedArgumentValue(0, packages.toArray(String[]::new)); - } + definition.getConstructorArgumentValues().addIndexedArgumentValue(0, packages.toArray(String[]::new)); } } }