GH-9 - Rename core, public abstractions from Module to ApplicationModule.
Remove obsolete @since tags and deprecations.
This commit is contained in:
@@ -28,14 +28,14 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
|
||||
import org.springframework.boot.test.autoconfigure.filter.TypeExcludeFilters;
|
||||
import org.springframework.boot.test.context.SpringBootTestContextBootstrapper;
|
||||
import org.springframework.core.annotation.AliasFor;
|
||||
import org.springframework.modulith.model.Module.DependencyDepth;
|
||||
import org.springframework.modulith.model.ApplicationModule.DependencyDepth;
|
||||
import org.springframework.test.context.BootstrapWith;
|
||||
import org.springframework.test.context.TestConstructor;
|
||||
import org.springframework.test.context.TestConstructor.AutowireMode;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
|
||||
/**
|
||||
* Bootstraps the module containing the package of the test class annotated with {@link ModuleTest}. Will apply the
|
||||
* Bootstraps the module containing the package of the test class annotated with {@link ApplicationModuleTest}. Will apply the
|
||||
* following modifications to the Spring Boot configuration:
|
||||
* <ul>
|
||||
* <li>Restricts the component scanning to the module's package.
|
||||
@@ -54,7 +54,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
@ExtendWith(PublishedEventsParameterResolver.class)
|
||||
@TestInstance(Lifecycle.PER_CLASS)
|
||||
@TestConstructor(autowireMode = AutowireMode.ALL)
|
||||
public @interface ModuleTest {
|
||||
public @interface ApplicationModuleTest {
|
||||
|
||||
@AliasFor("mode")
|
||||
BootstrapMode value() default BootstrapMode.STANDALONE;
|
||||
@@ -28,8 +28,8 @@ import java.util.stream.Stream;
|
||||
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.core.annotation.AnnotatedElementUtils;
|
||||
import org.springframework.modulith.model.Module;
|
||||
import org.springframework.modulith.model.Modules;
|
||||
import org.springframework.modulith.model.ApplicationModule;
|
||||
import org.springframework.modulith.model.ApplicationModules;
|
||||
import org.springframework.test.context.ContextConfigurationAttributes;
|
||||
import org.springframework.test.context.ContextCustomizer;
|
||||
import org.springframework.test.context.ContextCustomizerFactory;
|
||||
@@ -48,7 +48,7 @@ class ModuleContextCustomizerFactory implements ContextCustomizerFactory {
|
||||
public ContextCustomizer createContextCustomizer(Class<?> testClass,
|
||||
List<ContextConfigurationAttributes> configAttributes) {
|
||||
|
||||
ModuleTest moduleTest = AnnotatedElementUtils.getMergedAnnotation(testClass, ModuleTest.class);
|
||||
ApplicationModuleTest moduleTest = AnnotatedElementUtils.getMergedAnnotation(testClass, ApplicationModuleTest.class);
|
||||
|
||||
return moduleTest == null ? null : new ModuleContextCustomizer(testClass);
|
||||
}
|
||||
@@ -86,8 +86,8 @@ class ModuleContextCustomizerFactory implements ContextCustomizerFactory {
|
||||
|
||||
private static void logModules(ModuleTestExecution execution) {
|
||||
|
||||
Module module = execution.getModule();
|
||||
Modules modules = execution.getModules();
|
||||
ApplicationModule module = execution.getModule();
|
||||
ApplicationModules modules = execution.getModules();
|
||||
String moduleName = module.getDisplayName();
|
||||
String bootstrapMode = execution.getBootstrapMode().name();
|
||||
|
||||
@@ -99,7 +99,7 @@ class ModuleContextCustomizerFactory implements ContextCustomizerFactory {
|
||||
|
||||
Arrays.stream(module.toString(modules).split("\n")).forEach(LOG::info);
|
||||
|
||||
List<Module> extraIncludes = execution.getExtraIncludes();
|
||||
List<ApplicationModule> extraIncludes = execution.getExtraIncludes();
|
||||
|
||||
if (!extraIncludes.isEmpty()) {
|
||||
|
||||
@@ -108,7 +108,7 @@ class ModuleContextCustomizerFactory implements ContextCustomizerFactory {
|
||||
extraIncludes.forEach(it -> LOG.info("> ".concat(it.getName())));
|
||||
}
|
||||
|
||||
Set<Module> sharedModules = modules.getSharedModules();
|
||||
Set<ApplicationModule> sharedModules = modules.getSharedModules();
|
||||
|
||||
if (!sharedModules.isEmpty()) {
|
||||
|
||||
@@ -117,13 +117,13 @@ class ModuleContextCustomizerFactory implements ContextCustomizerFactory {
|
||||
sharedModules.forEach(it -> LOG.info("> ".concat(it.getName())));
|
||||
}
|
||||
|
||||
List<Module> dependencies = execution.getDependencies();
|
||||
List<ApplicationModule> dependencies = execution.getDependencies();
|
||||
|
||||
if (!dependencies.isEmpty() || !sharedModules.isEmpty()) {
|
||||
|
||||
logHeadline("Included dependencies:", message);
|
||||
|
||||
Stream<Module> dependenciesPlusMissingSharedOnes = //
|
||||
Stream<ApplicationModule> dependenciesPlusMissingSharedOnes = //
|
||||
Stream.concat(dependencies.stream(), sharedModules.stream() //
|
||||
.filter(it -> !dependencies.contains(it)));
|
||||
|
||||
|
||||
@@ -34,9 +34,9 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.test.context.AnnotatedClassFinder;
|
||||
import org.springframework.core.annotation.AnnotatedElementUtils;
|
||||
import org.springframework.modulith.model.JavaPackage;
|
||||
import org.springframework.modulith.model.Module;
|
||||
import org.springframework.modulith.model.Modules;
|
||||
import org.springframework.modulith.test.ModuleTest.BootstrapMode;
|
||||
import org.springframework.modulith.model.ApplicationModule;
|
||||
import org.springframework.modulith.model.ApplicationModules;
|
||||
import org.springframework.modulith.test.ApplicationModuleTest.BootstrapMode;
|
||||
|
||||
import com.tngtech.archunit.thirdparty.com.google.common.base.Supplier;
|
||||
import com.tngtech.archunit.thirdparty.com.google.common.base.Suppliers;
|
||||
@@ -46,7 +46,7 @@ import com.tngtech.archunit.thirdparty.com.google.common.base.Suppliers;
|
||||
*/
|
||||
@Slf4j
|
||||
@EqualsAndHashCode(of = "key")
|
||||
public class ModuleTestExecution implements Iterable<Module> {
|
||||
public class ModuleTestExecution implements Iterable<ApplicationModule> {
|
||||
|
||||
private static Map<Class<?>, Class<?>> MODULITH_TYPES = new HashMap<>();
|
||||
private static Map<Key, ModuleTestExecution> EXECUTIONS = new HashMap<>();
|
||||
@@ -54,14 +54,14 @@ public class ModuleTestExecution implements Iterable<Module> {
|
||||
private final Key key;
|
||||
|
||||
private final @Getter BootstrapMode bootstrapMode;
|
||||
private final @Getter Module module;
|
||||
private final @Getter Modules modules;
|
||||
private final @Getter List<Module> extraIncludes;
|
||||
private final @Getter ApplicationModule module;
|
||||
private final @Getter ApplicationModules modules;
|
||||
private final @Getter List<ApplicationModule> extraIncludes;
|
||||
|
||||
private final Supplier<List<JavaPackage>> basePackages;
|
||||
private final Supplier<List<Module>> dependencies;
|
||||
private final Supplier<List<ApplicationModule>> dependencies;
|
||||
|
||||
private ModuleTestExecution(ModuleTest annotation, Modules modules, Module module) {
|
||||
private ModuleTestExecution(ApplicationModuleTest annotation, ApplicationModules modules, ApplicationModule module) {
|
||||
|
||||
this.key = Key.of(module.getBasePackage().getName(), annotation);
|
||||
this.modules = modules;
|
||||
@@ -74,7 +74,7 @@ public class ModuleTestExecution implements Iterable<Module> {
|
||||
|
||||
Stream<JavaPackage> moduleBasePackages = module.getBasePackages(modules, bootstrapMode.getDepth());
|
||||
Stream<JavaPackage> sharedBasePackages = modules.getSharedModules().stream().map(it -> it.getBasePackage());
|
||||
Stream<JavaPackage> extraPackages = extraIncludes.stream().map(Module::getBasePackage);
|
||||
Stream<JavaPackage> extraPackages = extraIncludes.stream().map(ApplicationModule::getBasePackage);
|
||||
|
||||
Stream<JavaPackage> intermediate = Stream.concat(moduleBasePackages, extraPackages);
|
||||
|
||||
@@ -83,7 +83,7 @@ public class ModuleTestExecution implements Iterable<Module> {
|
||||
|
||||
this.dependencies = Suppliers.memoize(() -> {
|
||||
|
||||
Stream<Module> bootstrapDependencies = module.getBootstrapDependencies(modules, bootstrapMode.getDepth());
|
||||
Stream<ApplicationModule> bootstrapDependencies = module.getBootstrapDependencies(modules, bootstrapMode.getDepth());
|
||||
return Stream.concat(bootstrapDependencies, extraIncludes.stream()).collect(Collectors.toList());
|
||||
});
|
||||
|
||||
@@ -96,13 +96,13 @@ public class ModuleTestExecution implements Iterable<Module> {
|
||||
|
||||
return () -> {
|
||||
|
||||
ModuleTest annotation = AnnotatedElementUtils.findMergedAnnotation(type, ModuleTest.class);
|
||||
ApplicationModuleTest annotation = AnnotatedElementUtils.findMergedAnnotation(type, ApplicationModuleTest.class);
|
||||
String packageName = type.getPackage().getName();
|
||||
|
||||
Class<?> modulithType = MODULITH_TYPES.computeIfAbsent(type,
|
||||
it -> new AnnotatedClassFinder(SpringBootApplication.class).findFromPackage(packageName));
|
||||
Modules modules = Modules.of(modulithType);
|
||||
Module module = modules.getModuleForPackage(packageName) //
|
||||
ApplicationModules modules = ApplicationModules.of(modulithType);
|
||||
ApplicationModule module = modules.getModuleForPackage(packageName) //
|
||||
.orElseThrow(
|
||||
() -> new IllegalStateException(String.format("Package %s is not part of any module!", packageName)));
|
||||
|
||||
@@ -133,11 +133,11 @@ public class ModuleTestExecution implements Iterable<Module> {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all module dependencies, based on the current {@link ModuleTest.BootstrapMode}.
|
||||
* Returns all module dependencies, based on the current {@link ApplicationModuleTest.BootstrapMode}.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public List<Module> getDependencies() {
|
||||
public List<ApplicationModule> getDependencies() {
|
||||
return dependencies.get();
|
||||
}
|
||||
|
||||
@@ -160,11 +160,11 @@ public class ModuleTestExecution implements Iterable<Module> {
|
||||
* @see java.lang.Iterable#iterator()
|
||||
*/
|
||||
@Override
|
||||
public Iterator<Module> iterator() {
|
||||
public Iterator<ApplicationModule> iterator() {
|
||||
return modules.iterator();
|
||||
}
|
||||
|
||||
private static Stream<Module> getExtraModules(ModuleTest annotation, Modules modules) {
|
||||
private static Stream<ApplicationModule> getExtraModules(ApplicationModuleTest annotation, ApplicationModules modules) {
|
||||
|
||||
return Arrays.stream(annotation.extraIncludes()) //
|
||||
.map(modules::getModuleByName) //
|
||||
@@ -176,6 +176,6 @@ public class ModuleTestExecution implements Iterable<Module> {
|
||||
private static class Key {
|
||||
|
||||
String moduleBasePackage;
|
||||
ModuleTest annotation;
|
||||
ApplicationModuleTest annotation;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ package org.springframework.modulith.test;
|
||||
import org.junit.jupiter.api.extension.Extension;
|
||||
|
||||
/**
|
||||
* JUnit 5 {@link Extension} for standalone usage without {@link ModuleTest}.
|
||||
* JUnit 5 {@link Extension} for standalone usage without {@link ApplicationModuleTest}.
|
||||
*
|
||||
* @author Oliver Drotbohm
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user