diff --git a/initializr-docs/src/test/java/io/spring/initializr/doc/generator/project/ProjectGeneratorSetupExampleTests.java b/initializr-docs/src/test/java/io/spring/initializr/doc/generator/project/ProjectGeneratorSetupExampleTests.java index f35a37aa..dfe6d92d 100644 --- a/initializr-docs/src/test/java/io/spring/initializr/doc/generator/project/ProjectGeneratorSetupExampleTests.java +++ b/initializr-docs/src/test/java/io/spring/initializr/doc/generator/project/ProjectGeneratorSetupExampleTests.java @@ -25,7 +25,7 @@ import io.spring.initializr.generator.io.template.MustacheTemplateRenderer; import io.spring.initializr.generator.language.Language; import io.spring.initializr.generator.language.java.JavaLanguage; import io.spring.initializr.generator.project.DefaultProjectAssetGenerator; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.project.ProjectGenerator; import io.spring.initializr.generator.version.Version; import io.spring.initializr.metadata.InitializrMetadata; @@ -62,8 +62,8 @@ class ProjectGeneratorSetupExampleTests { assertThat(helloFile).exists().isRegularFile().hasContent("Test"); } - private ProjectDescription createProjectDescription() { - ProjectDescription description = new ProjectDescription(); + private MutableProjectDescription createProjectDescription() { + MutableProjectDescription description = new MutableProjectDescription(); description.setGroupId("com.example"); description.setArtifactId("demo"); description.setApplicationName("DemoApplication"); diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/BuildProjectGenerationConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/BuildProjectGenerationConfiguration.java index f5ea7eaa..363267d2 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/BuildProjectGenerationConfiguration.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/BuildProjectGenerationConfiguration.java @@ -23,8 +23,8 @@ import io.spring.initializr.generator.buildsystem.DependencyScope; import io.spring.initializr.generator.condition.ConditionalOnPackaging; import io.spring.initializr.generator.condition.ConditionalOnPlatformVersion; import io.spring.initializr.generator.packaging.war.WarPackaging; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationConfiguration; -import io.spring.initializr.generator.project.ResolvedProjectDescription; import io.spring.initializr.generator.spring.build.maven.DefaultMavenBuildCustomizer; import io.spring.initializr.metadata.InitializrMetadata; @@ -72,8 +72,8 @@ public class BuildProjectGenerationConfiguration { } @Bean - public DefaultMavenBuildCustomizer initializrMetadataMavenBuildCustomizer( - ResolvedProjectDescription projectDescription, InitializrMetadata metadata) { + public DefaultMavenBuildCustomizer initializrMetadataMavenBuildCustomizer(ProjectDescription projectDescription, + InitializrMetadata metadata) { return new DefaultMavenBuildCustomizer(projectDescription, metadata); } @@ -85,18 +85,17 @@ public class BuildProjectGenerationConfiguration { @Bean public DependencyManagementBuildCustomizer dependencyManagementBuildCustomizer( - ResolvedProjectDescription projectDescription, InitializrMetadata metadata) { + ProjectDescription projectDescription, InitializrMetadata metadata) { return new DependencyManagementBuildCustomizer(projectDescription, metadata); } @Bean - public SimpleBuildCustomizer projectDescriptionBuildCustomizer(ResolvedProjectDescription projectDescription) { + public SimpleBuildCustomizer projectDescriptionBuildCustomizer(ProjectDescription projectDescription) { return new SimpleBuildCustomizer(projectDescription); } @Bean - public SpringBootVersionRepositoriesBuildCustomizer repositoriesBuilderCustomizer( - ResolvedProjectDescription description) { + public SpringBootVersionRepositoriesBuildCustomizer repositoriesBuilderCustomizer(ProjectDescription description) { return new SpringBootVersionRepositoriesBuildCustomizer(description.getPlatformVersion()); } diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/DependencyManagementBuildCustomizer.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/DependencyManagementBuildCustomizer.java index 97db2dc8..72983d27 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/DependencyManagementBuildCustomizer.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/DependencyManagementBuildCustomizer.java @@ -22,7 +22,7 @@ import java.util.Objects; import java.util.stream.Stream; import io.spring.initializr.generator.buildsystem.Build; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.version.Version; import io.spring.initializr.metadata.BillOfMaterials; import io.spring.initializr.metadata.Dependency; @@ -39,12 +39,11 @@ import org.springframework.core.Ordered; */ public class DependencyManagementBuildCustomizer implements BuildCustomizer { - private final ResolvedProjectDescription projectDescription; + private final ProjectDescription projectDescription; private final InitializrMetadata metadata; - public DependencyManagementBuildCustomizer(ResolvedProjectDescription projectDescription, - InitializrMetadata metadata) { + public DependencyManagementBuildCustomizer(ProjectDescription projectDescription, InitializrMetadata metadata) { this.projectDescription = projectDescription; this.metadata = metadata; } diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/SimpleBuildCustomizer.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/SimpleBuildCustomizer.java index 8098164c..2231ea85 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/SimpleBuildCustomizer.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/SimpleBuildCustomizer.java @@ -17,22 +17,22 @@ package io.spring.initializr.generator.spring.build; import io.spring.initializr.generator.buildsystem.Build; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import org.springframework.core.Ordered; /** * Customize the {@link Build} as early as possible based on the information held in the - * {@link ResolvedProjectDescription}. + * {@link ProjectDescription}. * * @author Andy Wilkinson * @author Stephane Nicoll */ public class SimpleBuildCustomizer implements BuildCustomizer { - private final ResolvedProjectDescription projectDescription; + private final ProjectDescription projectDescription; - public SimpleBuildCustomizer(ResolvedProjectDescription projectDescription) { + public SimpleBuildCustomizer(ProjectDescription projectDescription) { this.projectDescription = projectDescription; } diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/DependencyManagementPluginVersionResolver.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/DependencyManagementPluginVersionResolver.java index 9b557670..30f67319 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/DependencyManagementPluginVersionResolver.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/DependencyManagementPluginVersionResolver.java @@ -16,7 +16,7 @@ package io.spring.initializr.generator.spring.build.gradle; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; /** * Strategy for resolving a dependency management plugin version from a platform version. @@ -33,6 +33,6 @@ public interface DependencyManagementPluginVersionResolver { * @return the corresponding version for the {@code io.spring.dependency-management} * plugin */ - String resolveDependencyManagementPluginVersion(ResolvedProjectDescription description); + String resolveDependencyManagementPluginVersion(ProjectDescription description); } diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfiguration.java index 85514a19..b11f8f00 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfiguration.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfiguration.java @@ -34,8 +34,8 @@ import io.spring.initializr.generator.condition.ConditionalOnPlatformVersion; import io.spring.initializr.generator.io.IndentingWriterFactory; import io.spring.initializr.generator.language.java.JavaLanguage; import io.spring.initializr.generator.packaging.war.WarPackaging; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationConfiguration; -import io.spring.initializr.generator.project.ResolvedProjectDescription; import io.spring.initializr.generator.spring.build.BuildCustomizer; import io.spring.initializr.generator.spring.util.LambdaSafe; import io.spring.initializr.metadata.InitializrMetadata; @@ -78,7 +78,7 @@ public class GradleProjectGenerationConfiguration { } @Bean - public BuildCustomizer defaultGradleBuildCustomizer(ResolvedProjectDescription projectDescription) { + public BuildCustomizer defaultGradleBuildCustomizer(ProjectDescription projectDescription) { return (build) -> build.setSourceCompatibility(projectDescription.getLanguage().jvmVersion()); } @@ -101,7 +101,7 @@ public class GradleProjectGenerationConfiguration { @Bean @ConditionalOnPlatformVersion("2.0.0.M1") - BuildCustomizer springBootPluginContributor(ResolvedProjectDescription projectDescription, + BuildCustomizer springBootPluginContributor(ProjectDescription projectDescription, ObjectProvider versionResolver, InitializrMetadata metadata) { return new SpringBootPluginBuildCustomizer(projectDescription, versionResolver .getIfAvailable(() -> new InitializrDependencyManagementPluginVersionResolver(metadata))); @@ -145,7 +145,7 @@ public class GradleProjectGenerationConfiguration { } @Bean - BuildCustomizer springBootPluginContributor(ResolvedProjectDescription projectDescription) { + BuildCustomizer springBootPluginContributor(ProjectDescription projectDescription) { return (build) -> { build.buildscript( (buildscript) -> buildscript.dependency("org.springframework.boot:spring-boot-gradle-plugin:" @@ -206,7 +206,7 @@ public class GradleProjectGenerationConfiguration { } @Bean - BuildCustomizer springBootPluginContributor(ResolvedProjectDescription projectDescription) { + BuildCustomizer springBootPluginContributor(ProjectDescription projectDescription) { return (build) -> build.plugins().add("org.springframework.boot", (plugin) -> plugin.setVersion(projectDescription.getPlatformVersion().toString())); } diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/InitializrDependencyManagementPluginVersionResolver.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/InitializrDependencyManagementPluginVersionResolver.java index e283b05d..479070c8 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/InitializrDependencyManagementPluginVersionResolver.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/InitializrDependencyManagementPluginVersionResolver.java @@ -16,7 +16,7 @@ package io.spring.initializr.generator.spring.build.gradle; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.metadata.InitializrMetadata; /** @@ -34,7 +34,7 @@ public class InitializrDependencyManagementPluginVersionResolver implements Depe } @Override - public String resolveDependencyManagementPluginVersion(ResolvedProjectDescription description) { + public String resolveDependencyManagementPluginVersion(ProjectDescription description) { return this.metadata.getConfiguration().getEnv().getGradle().getDependencyManagementPluginVersion(); } diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/OnGradleVersionCondition.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/OnGradleVersionCondition.java index d5fea53f..b9485471 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/OnGradleVersionCondition.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/OnGradleVersionCondition.java @@ -19,7 +19,7 @@ package io.spring.initializr.generator.spring.build.gradle; import java.util.Arrays; import io.spring.initializr.generator.condition.ProjectGenerationCondition; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.version.Version; import io.spring.initializr.generator.version.VersionParser; import io.spring.initializr.generator.version.VersionRange; @@ -43,7 +43,7 @@ public class OnGradleVersionCondition extends ProjectGenerationCondition { private static final VersionRange GRADLE_5_VERSION_RANGE = VersionParser.DEFAULT.parseRange("2.1.0.M1"); @Override - protected boolean matches(ResolvedProjectDescription projectDescription, ConditionContext context, + protected boolean matches(ProjectDescription projectDescription, ConditionContext context, AnnotatedTypeMetadata metadata) { String gradleGeneration = determineGradleGeneration(projectDescription.getPlatformVersion()); if (gradleGeneration == null) { diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/SpringBootPluginBuildCustomizer.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/SpringBootPluginBuildCustomizer.java index c6b86f7f..17375f67 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/SpringBootPluginBuildCustomizer.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/SpringBootPluginBuildCustomizer.java @@ -17,7 +17,7 @@ package io.spring.initializr.generator.spring.build.gradle; import io.spring.initializr.generator.buildsystem.gradle.GradleBuild; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.spring.build.BuildCustomizer; /** @@ -34,11 +34,11 @@ public final class SpringBootPluginBuildCustomizer implements BuildCustomizer { - private final ResolvedProjectDescription projectDescription; + private final ProjectDescription projectDescription; private final InitializrMetadata metadata; - public DefaultMavenBuildCustomizer(ResolvedProjectDescription projectDescription, InitializrMetadata metadata) { + public DefaultMavenBuildCustomizer(ProjectDescription projectDescription, InitializrMetadata metadata) { this.projectDescription = projectDescription; this.metadata = metadata; } diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/MainSourceCodeProjectContributor.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/MainSourceCodeProjectContributor.java index 35eff7ef..3f946693 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/MainSourceCodeProjectContributor.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/MainSourceCodeProjectContributor.java @@ -26,7 +26,7 @@ import io.spring.initializr.generator.language.CompilationUnit; import io.spring.initializr.generator.language.SourceCode; import io.spring.initializr.generator.language.SourceCodeWriter; import io.spring.initializr.generator.language.TypeDeclaration; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.contributor.ProjectContributor; import io.spring.initializr.generator.spring.util.LambdaSafe; @@ -44,7 +44,7 @@ import org.springframework.beans.factory.ObjectProvider; public class MainSourceCodeProjectContributor, S extends SourceCode> implements ProjectContributor { - private final ResolvedProjectDescription projectDescription; + private final ProjectDescription projectDescription; private final Supplier sourceFactory; @@ -56,7 +56,7 @@ public class MainSourceCodeProjectContributor> mainSourceCodeCustomizers; - public MainSourceCodeProjectContributor(ResolvedProjectDescription projectDescription, Supplier sourceFactory, + public MainSourceCodeProjectContributor(ProjectDescription projectDescription, Supplier sourceFactory, SourceCodeWriter sourceWriter, ObjectProvider> mainTypeCustomizers, ObjectProvider> mainCompilationUnitCustomizers, ObjectProvider> mainSourceCodeCustomizers) { diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/SourceCodeProjectGenerationConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/SourceCodeProjectGenerationConfiguration.java index dd7351a0..ef626342 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/SourceCodeProjectGenerationConfiguration.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/SourceCodeProjectGenerationConfiguration.java @@ -21,8 +21,8 @@ import io.spring.initializr.generator.condition.ConditionalOnPlatformVersion; import io.spring.initializr.generator.language.Annotation; import io.spring.initializr.generator.language.TypeDeclaration; import io.spring.initializr.generator.packaging.war.WarPackaging; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationConfiguration; -import io.spring.initializr.generator.project.ResolvedProjectDescription; import org.springframework.beans.factory.ObjectProvider; import org.springframework.context.annotation.Bean; @@ -66,9 +66,9 @@ public class SourceCodeProjectGenerationConfiguration { @ConditionalOnPackaging(WarPackaging.ID) static class WarPackagingConfiguration { - private final ResolvedProjectDescription projectDescription; + private final ProjectDescription projectDescription; - WarPackagingConfiguration(ResolvedProjectDescription projectDescription) { + WarPackagingConfiguration(ProjectDescription projectDescription) { this.projectDescription = projectDescription; } diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/TestSourceCodeProjectContributor.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/TestSourceCodeProjectContributor.java index ed4f6c16..fee21a1d 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/TestSourceCodeProjectContributor.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/TestSourceCodeProjectContributor.java @@ -26,7 +26,7 @@ import io.spring.initializr.generator.language.CompilationUnit; import io.spring.initializr.generator.language.SourceCode; import io.spring.initializr.generator.language.SourceCodeWriter; import io.spring.initializr.generator.language.TypeDeclaration; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.contributor.ProjectContributor; import io.spring.initializr.generator.spring.util.LambdaSafe; @@ -43,7 +43,7 @@ import org.springframework.beans.factory.ObjectProvider; public class TestSourceCodeProjectContributor, S extends SourceCode> implements ProjectContributor { - private final ResolvedProjectDescription projectDescription; + private final ProjectDescription projectDescription; private final Supplier sourceFactory; @@ -53,7 +53,7 @@ public class TestSourceCodeProjectContributor> testSourceCodeCustomizers; - public TestSourceCodeProjectContributor(ResolvedProjectDescription projectDescription, Supplier sourceFactory, + public TestSourceCodeProjectContributor(ProjectDescription projectDescription, Supplier sourceFactory, SourceCodeWriter sourceWriter, ObjectProvider> testApplicationTypeCustomizers, ObjectProvider> testSourceCodeCustomizers) { diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationConfiguration.java index 3ccafdee..8e011eea 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationConfiguration.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationConfiguration.java @@ -23,8 +23,8 @@ import io.spring.initializr.generator.language.groovy.GroovyLanguage; import io.spring.initializr.generator.language.groovy.GroovySourceCode; import io.spring.initializr.generator.language.groovy.GroovySourceCodeWriter; import io.spring.initializr.generator.language.groovy.GroovyTypeDeclaration; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationConfiguration; -import io.spring.initializr.generator.project.ResolvedProjectDescription; import io.spring.initializr.generator.spring.code.MainApplicationTypeCustomizer; import io.spring.initializr.generator.spring.code.MainCompilationUnitCustomizer; import io.spring.initializr.generator.spring.code.MainSourceCodeCustomizer; @@ -48,11 +48,11 @@ import org.springframework.context.annotation.Import; @Import(GroovyProjectGenerationDefaultContributorsConfiguration.class) public class GroovyProjectGenerationConfiguration { - private final ResolvedProjectDescription projectDescription; + private final ProjectDescription projectDescription; private final IndentingWriterFactory indentingWriterFactory; - public GroovyProjectGenerationConfiguration(ResolvedProjectDescription projectDescription, + public GroovyProjectGenerationConfiguration(ProjectDescription projectDescription, IndentingWriterFactory indentingWriterFactory) { this.projectDescription = projectDescription; this.indentingWriterFactory = indentingWriterFactory; diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationDefaultContributorsConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationDefaultContributorsConfiguration.java index 55e0ad02..3001dbba 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationDefaultContributorsConfiguration.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationDefaultContributorsConfiguration.java @@ -32,7 +32,7 @@ import io.spring.initializr.generator.language.groovy.GroovyMethodInvocation; import io.spring.initializr.generator.language.groovy.GroovyReturnStatement; import io.spring.initializr.generator.language.groovy.GroovyTypeDeclaration; import io.spring.initializr.generator.packaging.war.WarPackaging; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.spring.build.BuildCustomizer; import io.spring.initializr.generator.spring.code.MainApplicationTypeCustomizer; import io.spring.initializr.generator.spring.code.ServletInitializerCustomizer; @@ -95,7 +95,7 @@ class GroovyProjectGenerationDefaultContributorsConfiguration { @Bean ServletInitializerCustomizer javaServletInitializerCustomizer( - ResolvedProjectDescription projectDescription) { + ProjectDescription projectDescription) { return (typeDeclaration) -> { GroovyMethodDeclaration configure = GroovyMethodDeclaration.method("configure") .modifiers(Modifier.PROTECTED) diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/java/JavaProjectGenerationConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/java/JavaProjectGenerationConfiguration.java index 315fb799..a9d3cc0f 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/java/JavaProjectGenerationConfiguration.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/java/JavaProjectGenerationConfiguration.java @@ -23,8 +23,8 @@ import io.spring.initializr.generator.language.java.JavaLanguage; import io.spring.initializr.generator.language.java.JavaSourceCode; import io.spring.initializr.generator.language.java.JavaSourceCodeWriter; import io.spring.initializr.generator.language.java.JavaTypeDeclaration; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationConfiguration; -import io.spring.initializr.generator.project.ResolvedProjectDescription; import io.spring.initializr.generator.spring.code.MainApplicationTypeCustomizer; import io.spring.initializr.generator.spring.code.MainCompilationUnitCustomizer; import io.spring.initializr.generator.spring.code.MainSourceCodeCustomizer; @@ -48,11 +48,11 @@ import org.springframework.context.annotation.Import; @Import(JavaProjectGenerationDefaultContributorsConfiguration.class) public class JavaProjectGenerationConfiguration { - private final ResolvedProjectDescription projectDescription; + private final ProjectDescription projectDescription; private final IndentingWriterFactory indentingWriterFactory; - public JavaProjectGenerationConfiguration(ResolvedProjectDescription projectDescription, + public JavaProjectGenerationConfiguration(ProjectDescription projectDescription, IndentingWriterFactory indentingWriterFactory) { this.projectDescription = projectDescription; this.indentingWriterFactory = indentingWriterFactory; diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/java/JavaProjectGenerationDefaultContributorsConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/java/JavaProjectGenerationDefaultContributorsConfiguration.java index 44f8a094..287bc41d 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/java/JavaProjectGenerationDefaultContributorsConfiguration.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/java/JavaProjectGenerationDefaultContributorsConfiguration.java @@ -28,7 +28,7 @@ import io.spring.initializr.generator.language.java.JavaMethodInvocation; import io.spring.initializr.generator.language.java.JavaReturnStatement; import io.spring.initializr.generator.language.java.JavaTypeDeclaration; import io.spring.initializr.generator.packaging.war.WarPackaging; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.spring.code.MainApplicationTypeCustomizer; import io.spring.initializr.generator.spring.code.ServletInitializerCustomizer; import io.spring.initializr.generator.spring.code.TestApplicationTypeCustomizer; @@ -89,7 +89,7 @@ class JavaProjectGenerationDefaultContributorsConfiguration { @Bean ServletInitializerCustomizer javaServletInitializerCustomizer( - ResolvedProjectDescription projectDescription) { + ProjectDescription projectDescription) { return (typeDeclaration) -> { typeDeclaration.modifiers(Modifier.PUBLIC); JavaMethodDeclaration configure = JavaMethodDeclaration.method("configure") diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/InitializrMetadataKotlinVersionResolver.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/InitializrMetadataKotlinVersionResolver.java index e6b7b371..8baa1436 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/InitializrMetadataKotlinVersionResolver.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/InitializrMetadataKotlinVersionResolver.java @@ -16,7 +16,7 @@ package io.spring.initializr.generator.spring.code.kotlin; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.metadata.InitializrMetadata; /** @@ -34,7 +34,7 @@ public class InitializrMetadataKotlinVersionResolver implements KotlinVersionRes } @Override - public String resolveKotlinVersion(ResolvedProjectDescription description) { + public String resolveKotlinVersion(ProjectDescription description) { return this.metadata.getConfiguration().getEnv().getKotlin() .resolveKotlinVersion(description.getPlatformVersion()); } diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinJacksonBuildCustomizer.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinJacksonBuildCustomizer.java index e443aab1..fc8aa1ee 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinJacksonBuildCustomizer.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinJacksonBuildCustomizer.java @@ -19,7 +19,7 @@ package io.spring.initializr.generator.spring.code.kotlin; import io.spring.initializr.generator.buildsystem.Build; import io.spring.initializr.generator.buildsystem.DependencyScope; import io.spring.initializr.generator.language.kotlin.KotlinLanguage; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.spring.build.BuildCustomizer; import io.spring.initializr.generator.spring.build.BuildMetadataResolver; import io.spring.initializr.metadata.InitializrMetadata; @@ -37,9 +37,9 @@ public class KotlinJacksonBuildCustomizer implements BuildCustomizer { private final BuildMetadataResolver buildMetadataResolver; - private final ResolvedProjectDescription description; + private final ProjectDescription description; - public KotlinJacksonBuildCustomizer(InitializrMetadata metadata, ResolvedProjectDescription description) { + public KotlinJacksonBuildCustomizer(InitializrMetadata metadata, ProjectDescription description) { this.buildMetadataResolver = new BuildMetadataResolver(metadata); this.description = description; } diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationConfiguration.java index dbb92ab8..62f68952 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationConfiguration.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationConfiguration.java @@ -23,8 +23,8 @@ import io.spring.initializr.generator.language.kotlin.KotlinLanguage; import io.spring.initializr.generator.language.kotlin.KotlinSourceCode; import io.spring.initializr.generator.language.kotlin.KotlinSourceCodeWriter; import io.spring.initializr.generator.language.kotlin.KotlinTypeDeclaration; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationConfiguration; -import io.spring.initializr.generator.project.ResolvedProjectDescription; import io.spring.initializr.generator.spring.code.MainApplicationTypeCustomizer; import io.spring.initializr.generator.spring.code.MainCompilationUnitCustomizer; import io.spring.initializr.generator.spring.code.MainSourceCodeCustomizer; @@ -50,11 +50,11 @@ import org.springframework.context.annotation.Import; @Import(KotlinProjectGenerationDefaultContributorsConfiguration.class) public class KotlinProjectGenerationConfiguration { - private final ResolvedProjectDescription projectDescription; + private final ProjectDescription projectDescription; private final IndentingWriterFactory indentingWriterFactory; - public KotlinProjectGenerationConfiguration(ResolvedProjectDescription projectDescription, + public KotlinProjectGenerationConfiguration(ProjectDescription projectDescription, IndentingWriterFactory indentingWriterFactory) { this.projectDescription = projectDescription; this.indentingWriterFactory = indentingWriterFactory; diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationDefaultContributorsConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationDefaultContributorsConfiguration.java index 2992e8f8..e7fbd519 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationDefaultContributorsConfiguration.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationDefaultContributorsConfiguration.java @@ -33,7 +33,7 @@ import io.spring.initializr.generator.language.kotlin.KotlinReifiedFunctionInvoc import io.spring.initializr.generator.language.kotlin.KotlinReturnStatement; import io.spring.initializr.generator.language.kotlin.KotlinTypeDeclaration; import io.spring.initializr.generator.packaging.war.WarPackaging; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.spring.build.BuildCustomizer; import io.spring.initializr.generator.spring.code.MainCompilationUnitCustomizer; import io.spring.initializr.generator.spring.code.ServletInitializerCustomizer; @@ -74,7 +74,7 @@ class KotlinProjectGenerationDefaultContributorsConfiguration { } @Bean - BuildCustomizer kotlinDependenciesConfigurer(ResolvedProjectDescription projectDescription) { + BuildCustomizer kotlinDependenciesConfigurer(ProjectDescription projectDescription) { return new KotlinDependenciesConfigurer(projectDescription.getPlatformVersion()); } @@ -106,7 +106,7 @@ class KotlinProjectGenerationDefaultContributorsConfiguration { @Bean MainCompilationUnitCustomizer boot15MainFunctionContributor( - ResolvedProjectDescription projectDescription) { + ProjectDescription projectDescription) { return (compilationUnit) -> compilationUnit.addTopLevelFunction( KotlinFunctionDeclaration.function("main").parameters(new Parameter("Array", "args")) .body(new KotlinExpressionStatement( @@ -131,7 +131,7 @@ class KotlinProjectGenerationDefaultContributorsConfiguration { @Bean MainCompilationUnitCustomizer mainFunctionContributor( - ResolvedProjectDescription projectDescription) { + ProjectDescription projectDescription) { return (compilationUnit) -> compilationUnit.addTopLevelFunction( KotlinFunctionDeclaration.function("main").parameters(new Parameter("Array", "args")) .body(new KotlinExpressionStatement( @@ -150,7 +150,7 @@ class KotlinProjectGenerationDefaultContributorsConfiguration { @Bean ServletInitializerCustomizer javaServletInitializerCustomizer( - ResolvedProjectDescription projectDescription) { + ProjectDescription projectDescription) { return (typeDeclaration) -> { KotlinFunctionDeclaration configure = KotlinFunctionDeclaration.function("configure") .modifiers(KotlinModifier.OVERRIDE) diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinVersionResolver.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinVersionResolver.java index d3e8e4d0..ff504189 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinVersionResolver.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinVersionResolver.java @@ -16,7 +16,7 @@ package io.spring.initializr.generator.spring.code.kotlin; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; /** * Strategy for resolving a Kotlin version from a platform version. @@ -32,6 +32,6 @@ public interface KotlinVersionResolver { * @param description the description of the project being generated * @return the corresponding Kotlin version */ - String resolveKotlinVersion(ResolvedProjectDescription description); + String resolveKotlinVersion(ProjectDescription description); } diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/documentation/HelpDocumentProjectGenerationDefaultContributorsConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/documentation/HelpDocumentProjectGenerationDefaultContributorsConfiguration.java index 0b38f030..af8acbcb 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/documentation/HelpDocumentProjectGenerationDefaultContributorsConfiguration.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/documentation/HelpDocumentProjectGenerationDefaultContributorsConfiguration.java @@ -16,7 +16,7 @@ package io.spring.initializr.generator.spring.documentation; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.spring.scm.git.GitIgnoreCustomizer; import io.spring.initializr.metadata.InitializrMetadata; @@ -33,7 +33,7 @@ public class HelpDocumentProjectGenerationDefaultContributorsConfiguration { @Bean public RequestedDependenciesHelpDocumentCustomizer dependenciesHelpDocumentCustomizer( - ResolvedProjectDescription description, InitializrMetadata metadata) { + ProjectDescription description, InitializrMetadata metadata) { return new RequestedDependenciesHelpDocumentCustomizer(description, metadata); } diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/documentation/RequestedDependenciesHelpDocumentCustomizer.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/documentation/RequestedDependenciesHelpDocumentCustomizer.java index 2581193e..396a774d 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/documentation/RequestedDependenciesHelpDocumentCustomizer.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/documentation/RequestedDependenciesHelpDocumentCustomizer.java @@ -21,7 +21,7 @@ import java.util.function.Function; import java.util.function.Supplier; import io.spring.initializr.generator.io.text.BulletedSection; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.metadata.Dependency; import io.spring.initializr.metadata.InitializrMetadata; import io.spring.initializr.metadata.Link; @@ -38,11 +38,11 @@ import org.springframework.util.ObjectUtils; */ public class RequestedDependenciesHelpDocumentCustomizer implements HelpDocumentCustomizer { - private final ResolvedProjectDescription projectDescription; + private final ProjectDescription projectDescription; private final InitializrMetadata metadata; - public RequestedDependenciesHelpDocumentCustomizer(ResolvedProjectDescription projectDescription, + public RequestedDependenciesHelpDocumentCustomizer(ProjectDescription projectDescription, InitializrMetadata metadata) { this.projectDescription = projectDescription; this.metadata = metadata; diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/AbstractComplianceTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/AbstractComplianceTests.java index d9b569f9..2a67203c 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/AbstractComplianceTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/AbstractComplianceTests.java @@ -24,9 +24,9 @@ import io.spring.initializr.generator.buildsystem.BuildSystem; import io.spring.initializr.generator.io.IndentingWriterFactory; import io.spring.initializr.generator.io.SimpleIndentStrategy; import io.spring.initializr.generator.language.Language; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationContext; -import io.spring.initializr.generator.project.ResolvedProjectDescription; import io.spring.initializr.generator.test.InitializrMetadataTestBuilder; import io.spring.initializr.generator.test.project.ProjectGeneratorTester; import io.spring.initializr.generator.test.project.ProjectStructure; @@ -60,21 +60,22 @@ public abstract class AbstractComplianceTests { } protected ProjectStructure generateProject(Language language, BuildSystem buildSystem, String version, - Consumer descriptionCustomizer) { + Consumer descriptionCustomizer) { InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults().addDependencyGroup("web", WEB) .build(); return generateProject(language, buildSystem, version, descriptionCustomizer, metadata); } protected ProjectStructure generateProject(Language language, BuildSystem buildSystem, String version, - Consumer descriptionCustomizer, Consumer contextCustomizer) { + Consumer descriptionCustomizer, + Consumer contextCustomizer) { InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults().addDependencyGroup("web", WEB) .build(); return generateProject(language, buildSystem, version, descriptionCustomizer, metadata, contextCustomizer); } protected ProjectStructure generateProject(Language language, BuildSystem buildSystem, String version, - Consumer descriptionCustomizer, InitializrMetadata metadata) { + Consumer descriptionCustomizer, InitializrMetadata metadata) { return generateProject(language, buildSystem, version, descriptionCustomizer, metadata, (projectGenerationContext) -> { }); @@ -82,7 +83,7 @@ public abstract class AbstractComplianceTests { } private ProjectStructure generateProject(Language language, BuildSystem buildSystem, String version, - Consumer descriptionCustomizer, InitializrMetadata metadata, + Consumer descriptionCustomizer, InitializrMetadata metadata, Consumer contextCustomizer) { ProjectGeneratorTester projectTester = new ProjectGeneratorTester().withDirectory(this.tempDir) .withDescriptionCustomizer( @@ -90,19 +91,19 @@ public abstract class AbstractComplianceTests { .withDescriptionCustomizer(descriptionCustomizer) .withContextInitializer((context) -> setupProjectGenerationContext(metadata, context)) .withContextInitializer(contextCustomizer); - return projectTester.generate(new ProjectDescription()); + return projectTester.generate(new MutableProjectDescription()); } private void setupProjectGenerationContext(InitializrMetadata metadata, ProjectGenerationContext context) { context.registerBean(InitializrMetadata.class, () -> metadata); context.registerBean(BuildItemResolver.class, () -> new MetadataBuildItemResolver(metadata, - context.getBean(ResolvedProjectDescription.class).getPlatformVersion())); + context.getBean(ProjectDescription.class).getPlatformVersion())); context.registerBean(IndentingWriterFactory.class, () -> IndentingWriterFactory.create(new SimpleIndentStrategy("\t"))); } private void setupProjectDescription(Language language, String version, BuildSystem buildSystem, - ProjectDescription description) { + MutableProjectDescription description) { description.setLanguage(language); description.setBuildSystem(buildSystem); description.setPlatformVersion(Version.parse(version)); diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/ProjectGeneratorIntegrationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/ProjectGeneratorIntegrationTests.java index 523358b3..7480b2f4 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/ProjectGeneratorIntegrationTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/ProjectGeneratorIntegrationTests.java @@ -20,7 +20,7 @@ import java.nio.file.Path; import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem; import io.spring.initializr.generator.language.java.JavaLanguage; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationConfiguration; import io.spring.initializr.generator.project.ProjectGenerator; import io.spring.initializr.generator.test.InitializrMetadataTestBuilder; @@ -52,7 +52,7 @@ class ProjectGeneratorIntegrationTests { @Test void customBaseDirectoryIsUsedWhenGeneratingProject() { - ProjectDescription description = initProjectDescription(); + MutableProjectDescription description = initProjectDescription(); description.setBuildSystem(new MavenBuildSystem()); description.setPlatformVersion(Version.parse("2.1.0.RELEASE")); description.setLanguage(new JavaLanguage()); @@ -68,8 +68,8 @@ class ProjectGeneratorIntegrationTests { "test/demo-app/src/test/java/com/example/demo/DemoApplicationTests.java"); } - private ProjectDescription initProjectDescription() { - ProjectDescription description = new ProjectDescription(); + private MutableProjectDescription initProjectDescription() { + MutableProjectDescription description = new MutableProjectDescription(); description.setApplicationName("DemoApplication"); return description; } diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/DependencyManagementBuildCustomizerTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/DependencyManagementBuildCustomizerTests.java index 5624044d..e0ca862f 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/DependencyManagementBuildCustomizerTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/DependencyManagementBuildCustomizerTests.java @@ -18,7 +18,7 @@ package io.spring.initializr.generator.spring.build; import io.spring.initializr.generator.buildsystem.Build; import io.spring.initializr.generator.buildsystem.maven.MavenBuild; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.test.InitializrMetadataTestBuilder; import io.spring.initializr.generator.version.Version; import io.spring.initializr.metadata.BillOfMaterials; @@ -74,9 +74,9 @@ class DependencyManagementBuildCustomizerTests { } private void customizeBuild(Build build, InitializrMetadata metadata) { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPlatformVersion(Version.parse("2.0.0.RELEASE")); - new DependencyManagementBuildCustomizer(projectDescription.resolve(), metadata).customize(build); + new DependencyManagementBuildCustomizer(projectDescription, metadata).customize(build); } } diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/SimpleBuildCustomizerTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/SimpleBuildCustomizerTests.java index 1c6b8fb6..84d20bea 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/SimpleBuildCustomizerTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/SimpleBuildCustomizerTests.java @@ -20,8 +20,7 @@ import io.spring.initializr.generator.buildsystem.Dependency; import io.spring.initializr.generator.buildsystem.DependencyScope; import io.spring.initializr.generator.buildsystem.maven.MavenBuild; import io.spring.initializr.generator.language.java.JavaLanguage; -import io.spring.initializr.generator.project.ProjectDescription; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.version.Version; import org.junit.jupiter.api.Test; @@ -37,7 +36,7 @@ class SimpleBuildCustomizerTests { @Test void customizeProjectCoordinates() { - ProjectDescription description = initializeDescription(); + MutableProjectDescription description = initializeDescription(); description.setGroupId("com.example.acme"); description.setArtifactId("my-test-project"); MavenBuild build = customizeBuild(description); @@ -47,7 +46,7 @@ class SimpleBuildCustomizerTests { @Test void customizeVersion() { - ProjectDescription description = initializeDescription(); + MutableProjectDescription description = initializeDescription(); description.setVersion("1.5.6.RELEASE"); MavenBuild build = customizeBuild(description); assertThat(build.getVersion()).isEqualTo("1.5.6.RELEASE"); @@ -55,7 +54,7 @@ class SimpleBuildCustomizerTests { @Test void customizeWithNoDependency() { - ProjectDescription description = initializeDescription(); + MutableProjectDescription description = initializeDescription(); MavenBuild build = customizeBuild(description); assertThat(build.dependencies().ids()).isEmpty(); assertThat(build.dependencies().items()).isEmpty(); @@ -63,7 +62,7 @@ class SimpleBuildCustomizerTests { @Test void customizeDependencies() { - ProjectDescription description = initializeDescription(); + MutableProjectDescription description = initializeDescription(); Dependency one = Dependency.withCoordinates("com.example", "one").scope(DependencyScope.COMPILE).build(); Dependency two = Dependency.withCoordinates("com.example.acme", "two").scope(DependencyScope.COMPILE).build(); description.addDependency("two", two); @@ -73,17 +72,16 @@ class SimpleBuildCustomizerTests { assertThat(build.dependencies().items()).containsExactly(two, one); } - private ProjectDescription initializeDescription() { - ProjectDescription description = new ProjectDescription(); + private MutableProjectDescription initializeDescription() { + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.0.0")); description.setLanguage(new JavaLanguage()); return description; } - private MavenBuild customizeBuild(ProjectDescription description) { + private MavenBuild customizeBuild(MutableProjectDescription description) { MavenBuild build = new MavenBuild(); - ResolvedProjectDescription resolvedProjectDescription = new ResolvedProjectDescription(description); - SimpleBuildCustomizer customizer = new SimpleBuildCustomizer(resolvedProjectDescription); + SimpleBuildCustomizer customizer = new SimpleBuildCustomizer(description); customizer.customize(build); return build; } diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/ConditionalOnGradleVersionTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/ConditionalOnGradleVersionTests.java index d726f1d5..12122500 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/ConditionalOnGradleVersionTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/ConditionalOnGradleVersionTests.java @@ -18,7 +18,7 @@ package io.spring.initializr.generator.spring.build.gradle; import java.util.Map; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.test.project.ProjectAssetTester; import io.spring.initializr.generator.version.Version; import org.junit.jupiter.api.Test; @@ -40,7 +40,7 @@ public class ConditionalOnGradleVersionTests { @Test void outcomeWithSpringBoot15() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPlatformVersion(Version.parse("1.5.18.RELEASE")); String bean = outcomeFor(projectDescription); assertThat(bean).isEqualTo("testGradle3"); @@ -48,7 +48,7 @@ public class ConditionalOnGradleVersionTests { @Test void outcomeWithSpringBoot20() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPlatformVersion(Version.parse("2.0.9.RELEASE")); String bean = outcomeFor(projectDescription); assertThat(bean).isEqualTo("testGradle4"); @@ -56,7 +56,7 @@ public class ConditionalOnGradleVersionTests { @Test void outcomeWithSpringBoot21() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPlatformVersion(Version.parse("2.1.3.RELEASE")); String bean = outcomeFor(projectDescription); assertThat(bean).isEqualTo("testGradle5"); @@ -64,7 +64,7 @@ public class ConditionalOnGradleVersionTests { @Test void outcomeWithNoMatch() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPlatformVersion(Version.parse("1.0.0.RELEASE")); this.projectTester.generate(projectDescription, (projectGenerationContext) -> { assertThat(projectGenerationContext.getBeansOfType(String.class)).isEmpty(); @@ -74,7 +74,7 @@ public class ConditionalOnGradleVersionTests { @Test void outcomeWithNoAvailableSpringBootVersion() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); this.projectTester.generate(projectDescription, (projectGenerationContext) -> { assertThat(projectGenerationContext.getBeansOfType(String.class)).isEmpty(); return null; @@ -83,7 +83,7 @@ public class ConditionalOnGradleVersionTests { @Test void outcomeWithSpringBoot15AndMultipleGenerations() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPlatformVersion(Version.parse("1.5.18.RELEASE")); Map candidates = candidatesFor(projectDescription, Gradle3Or4TestConfiguration.class); assertThat(candidates).containsOnlyKeys("gradle3", "gradle3AndLater"); @@ -91,7 +91,7 @@ public class ConditionalOnGradleVersionTests { @Test void outcomeWithSpringBoot20AndMultipleGenerations() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPlatformVersion(Version.parse("2.0.9.RELEASE")); Map candidates = candidatesFor(projectDescription, Gradle3Or4TestConfiguration.class); assertThat(candidates).containsOnlyKeys("gradle4", "gradle3AndLater"); @@ -99,20 +99,21 @@ public class ConditionalOnGradleVersionTests { @Test void outcomeWithSpringBoot21AndMultipleNonMatchingGenerations() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPlatformVersion(Version.parse("2.1.3.RELEASE")); Map candidates = candidatesFor(projectDescription, Gradle3Or4TestConfiguration.class); assertThat(candidates).containsOnlyKeys("gradle5"); } - private String outcomeFor(ProjectDescription projectDescription) { + private String outcomeFor(MutableProjectDescription projectDescription) { return this.projectTester.generate(projectDescription, (projectGenerationContext) -> { assertThat(projectGenerationContext.getBeansOfType(String.class)).hasSize(1); return projectGenerationContext.getBean(String.class); }); } - private Map candidatesFor(ProjectDescription projectDescription, Class... extraConfigurations) { + private Map candidatesFor(MutableProjectDescription projectDescription, + Class... extraConfigurations) { return this.projectTester.withConfiguration(extraConfigurations).generate(projectDescription, (context) -> context.getBeansOfType(String.class)); } diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java index c3a807f5..810304ec 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java @@ -26,7 +26,7 @@ import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem; import io.spring.initializr.generator.buildsystem.gradle.KotlinDslGradleBuildWriter; import io.spring.initializr.generator.language.java.JavaLanguage; import io.spring.initializr.generator.packaging.war.WarPackaging; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.spring.build.BuildProjectGenerationConfiguration; import io.spring.initializr.generator.test.InitializrMetadataTestBuilder; import io.spring.initializr.generator.test.project.ProjectAssetTester; @@ -73,7 +73,7 @@ class GradleKtsProjectGenerationConfigurationTests { @ParameterizedTest(name = "Spring Boot {0}") @MethodSource("supportedPlatformVersions") void buildWriterIsContributed(String platformVersion) { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse(platformVersion)); description.setLanguage(new JavaLanguage()); BuildWriter buildWriter = this.projectTester.generate(description, @@ -91,7 +91,7 @@ class GradleKtsProjectGenerationConfigurationTests { @MethodSource("gradleWrapperParameters") void gradleWrapperIsContributedWhenGeneratingGradleKtsProject(String platformVersion, String expectedGradleVersion) { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse(platformVersion)); description.setLanguage(new JavaLanguage()); ProjectStructure project = this.projectTester.generate(description); @@ -103,7 +103,7 @@ class GradleKtsProjectGenerationConfigurationTests { @Test void buildDotGradleDotKtsIsContributedWhenGeneratingGradleKtsProject() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.0.RELEASE")); description.setLanguage(new JavaLanguage("11")); description.addDependency("acme", @@ -121,7 +121,7 @@ class GradleKtsProjectGenerationConfigurationTests { @Test void dependencyManagementPluginFallbacksToMetadataIfNotPresent() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.0.RELEASE")); description.setLanguage(new JavaLanguage("11")); ProjectStructure project = this.projectTester.generate(description); @@ -131,7 +131,7 @@ class GradleKtsProjectGenerationConfigurationTests { @Test void dependencyManagementPluginVersionResolverIsUsedIfPresent() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.0.RELEASE")); description.setLanguage(new JavaLanguage("11")); ProjectStructure project = this.projectTester @@ -143,7 +143,7 @@ class GradleKtsProjectGenerationConfigurationTests { @Test void warPluginIsAppliedWhenBuildingProjectThatUsesWarPackaging() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.0.RELEASE")); description.setLanguage(new JavaLanguage()); description.setPackaging(new WarPackaging()); @@ -153,7 +153,7 @@ class GradleKtsProjectGenerationConfigurationTests { @Test void junitPlatformIsConfiguredWithCompatibleVersion() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.2.4.RELEASE")); description.setLanguage(new JavaLanguage()); ProjectStructure project = this.projectTester.generate(description); @@ -163,7 +163,7 @@ class GradleKtsProjectGenerationConfigurationTests { @Test void junitPlatformIsNotConfiguredWithIncompatibleVersion() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.4.RELEASE")); description.setLanguage(new JavaLanguage()); ProjectStructure project = this.projectTester.generate(description); diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java index f8fe31f3..357100cb 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java @@ -27,7 +27,7 @@ import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem; import io.spring.initializr.generator.buildsystem.gradle.GroovyDslGradleBuildWriter; import io.spring.initializr.generator.language.java.JavaLanguage; import io.spring.initializr.generator.packaging.war.WarPackaging; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.spring.build.BuildProjectGenerationConfiguration; import io.spring.initializr.generator.test.InitializrMetadataTestBuilder; import io.spring.initializr.generator.test.project.ProjectAssetTester; @@ -73,7 +73,7 @@ class GradleProjectGenerationConfigurationTests { @ParameterizedTest(name = "Spring Boot {0}") @MethodSource("supportedPlatformVersions") void buildWriterIsContributed(String platformVersion) { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse(platformVersion)); description.setLanguage(new JavaLanguage()); BuildWriter buildWriter = this.projectTester.generate(description, @@ -91,7 +91,7 @@ class GradleProjectGenerationConfigurationTests { @ParameterizedTest(name = "Spring Boot {0}") @MethodSource("gradleWrapperParameters") void gradleWrapperIsContributedWhenGeneratingGradleProject(String platformVersion, String expectedGradleVersion) { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse(platformVersion)); description.setLanguage(new JavaLanguage()); ProjectStructure project = this.projectTester.generate(description); @@ -103,7 +103,7 @@ class GradleProjectGenerationConfigurationTests { @Test void buildDotGradleIsContributedWhenGeneratingGradleProject() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.0.RELEASE")); description.setLanguage(new JavaLanguage("11")); description.addDependency("acme", @@ -121,7 +121,7 @@ class GradleProjectGenerationConfigurationTests { @Test void warPluginIsAppliedWhenBuildingProjectThatUsesWarPackaging() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.0.RELEASE")); description.setLanguage(new JavaLanguage()); description.setPackaging(new WarPackaging()); @@ -131,7 +131,7 @@ class GradleProjectGenerationConfigurationTests { @Test void junitPlatformIsConfiguredWithCompatibleVersion() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.2.4.RELEASE")); description.setLanguage(new JavaLanguage()); ProjectStructure project = this.projectTester.generate(description); @@ -140,7 +140,7 @@ class GradleProjectGenerationConfigurationTests { @Test void junitPlatformIsNotConfiguredWithIncompatibleVersion() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.4.RELEASE")); description.setLanguage(new JavaLanguage()); ProjectStructure project = this.projectTester.generate(description); @@ -151,7 +151,7 @@ class GradleProjectGenerationConfigurationTests { @Test @Deprecated void testStarterExcludesVintageEngineAndJUnitWithAppropriateVersion() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.2.0.M4")); description.setLanguage(new JavaLanguage()); ProjectStructure project = this.projectTester.generate(description); @@ -163,7 +163,7 @@ class GradleProjectGenerationConfigurationTests { @Test void testStarterExcludesVintageEngineWithCompatibleVersion() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.2.0.M5")); description.setLanguage(new JavaLanguage()); ProjectStructure project = this.projectTester.generate(description); @@ -174,7 +174,7 @@ class GradleProjectGenerationConfigurationTests { @Test void testStarterDoesNotExcludesVintageEngineAndJUnitWithIncompatibleVersion() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.6.RELEASE")); description.setLanguage(new JavaLanguage()); ProjectStructure project = this.projectTester.generate(description); @@ -190,7 +190,7 @@ class GradleProjectGenerationConfigurationTests { @MethodSource("annotationProcessorScopeBuildParameters") void gradleAnnotationProcessorScopeCustomizerIsContributedIfNecessary(String platformVersion, boolean contributorExpected) { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse(platformVersion)); description.setLanguage(new JavaLanguage()); Map generate = this.projectTester.generate(description, diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/DefaultMavenBuildCustomizerTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/DefaultMavenBuildCustomizerTests.java index 2a3fb3c3..e10016b0 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/DefaultMavenBuildCustomizerTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/DefaultMavenBuildCustomizerTests.java @@ -20,8 +20,7 @@ import io.spring.initializr.generator.buildsystem.BomContainer; import io.spring.initializr.generator.buildsystem.maven.MavenBuild; import io.spring.initializr.generator.buildsystem.maven.MavenParent; import io.spring.initializr.generator.language.java.JavaLanguage; -import io.spring.initializr.generator.project.ProjectDescription; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.test.InitializrMetadataTestBuilder; import io.spring.initializr.generator.version.Version; import io.spring.initializr.generator.version.VersionProperty; @@ -41,7 +40,7 @@ class DefaultMavenBuildCustomizerTests { @Test void customizeSetNameAndDescription() { InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults().build(); - ProjectDescription description = initializeDescription(); + MutableProjectDescription description = initializeDescription(); description.setName("my-demo"); description.setDescription("Demonstration project"); MavenBuild build = customizeBuild(metadata, description); @@ -63,7 +62,7 @@ class DefaultMavenBuildCustomizerTests { @Test void customizeSetJavaVersion() { InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults().build(); - ProjectDescription description = initializeDescription(); + MutableProjectDescription description = initializeDescription(); description.setLanguage(new JavaLanguage("11")); MavenBuild build = customizeBuild(metadata, description); assertThat(build.getProperties()).contains(entry("java.version", "11")); @@ -103,22 +102,21 @@ class DefaultMavenBuildCustomizerTests { assertThat(boms.items()).hasSize(0); } - private ProjectDescription initializeDescription() { - ProjectDescription description = new ProjectDescription(); + private MutableProjectDescription initializeDescription() { + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.0.0")); description.setLanguage(new JavaLanguage()); return description; } private MavenBuild customizeBuild(InitializrMetadata metadata) { - ProjectDescription description = initializeDescription(); + MutableProjectDescription description = initializeDescription(); return customizeBuild(metadata, description); } - private MavenBuild customizeBuild(InitializrMetadata metadata, ProjectDescription description) { + private MavenBuild customizeBuild(InitializrMetadata metadata, MutableProjectDescription description) { MavenBuild build = new MavenBuild(); - ResolvedProjectDescription resolvedProjectDescription = new ResolvedProjectDescription(description); - DefaultMavenBuildCustomizer customizer = new DefaultMavenBuildCustomizer(resolvedProjectDescription, metadata); + DefaultMavenBuildCustomizer customizer = new DefaultMavenBuildCustomizer(description, metadata); customizer.customize(build); return build; } diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/MavenProjectGenerationConfigurationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/MavenProjectGenerationConfigurationTests.java index 37fba99f..0bafe895 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/MavenProjectGenerationConfigurationTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/MavenProjectGenerationConfigurationTests.java @@ -22,7 +22,7 @@ import io.spring.initializr.generator.buildsystem.BuildWriter; import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem; import io.spring.initializr.generator.language.java.JavaLanguage; import io.spring.initializr.generator.packaging.war.WarPackaging; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.spring.build.BuildProjectGenerationConfiguration; import io.spring.initializr.generator.test.InitializrMetadataTestBuilder; import io.spring.initializr.generator.test.project.ProjectAssetTester; @@ -57,7 +57,7 @@ class MavenProjectGenerationConfigurationTests { @Test void buildWriterIsContributed() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.0.RELEASE")); BuildWriter buildWriter = this.projectTester.generate(description, (context) -> context.getBean(BuildWriter.class)); @@ -66,7 +66,7 @@ class MavenProjectGenerationConfigurationTests { @Test void mavenWrapperIsContributedWhenGeneratingMavenProject() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.0.RELEASE")); ProjectStructure project = this.projectTester.generate(description); assertThat(project).filePaths().contains("mvnw", "mvnw.cmd", ".mvn/wrapper/MavenWrapperDownloader.java", @@ -75,7 +75,7 @@ class MavenProjectGenerationConfigurationTests { @Test void mavenPomIsContributedWhenGeneratingMavenProject() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.0.RELEASE")); ProjectStructure project = this.projectTester.generate(description); assertThat(project).filePaths().contains("pom.xml"); @@ -83,7 +83,7 @@ class MavenProjectGenerationConfigurationTests { @Test void warPackagingIsUsedWhenBuildingProjectThatUsesWarPackaging() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.0.RELEASE")); description.setPackaging(new WarPackaging()); ProjectStructure project = this.projectTester.generate(description); @@ -93,7 +93,7 @@ class MavenProjectGenerationConfigurationTests { @Test @Deprecated void testStarterExcludesVintageEngineAndJUnitWithAppropriateVersion() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.2.0.M4")); description.setLanguage(new JavaLanguage()); ProjectStructure project = this.projectTester.generate(description); @@ -107,7 +107,7 @@ class MavenProjectGenerationConfigurationTests { @Test void testStarterExcludesVintageEngineWithCompatibleVersion() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.2.0.M5")); description.setLanguage(new JavaLanguage()); ProjectStructure project = this.projectTester.generate(description); @@ -119,7 +119,7 @@ class MavenProjectGenerationConfigurationTests { @Test void testStarterDoesNotExcludesVintageEngineAndJUnitWithIncompatibleVersion() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.6.RELEASE")); description.setLanguage(new JavaLanguage()); ProjectStructure project = this.projectTester.generate(description); diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/SourceCodeProjectGenerationConfigurationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/SourceCodeProjectGenerationConfigurationTests.java index 78d3bd9e..3a6657bc 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/SourceCodeProjectGenerationConfigurationTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/SourceCodeProjectGenerationConfigurationTests.java @@ -19,7 +19,7 @@ import io.spring.initializr.generator.language.CompilationUnit; import io.spring.initializr.generator.language.SourceCode; import io.spring.initializr.generator.language.TypeDeclaration; import io.spring.initializr.generator.packaging.Packaging; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.test.project.ProjectAssetTester; import io.spring.initializr.generator.version.Version; import org.junit.jupiter.api.Test; @@ -43,7 +43,7 @@ class SourceCodeProjectGenerationConfigurationTests { @Test @SuppressWarnings("unchecked") void addsACustomizerThatAppliesSpringBootApplicationAnnotationOnMainClass() { - TypeDeclaration declaration = this.projectTester.generate(new ProjectDescription(), (context) -> { + TypeDeclaration declaration = this.projectTester.generate(new MutableProjectDescription(), (context) -> { TypeDeclaration type = new TypeDeclaration("Test"); MainApplicationTypeCustomizer bean = context.getBean(MainApplicationTypeCustomizer.class); bean.customize(type); @@ -76,7 +76,7 @@ class SourceCodeProjectGenerationConfigurationTests { @SuppressWarnings("unchecked") private TypeDeclaration generateTestTypeDeclaration(String version) { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse(version)); return this.projectTester.generate(description, (context) -> { TypeDeclaration type = new TypeDeclaration("Test"); @@ -98,7 +98,7 @@ class SourceCodeProjectGenerationConfigurationTests { @SuppressWarnings("unchecked") private void runWarTest(String version, String className) { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPackaging(Packaging.forId("war")); description.setPackageName("com.foo"); description.setPlatformVersion(Version.parse(version)); diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationConfigurationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationConfigurationTests.java index 4017e763..e03b8b33 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationConfigurationTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationConfigurationTests.java @@ -21,7 +21,7 @@ import java.nio.file.Path; import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem; import io.spring.initializr.generator.language.groovy.GroovyLanguage; import io.spring.initializr.generator.packaging.war.WarPackaging; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.spring.code.SourceCodeProjectGenerationConfiguration; import io.spring.initializr.generator.test.project.ProjectAssetTester; import io.spring.initializr.generator.test.project.ProjectStructure; @@ -57,13 +57,13 @@ class GroovyProjectGenerationConfigurationTests { @Test void mainClassIsContributed() { - ProjectStructure project = this.projectTester.generate(new ProjectDescription()); + ProjectStructure project = this.projectTester.generate(new MutableProjectDescription()); assertThat(project).containsFiles("src/main/groovy/com/example/demo/DemoApplication.groovy"); } @Test void testClassIsContributedWithJUnit4() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.4.RELEASE")); ProjectStructure project = this.projectTester.generate(description); assertThat(project).textFile("src/test/groovy/com/example/demo/DemoApplicationTests.groovy").containsExactly( @@ -76,7 +76,7 @@ class GroovyProjectGenerationConfigurationTests { @Test void testClassIsContributedWithJUnit5() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.2.0.RELEASE")); ProjectStructure project = this.projectTester.generate(description); assertThat(project).textFile("src/test/groovy/com/example/demo/DemoApplicationTests.groovy").containsExactly( @@ -87,7 +87,7 @@ class GroovyProjectGenerationConfigurationTests { @Test void servletInitializerIsContributedWhenGeneratingProjectThatUsesWarPackaging() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPackaging(new WarPackaging()); description.setApplicationName("Demo2Application"); ProjectStructure project = this.projectTester.generate(description); diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/java/JavaProjectGenerationConfigurationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/java/JavaProjectGenerationConfigurationTests.java index 950eed72..dfae94f8 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/java/JavaProjectGenerationConfigurationTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/java/JavaProjectGenerationConfigurationTests.java @@ -21,7 +21,7 @@ import java.nio.file.Path; import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem; import io.spring.initializr.generator.language.java.JavaLanguage; import io.spring.initializr.generator.packaging.war.WarPackaging; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.spring.code.SourceCodeProjectGenerationConfiguration; import io.spring.initializr.generator.test.project.ProjectAssetTester; import io.spring.initializr.generator.test.project.ProjectStructure; @@ -57,14 +57,14 @@ class JavaProjectGenerationConfigurationTests { @Test void mainClassIsContributed() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); ProjectStructure project = this.projectTester.generate(description); assertThat(project).containsFiles("src/main/java/com/example/demo/DemoApplication.java"); } @Test void testClassIsContributedWithJUnit4() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.4.RELEASE")); ProjectStructure project = this.projectTester.generate(description); assertThat(project).textFile("src/test/java/com/example/demo/DemoApplicationTests.java").containsExactly( @@ -77,7 +77,7 @@ class JavaProjectGenerationConfigurationTests { @Test void testClassIsContributedWithJUnit5() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.2.0.RELEASE")); ProjectStructure project = this.projectTester.generate(description); assertThat(project).textFile("src/test/java/com/example/demo/DemoApplicationTests.java").containsExactly( @@ -88,7 +88,7 @@ class JavaProjectGenerationConfigurationTests { @Test void servletInitializerIsContributedWhenGeneratingProjectThatUsesWarPackaging() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPackaging(new WarPackaging()); description.setApplicationName("MyDemoApplication"); ProjectStructure project = this.projectTester.generate(description); @@ -102,7 +102,7 @@ class JavaProjectGenerationConfigurationTests { @Test void customPackageNameIsUsedWhenGeneratingProject() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPackageName("com.example.foo"); ProjectStructure project = this.projectTester.generate(description); assertThat(project).containsFiles("src/main/java/com/example/foo/DemoApplication.java", @@ -111,7 +111,7 @@ class JavaProjectGenerationConfigurationTests { @Test void customApplicationNameIsUsedWhenGeneratingProject() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setApplicationName("MyApplication"); ProjectStructure project = this.projectTester.generate(description); assertThat(project).containsFiles("src/main/java/com/example/demo/MyApplication.java", diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinJacksonBuildCustomizerTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinJacksonBuildCustomizerTests.java index a21307e4..df77cd12 100755 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinJacksonBuildCustomizerTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinJacksonBuildCustomizerTests.java @@ -21,7 +21,7 @@ import java.util.Collections; import io.spring.initializr.generator.buildsystem.maven.MavenBuild; import io.spring.initializr.generator.language.java.JavaLanguage; import io.spring.initializr.generator.language.kotlin.KotlinLanguage; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.test.InitializrMetadataTestBuilder; import io.spring.initializr.generator.version.Version; import io.spring.initializr.metadata.Dependency; @@ -44,7 +44,7 @@ class KotlinJacksonBuildCustomizerTests { void customizeWhenJsonFacetPresentShouldAddJacksonKotlinModule() { Dependency dependency = Dependency.withId("foo"); dependency.setFacets(Collections.singletonList("json")); - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setLanguage(new KotlinLanguage()); MavenBuild build = getCustomizedBuild(dependency, description); io.spring.initializr.generator.buildsystem.Dependency jacksonKotlin = build.dependencies() @@ -57,7 +57,7 @@ class KotlinJacksonBuildCustomizerTests { void jacksonModuleKotlinIsNotAddedWithoutKotlin() { Dependency dependency = Dependency.withId("foo"); dependency.setFacets(Collections.singletonList("json")); - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setLanguage(new JavaLanguage()); MavenBuild build = getCustomizedBuild(dependency, description); io.spring.initializr.generator.buildsystem.Dependency jacksonKotlin = build.dependencies() @@ -68,7 +68,7 @@ class KotlinJacksonBuildCustomizerTests { @Test void jacksonModuleKotlinIsNotAddedWithoutJsonFacet() { Dependency dependency = Dependency.withId("foo"); - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setLanguage(new KotlinLanguage()); MavenBuild build = getCustomizedBuild(dependency, description); io.spring.initializr.generator.buildsystem.Dependency jacksonKotlin = build.dependencies() @@ -76,10 +76,10 @@ class KotlinJacksonBuildCustomizerTests { assertThat(jacksonKotlin).isNull(); } - private MavenBuild getCustomizedBuild(Dependency dependency, ProjectDescription description) { + private MavenBuild getCustomizedBuild(Dependency dependency, MutableProjectDescription description) { InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addDependencyGroup("test", dependency).build(); - KotlinJacksonBuildCustomizer customizer = new KotlinJacksonBuildCustomizer(metadata, description.resolve()); + KotlinJacksonBuildCustomizer customizer = new KotlinJacksonBuildCustomizer(metadata, description); MavenBuild build = new MavenBuild(new MetadataBuildItemResolver(metadata, Version.parse("2.0.0.RELEASE"))); build.dependencies().add("foo"); customizer.customize(build); diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationConfigurationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationConfigurationTests.java index 52198faf..beb99cce 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationConfigurationTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationConfigurationTests.java @@ -23,7 +23,7 @@ import io.spring.initializr.generator.buildsystem.Dependency; import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem; import io.spring.initializr.generator.language.kotlin.KotlinLanguage; import io.spring.initializr.generator.packaging.war.WarPackaging; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.spring.build.BuildProjectGenerationConfiguration; import io.spring.initializr.generator.spring.build.maven.MavenProjectGenerationConfiguration; import io.spring.initializr.generator.spring.code.SourceCodeProjectGenerationConfiguration; @@ -69,7 +69,7 @@ class KotlinProjectGenerationConfigurationTests { @Test void kotlinVersionFallbacksToMetadataIfNotPresent() { - KotlinProjectSettings settings = this.projectTester.generate(new ProjectDescription(), + KotlinProjectSettings settings = this.projectTester.generate(new MutableProjectDescription(), (context) -> context.getBean(KotlinProjectSettings.class)); assertThat(settings.getVersion()).isEqualTo("1.1.1"); } @@ -78,19 +78,19 @@ class KotlinProjectGenerationConfigurationTests { void kotlinVersionResolverIsUsedIfPresent() { KotlinProjectSettings settings = this.projectTester .withBean(KotlinProjectSettings.class, () -> new SimpleKotlinProjectSettings("0.9.12")) - .generate(new ProjectDescription(), (context) -> context.getBean(KotlinProjectSettings.class)); + .generate(new MutableProjectDescription(), (context) -> context.getBean(KotlinProjectSettings.class)); assertThat(settings.getVersion()).isEqualTo("0.9.12"); } @Test void mainClassIsContributedWhenGeneratingProject() { - ProjectStructure project = this.projectTester.generate(new ProjectDescription()); + ProjectStructure project = this.projectTester.generate(new MutableProjectDescription()); assertThat(project).containsFiles("src/main/kotlin/com/example/demo/DemoApplication.kt"); } @Test void testClassIsContributedWithJunit4() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.1.4.RELEASE")); ProjectStructure project = this.projectTester.generate(description); assertThat(project).textFile("src/test/kotlin/com/example/demo/DemoApplicationTests.kt").containsExactly( @@ -103,7 +103,7 @@ class KotlinProjectGenerationConfigurationTests { @Test void testClassIsContributedWithJunit5() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPlatformVersion(Version.parse("2.2.0.RELEASE")); ProjectStructure project = this.projectTester.generate(description); assertThat(project).textFile("src/test/kotlin/com/example/demo/DemoApplicationTests.kt").containsExactly( @@ -114,7 +114,7 @@ class KotlinProjectGenerationConfigurationTests { @Test void servletInitializerIsContributedWhenGeneratingProjectThatUsesWarPackaging() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setPackaging(new WarPackaging()); description.setApplicationName("KotlinDemoApplication"); ProjectStructure project = this.projectTester.generate(description); @@ -128,7 +128,7 @@ class KotlinProjectGenerationConfigurationTests { @Test void jacksonKotlinModuleShouldBeAddedWhenJsonFacetPresent() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.addDependency("foo", Dependency.withCoordinates("com.example", "foo").build()); ProjectStructure project = this.projectTester.generate(description); assertThat(project).textFile("pom.xml").contains(" ", diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/documentation/HelpDocumentProjectGenerationConfigurationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/documentation/HelpDocumentProjectGenerationConfigurationTests.java index dff35686..b33020c5 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/documentation/HelpDocumentProjectGenerationConfigurationTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/documentation/HelpDocumentProjectGenerationConfigurationTests.java @@ -19,7 +19,7 @@ package io.spring.initializr.generator.spring.documentation; import java.nio.file.Path; import io.spring.initializr.generator.io.template.MustacheTemplateRenderer; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.spring.scm.git.GitIgnoreCustomizer; import io.spring.initializr.generator.test.InitializrMetadataTestBuilder; import io.spring.initializr.generator.test.project.ProjectAssetTester; @@ -54,7 +54,7 @@ class HelpDocumentProjectGenerationConfigurationTests { @Test void helpDocumentIsNotContributedWithoutLinks() { - ProjectStructure project = this.projectTester.generate(new ProjectDescription()); + ProjectStructure project = this.projectTester.generate(new MutableProjectDescription()); assertThat(project).filePaths().isEmpty(); } @@ -64,7 +64,7 @@ class HelpDocumentProjectGenerationConfigurationTests { dependency.getLinks().add(Link.create("guide", "https://example.com/how-to", "How-to example")); dependency.getLinks().add(Link.create("reference", "https://example.com/doc", "Reference doc example")); this.metadataBuilder.addDependencyGroup("test", dependency); - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.addDependency("example", null); ProjectStructure project = this.projectTester.generate(description); assertThat(project).filePaths().containsOnly("HELP.md"); @@ -72,7 +72,7 @@ class HelpDocumentProjectGenerationConfigurationTests { @Test void helpDocumentIsAddedToGitIgnore() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); GitIgnoreCustomizer gitIgnoreCustomizer = this.projectTester.generate(description, (context) -> context.getBean(GitIgnoreCustomizer.class)); assertThat(gitIgnoreCustomizer).isInstanceOf(HelpDocumentGitIgnoreCustomizer.class); diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/documentation/RequestedDependenciesHelpDocumentCustomizerTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/documentation/RequestedDependenciesHelpDocumentCustomizerTests.java index 6ceabe75..08c82f3b 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/documentation/RequestedDependenciesHelpDocumentCustomizerTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/documentation/RequestedDependenciesHelpDocumentCustomizerTests.java @@ -20,8 +20,7 @@ import java.util.Arrays; import io.spring.initializr.generator.io.template.MustacheTemplateRenderer; import io.spring.initializr.generator.io.text.BulletedSection; -import io.spring.initializr.generator.project.ProjectDescription; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.test.InitializrMetadataTestBuilder; import io.spring.initializr.metadata.Dependency; import io.spring.initializr.metadata.InitializrMetadata; @@ -135,14 +134,13 @@ class RequestedDependenciesHelpDocumentCustomizerTests { } private HelpDocument customizeHelp(String... requestedDependencies) { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); for (String requestedDependency : requestedDependencies) { description.addDependency(requestedDependency, null); } InitializrMetadata metadata = this.metadataBuilder.build(); HelpDocument document = new HelpDocument(new MustacheTemplateRenderer("classpath:/templates")); - new RequestedDependenciesHelpDocumentCustomizer(new ResolvedProjectDescription(description), metadata) - .customize(document); + new RequestedDependenciesHelpDocumentCustomizer(description, metadata).customize(document); return document; } diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/scm/git/GitProjectGenerationConfigurationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/scm/git/GitProjectGenerationConfigurationTests.java index f50d9adb..03090242 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/scm/git/GitProjectGenerationConfigurationTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/scm/git/GitProjectGenerationConfigurationTests.java @@ -23,7 +23,7 @@ import java.util.List; import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem; import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.test.io.TextTestUtils; import io.spring.initializr.generator.test.project.ProjectAssetTester; import io.spring.initializr.generator.version.Version; @@ -44,7 +44,7 @@ class GitProjectGenerationConfigurationTests { @Test void gitIgnoreIsContributedToProject(@TempDir Path directory) { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setBuildSystem(new GradleBuildSystem()); Path projectDirectory = this.projectTester.withDirectory(directory).generate(description, (context) -> { GitIgnoreContributor contributor = context.getBean(GitIgnoreContributor.class); @@ -56,7 +56,7 @@ class GitProjectGenerationConfigurationTests { @Test void gitIgnore() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setBuildSystem(new GradleBuildSystem()); assertThat(generateGitIgnore(description)).contains("### STS ###", "### IntelliJ IDEA ###", "### NetBeans ###", "### VS Code ###"); @@ -64,7 +64,7 @@ class GitProjectGenerationConfigurationTests { @Test void gitIgnoreGradle() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setBuildSystem(new GradleBuildSystem()); description.setPlatformVersion(Version.parse("2.1.0.RELEASE")); assertThat(generateGitIgnore(description)).contains(".gradle", "build/", "!gradle/wrapper/gradle-wrapper.jar", @@ -74,7 +74,7 @@ class GitProjectGenerationConfigurationTests { @Test void gitIgnoreMaven() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setBuildSystem(new MavenBuildSystem()); description.setPlatformVersion(Version.parse("2.1.0.RELEASE")); assertThat(generateGitIgnore(description)) @@ -82,7 +82,7 @@ class GitProjectGenerationConfigurationTests { .doesNotContain(".gradle", "!gradle/wrapper/gradle-wrapper.jar", "/out/"); } - private List generateGitIgnore(ProjectDescription description) { + private List generateGitIgnore(MutableProjectDescription description) { return this.projectTester.generate(description, (context) -> { GitIgnore gitIgnore = context.getBean(GitIgnore.class); StringWriter out = new StringWriter(); diff --git a/initializr-generator-test/src/main/java/io/spring/initializr/generator/test/project/AbstractProjectGenerationTester.java b/initializr-generator-test/src/main/java/io/spring/initializr/generator/test/project/AbstractProjectGenerationTester.java index eba1bf82..123edd74 100644 --- a/initializr-generator-test/src/main/java/io/spring/initializr/generator/test/project/AbstractProjectGenerationTester.java +++ b/initializr-generator-test/src/main/java/io/spring/initializr/generator/test/project/AbstractProjectGenerationTester.java @@ -26,7 +26,7 @@ import java.util.function.Supplier; import io.spring.initializr.generator.io.IndentingWriterFactory; import io.spring.initializr.generator.io.SimpleIndentStrategy; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.project.ProjectDirectoryFactory; import io.spring.initializr.generator.project.ProjectGenerationContext; import io.spring.initializr.generator.project.ProjectGenerationException; @@ -43,21 +43,23 @@ public abstract class AbstractProjectGenerationTester contextInitializer; - private final Consumer descriptionCustomizer; + private final Consumer descriptionCustomizer; protected AbstractProjectGenerationTester(Map, Supplier> beanDefinitions) { this(beanDefinitions, defaultContextInitializer(), defaultDescriptionCustomizer()); } protected AbstractProjectGenerationTester(Map, Supplier> beanDefinitions, - Consumer contextInitializer, Consumer descriptionCustomizer) { + Consumer contextInitializer, + Consumer descriptionCustomizer) { this.beanDefinitions = new LinkedHashMap<>(beanDefinitions); this.descriptionCustomizer = descriptionCustomizer; this.contextInitializer = contextInitializer; } protected abstract SELF newInstance(Map, Supplier> beanDefinitions, - Consumer contextInitializer, Consumer descriptionCustomizer); + Consumer contextInitializer, + Consumer descriptionCustomizer); public SELF withBean(Class beanType, Supplier beanDefinition) { LinkedHashMap, Supplier> beans = new LinkedHashMap<>(this.beanDefinitions); @@ -79,7 +81,7 @@ public abstract class AbstractProjectGenerationTester description) { + public SELF withDescriptionCustomizer(Consumer description) { return newInstance(this.beanDefinitions, this.contextInitializer, this.descriptionCustomizer.andThen(description)); } @@ -89,7 +91,7 @@ public abstract class AbstractProjectGenerationTester defaultDescriptionCustomizer() { + protected static Consumer defaultDescriptionCustomizer() { return (projectDescription) -> { if (projectDescription.getGroupId() == null) { projectDescription.setGroupId("com.example"); @@ -106,7 +108,8 @@ public abstract class AbstractProjectGenerationTester T invokeProjectGeneration(ProjectDescription description, ProjectGenerationInvoker invoker) { + protected T invokeProjectGeneration(MutableProjectDescription description, + ProjectGenerationInvoker invoker) { this.descriptionCustomizer.accept(description); try { return invoker.generate(beansConfigurer().andThen(this.contextInitializer)); diff --git a/initializr-generator-test/src/main/java/io/spring/initializr/generator/test/project/ProjectAssetTester.java b/initializr-generator-test/src/main/java/io/spring/initializr/generator/test/project/ProjectAssetTester.java index cac63128..e44c00ee 100644 --- a/initializr-generator-test/src/main/java/io/spring/initializr/generator/test/project/ProjectAssetTester.java +++ b/initializr-generator-test/src/main/java/io/spring/initializr/generator/test/project/ProjectAssetTester.java @@ -24,11 +24,11 @@ import java.util.function.Consumer; import java.util.function.Supplier; import java.util.stream.Collectors; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.project.ProjectAssetGenerator; import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectDirectoryFactory; import io.spring.initializr.generator.project.ProjectGenerationContext; -import io.spring.initializr.generator.project.ResolvedProjectDescription; import io.spring.initializr.generator.project.contributor.ProjectContributor; /** @@ -47,13 +47,15 @@ public class ProjectAssetTester extends AbstractProjectGenerationTester, Supplier> beanDefinitions, - Consumer contextInitializer, Consumer descriptionCustomizer) { + Consumer contextInitializer, + Consumer descriptionCustomizer) { super(beanDefinitions, contextInitializer, descriptionCustomizer); } @Override protected ProjectAssetTester newInstance(Map, Supplier> beanDefinitions, - Consumer contextInitializer, Consumer descriptionCustomizer) { + Consumer contextInitializer, + Consumer descriptionCustomizer) { return new ProjectAssetTester(beanDefinitions, contextInitializer, descriptionCustomizer); } @@ -69,11 +71,10 @@ public class ProjectAssetTester extends AbstractProjectGenerationTester T generate(ProjectDescription description, ProjectAssetGenerator projectAssetGenerator) { + public T generate(MutableProjectDescription description, ProjectAssetGenerator projectAssetGenerator) { return invokeProjectGeneration(description, (contextInitializer) -> { try (ProjectGenerationContext context = new ProjectGenerationContext()) { - ResolvedProjectDescription resolvedProjectDescription = new ResolvedProjectDescription(description); - context.registerBean(ResolvedProjectDescription.class, () -> resolvedProjectDescription); + context.registerBean(ProjectDescription.class, () -> description); contextInitializer.accept(context); context.refresh(); return projectAssetGenerator.generate(context); @@ -88,14 +89,14 @@ public class ProjectAssetTester extends AbstractProjectGenerationTester runAllAvailableContributors() { return (context) -> { Path projectDirectory = context.getBean(ProjectDirectoryFactory.class) - .createProjectDirectory(context.getBean(ResolvedProjectDescription.class)); + .createProjectDirectory(context.getBean(ProjectDescription.class)); List projectContributors = context.getBeanProvider(ProjectContributor.class) .orderedStream().collect(Collectors.toList()); for (ProjectContributor projectContributor : projectContributors) { diff --git a/initializr-generator-test/src/main/java/io/spring/initializr/generator/test/project/ProjectGeneratorTester.java b/initializr-generator-test/src/main/java/io/spring/initializr/generator/test/project/ProjectGeneratorTester.java index f67abcee..9eb6cfab 100644 --- a/initializr-generator-test/src/main/java/io/spring/initializr/generator/test/project/ProjectGeneratorTester.java +++ b/initializr-generator-test/src/main/java/io/spring/initializr/generator/test/project/ProjectGeneratorTester.java @@ -26,8 +26,8 @@ import io.spring.initializr.generator.io.IndentingWriterFactory; import io.spring.initializr.generator.io.SimpleIndentStrategy; import io.spring.initializr.generator.io.template.MustacheTemplateRenderer; import io.spring.initializr.generator.project.DefaultProjectAssetGenerator; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.project.ProjectAssetGenerator; -import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationContext; import io.spring.initializr.generator.project.ProjectGenerator; @@ -39,7 +39,8 @@ import io.spring.initializr.generator.project.ProjectGenerator; public class ProjectGeneratorTester extends AbstractProjectGenerationTester { private ProjectGeneratorTester(Map, Supplier> beanDefinitions, - Consumer contextInitializer, Consumer descriptionCustomizer) { + Consumer contextInitializer, + Consumer descriptionCustomizer) { super(beanDefinitions, contextInitializer, descriptionCustomizer); } @@ -56,11 +57,12 @@ public class ProjectGeneratorTester extends AbstractProjectGenerationTester, Supplier> beanDefinitions, - Consumer contextInitializer, Consumer descriptionCustomizer) { + Consumer contextInitializer, + Consumer descriptionCustomizer) { return new ProjectGeneratorTester(beanDefinitions, contextInitializer, descriptionCustomizer); } - public ProjectStructure generate(ProjectDescription description) { + public ProjectStructure generate(MutableProjectDescription description) { return invokeProjectGeneration(description, (contextInitializer) -> { Path directory = new ProjectGenerator(contextInitializer).generate(description, new DefaultProjectAssetGenerator()); @@ -68,7 +70,7 @@ public class ProjectGeneratorTester extends AbstractProjectGenerationTester T generate(ProjectDescription description, ProjectAssetGenerator projectAssetGenerator) { + public T generate(MutableProjectDescription description, ProjectAssetGenerator projectAssetGenerator) { return invokeProjectGeneration(description, (contextInitializer) -> new ProjectGenerator(contextInitializer) .generate(description, projectAssetGenerator)); } diff --git a/initializr-generator-test/src/test/java/io/spring/initializr/generator/test/project/ProjectGeneratorTests.java b/initializr-generator-test/src/test/java/io/spring/initializr/generator/test/project/ProjectGeneratorTests.java index a26eff0b..1fac6855 100644 --- a/initializr-generator-test/src/test/java/io/spring/initializr/generator/test/project/ProjectGeneratorTests.java +++ b/initializr-generator-test/src/test/java/io/spring/initializr/generator/test/project/ProjectGeneratorTests.java @@ -21,10 +21,10 @@ import java.nio.file.Path; import java.util.function.Consumer; import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectDescriptionCustomizer; import io.spring.initializr.generator.project.ProjectGenerator; -import io.spring.initializr.generator.project.ResolvedProjectDescription; import io.spring.initializr.generator.project.contributor.ProjectContributor; import io.spring.initializr.generator.version.Version; import org.junit.jupiter.api.Test; @@ -48,14 +48,14 @@ class ProjectGeneratorTests { @Test void generateInvokedProcessor() { - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setBuildSystem(new MavenBuildSystem()); Version platformVersion = Version.parse("2.1.0.RELEASE"); description.setPackageName("com.example.test"); - ResolvedProjectDescription resolvedProjectDescription = this.projectTester.generate(description, - (projectGenerationContext) -> projectGenerationContext.getBean(ResolvedProjectDescription.class)); - assertThat(resolvedProjectDescription.getPlatformVersion()).isEqualTo(platformVersion); - assertThat(resolvedProjectDescription.getPackageName()).isEqualTo("com.example.test"); + ProjectDescription ProjectDescription = this.projectTester.generate(description, + (projectGenerationContext) -> projectGenerationContext.getBean(ProjectDescription.class)); + assertThat(ProjectDescription.getPlatformVersion()).isEqualTo(platformVersion); + assertThat(ProjectDescription.getPackageName()).isEqualTo("com.example.test"); } @Test @@ -69,14 +69,14 @@ class ProjectGeneratorTests { description.setGroupId("com.acme"); })); }); - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setGroupId("com.example.demo"); description.setName("Original"); - ResolvedProjectDescription resolvedProjectDescription = tester.generate(description, - (projectGenerationContext) -> projectGenerationContext.getBean(ResolvedProjectDescription.class)); - assertThat(resolvedProjectDescription.getGroupId()).isEqualTo("com.acme"); - assertThat(resolvedProjectDescription.getName()).isEqualTo("Test"); + ProjectDescription ProjectDescription = tester.generate(description, + (projectGenerationContext) -> projectGenerationContext.getBean(ProjectDescription.class)); + assertThat(ProjectDescription.getGroupId()).isEqualTo("com.acme"); + assertThat(ProjectDescription.getName()).isEqualTo("Test"); } @Test @@ -91,7 +91,7 @@ class ProjectGeneratorTests { Files.createFile(subDir.resolve("Test.src")); }); }); - ProjectStructure project = tester.generate(new ProjectDescription()); + ProjectStructure project = tester.generate(new MutableProjectDescription()); assertThat(project).filePaths().containsOnly("test.text", "src/main/test/Test.src"); } @@ -99,15 +99,15 @@ class ProjectGeneratorTests { private final Integer order; - private final Consumer projectDescription; + private final Consumer projectDescription; - TestProjectDescriptionCustomizer(Integer order, Consumer projectDescription) { + TestProjectDescriptionCustomizer(Integer order, Consumer projectDescription) { this.order = order; this.projectDescription = projectDescription; } @Override - public void customize(ProjectDescription description) { + public void customize(MutableProjectDescription description) { this.projectDescription.accept(description); } diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/ConditionalOnRequestedDependency.java b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/ConditionalOnRequestedDependency.java index 442d79c7..acff9260 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/ConditionalOnRequestedDependency.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/ConditionalOnRequestedDependency.java @@ -22,12 +22,12 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import org.springframework.context.annotation.Conditional; /** - * Condition that matches when a {@link ResolvedProjectDescription} defines a particular + * Condition that matches when a {@link ProjectDescription} defines a particular * dependency. A generated project may ultimately define a different set of dependencies * according to the contributors that have been executed. To contribute to the project * according to the real set, prefer querying the model itself rather than using this diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnBuildSystemCondition.java b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnBuildSystemCondition.java index 38222a84..d7c9671e 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnBuildSystemCondition.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnBuildSystemCondition.java @@ -17,7 +17,7 @@ package io.spring.initializr.generator.condition; import io.spring.initializr.generator.buildsystem.BuildSystem; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; @@ -33,7 +33,7 @@ import org.springframework.util.StringUtils; class OnBuildSystemCondition extends ProjectGenerationCondition { @Override - protected boolean matches(ResolvedProjectDescription projectDescription, ConditionContext context, + protected boolean matches(ProjectDescription projectDescription, ConditionContext context, AnnotatedTypeMetadata metadata) { MultiValueMap attributes = metadata .getAllAnnotationAttributes(ConditionalOnBuildSystem.class.getName()); diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnLanguageCondition.java b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnLanguageCondition.java index ef2d80cf..fde39c41 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnLanguageCondition.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnLanguageCondition.java @@ -17,7 +17,7 @@ package io.spring.initializr.generator.condition; import io.spring.initializr.generator.language.Language; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; @@ -31,7 +31,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata; class OnLanguageCondition extends ProjectGenerationCondition { @Override - protected boolean matches(ResolvedProjectDescription projectDescription, ConditionContext context, + protected boolean matches(ProjectDescription projectDescription, ConditionContext context, AnnotatedTypeMetadata metadata) { if (projectDescription.getLanguage() == null) { return false; diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnPackagingCondition.java b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnPackagingCondition.java index e3ab046f..3fe375f8 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnPackagingCondition.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnPackagingCondition.java @@ -17,7 +17,7 @@ package io.spring.initializr.generator.condition; import io.spring.initializr.generator.packaging.Packaging; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; @@ -31,7 +31,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata; class OnPackagingCondition extends ProjectGenerationCondition { @Override - protected boolean matches(ResolvedProjectDescription projectDescription, ConditionContext context, + protected boolean matches(ProjectDescription projectDescription, ConditionContext context, AnnotatedTypeMetadata metadata) { if (projectDescription.getPackaging() == null) { return false; diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnPlatformVersionCondition.java b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnPlatformVersionCondition.java index 0ea8af87..bc098469 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnPlatformVersionCondition.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnPlatformVersionCondition.java @@ -18,7 +18,7 @@ package io.spring.initializr.generator.condition; import java.util.Arrays; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.version.Version; import io.spring.initializr.generator.version.VersionParser; @@ -35,7 +35,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata; class OnPlatformVersionCondition extends ProjectGenerationCondition { @Override - protected boolean matches(ResolvedProjectDescription projectDescription, ConditionContext context, + protected boolean matches(ProjectDescription projectDescription, ConditionContext context, AnnotatedTypeMetadata metadata) { Version platformVersion = projectDescription.getPlatformVersion(); if (platformVersion == null) { diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnRequestedDependencyCondition.java b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnRequestedDependencyCondition.java index 0891abfe..12e00be5 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnRequestedDependencyCondition.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnRequestedDependencyCondition.java @@ -16,7 +16,7 @@ package io.spring.initializr.generator.condition; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; @@ -30,7 +30,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata; class OnRequestedDependencyCondition extends ProjectGenerationCondition { @Override - protected boolean matches(ResolvedProjectDescription projectDescription, ConditionContext context, + protected boolean matches(ProjectDescription projectDescription, ConditionContext context, AnnotatedTypeMetadata metadata) { String id = (String) metadata.getAnnotationAttributes(ConditionalOnRequestedDependency.class.getName()) .get("value"); diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/ProjectGenerationCondition.java b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/ProjectGenerationCondition.java index e4e07ee4..1db3897e 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/ProjectGenerationCondition.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/ProjectGenerationCondition.java @@ -16,7 +16,7 @@ package io.spring.initializr.generator.condition; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import org.springframework.context.annotation.Condition; import org.springframework.context.annotation.ConditionContext; @@ -31,12 +31,11 @@ public abstract class ProjectGenerationCondition implements Condition { @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { - ResolvedProjectDescription projectDescription = context.getBeanFactory() - .getBean(ResolvedProjectDescription.class); + ProjectDescription projectDescription = context.getBeanFactory().getBean(ProjectDescription.class); return matches(projectDescription, context, metadata); } - protected abstract boolean matches(ResolvedProjectDescription projectDescription, ConditionContext context, + protected abstract boolean matches(ProjectDescription projectDescription, ConditionContext context, AnnotatedTypeMetadata metadata); } diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/project/DefaultProjectAssetGenerator.java b/initializr-generator/src/main/java/io/spring/initializr/generator/project/DefaultProjectAssetGenerator.java index dd4ad288..8cf7c655 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/project/DefaultProjectAssetGenerator.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/project/DefaultProjectAssetGenerator.java @@ -28,7 +28,7 @@ import io.spring.initializr.generator.project.contributor.ProjectContributor; * A default {@link ProjectAssetGenerator} implementation that generates a directory * structure with all available {@link ProjectContributor project contributors}. Uses a * {@link ProjectDirectoryFactory} to determine the root directory to use based on a - * {@link ResolvedProjectDescription}. + * {@link ProjectDescription}. * * @author Stephane Nicoll */ @@ -54,9 +54,9 @@ public class DefaultProjectAssetGenerator implements ProjectAssetGenerator @Override public Path generate(ProjectGenerationContext context) throws IOException { - ResolvedProjectDescription resolvedProjectDescription = context.getBean(ResolvedProjectDescription.class); - Path projectRoot = resolveProjectDirectoryFactory(context).createProjectDirectory(resolvedProjectDescription); - Path projectDirectory = initializerProjectDirectory(projectRoot, resolvedProjectDescription); + ProjectDescription projectDescription = context.getBean(ProjectDescription.class); + Path projectRoot = resolveProjectDirectoryFactory(context).createProjectDirectory(projectDescription); + Path projectDirectory = initializerProjectDirectory(projectRoot, projectDescription); List contributors = context.getBeanProvider(ProjectContributor.class).orderedStream() .collect(Collectors.toList()); for (ProjectContributor contributor : contributors) { @@ -70,13 +70,13 @@ public class DefaultProjectAssetGenerator implements ProjectAssetGenerator : context.getBean(ProjectDirectoryFactory.class); } - private Path initializerProjectDirectory(Path rootDir, ResolvedProjectDescription description) throws IOException { + private Path initializerProjectDirectory(Path rootDir, ProjectDescription description) throws IOException { Path projectDirectory = resolveProjectDirectory(rootDir, description); Files.createDirectories(projectDirectory); return projectDirectory; } - private Path resolveProjectDirectory(Path rootDir, ResolvedProjectDescription description) { + private Path resolveProjectDirectory(Path rootDir, ProjectDescription description) { if (description.getBaseDirectory() != null) { return rootDir.resolve(description.getBaseDirectory()); } diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/project/MutableProjectDescription.java b/initializr-generator/src/main/java/io/spring/initializr/generator/project/MutableProjectDescription.java new file mode 100644 index 00000000..511ea93e --- /dev/null +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/project/MutableProjectDescription.java @@ -0,0 +1,174 @@ +/* + * Copyright 2012-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.initializr.generator.project; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; + +import io.spring.initializr.generator.buildsystem.BuildSystem; +import io.spring.initializr.generator.buildsystem.Dependency; +import io.spring.initializr.generator.language.Language; +import io.spring.initializr.generator.packaging.Packaging; +import io.spring.initializr.generator.version.Version; + +import org.springframework.util.StringUtils; + +/** + * A mutable implementation of {@link ProjectDescription}. + * + * @author Andy Wilkinson + */ +public class MutableProjectDescription implements ProjectDescription { + + private Version platformVersion; + + private BuildSystem buildSystem; + + private Packaging packaging; + + private Language language; + + private final Map requestedDependencies = new LinkedHashMap<>(); + + private String groupId; + + private String artifactId; + + private String version; + + private String name; + + private String description; + + private String applicationName; + + private String packageName; + + private String baseDirectory; + + public Version getPlatformVersion() { + return this.platformVersion; + } + + public void setPlatformVersion(Version platformVersion) { + this.platformVersion = platformVersion; + } + + public BuildSystem getBuildSystem() { + return this.buildSystem; + } + + public void setBuildSystem(BuildSystem buildSystem) { + this.buildSystem = buildSystem; + } + + public Packaging getPackaging() { + return this.packaging; + } + + public void setPackaging(Packaging packaging) { + this.packaging = packaging; + } + + public Language getLanguage() { + return this.language; + } + + public void setLanguage(Language language) { + this.language = language; + } + + public Dependency addDependency(String id, Dependency dependency) { + return this.requestedDependencies.put(id, dependency); + } + + public Map getRequestedDependencies() { + return Collections.unmodifiableMap(this.requestedDependencies); + } + + public String getGroupId() { + return this.groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public String getArtifactId() { + return this.artifactId; + } + + public void setArtifactId(String artifactId) { + this.artifactId = artifactId; + } + + public String getVersion() { + return this.version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getApplicationName() { + return this.applicationName; + } + + public void setApplicationName(String applicationName) { + this.applicationName = applicationName; + } + + public String getPackageName() { + if (StringUtils.hasText(this.packageName)) { + return this.packageName; + } + if (StringUtils.hasText(this.groupId) && StringUtils.hasText(this.artifactId)) { + return this.groupId + "." + this.artifactId; + } + return null; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public String getBaseDirectory() { + return this.baseDirectory; + } + + public void setBaseDirectory(String baseDirectory) { + this.baseDirectory = baseDirectory; + } + +} diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectDescription.java b/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectDescription.java index 021d9b17..fca2bdbe 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectDescription.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectDescription.java @@ -16,8 +16,6 @@ package io.spring.initializr.generator.project; -import java.util.Collections; -import java.util.LinkedHashMap; import java.util.Map; import io.spring.initializr.generator.buildsystem.BuildSystem; @@ -30,145 +28,86 @@ import io.spring.initializr.generator.version.Version; * Description of a project to generate. * * @author Andy Wilkinson + * @author Stephane Nicoll */ -public class ProjectDescription { - - private Version platformVersion; - - private BuildSystem buildSystem; - - private Packaging packaging; - - private Language language; - - private final Map requestedDependencies = new LinkedHashMap<>(); - - private String groupId; - - private String artifactId; - - private String version; - - private String name; - - private String description; - - private String applicationName; - - private String packageName; - - private String baseDirectory; +public interface ProjectDescription { /** - * Resolve the state of this instance to a {@link ResolvedProjectDescription}. - * @return an immutable description. + * Return a immutable mapping of requested {@link Dependency dependencies}. + * @return the requested dependencies */ - public ResolvedProjectDescription resolve() { - return new ResolvedProjectDescription(this); - } + Map getRequestedDependencies(); - public Version getPlatformVersion() { - return this.platformVersion; - } + /** + * Return the requested platform {@link Version}. + * @return the requested platform version or {@code null} + */ + Version getPlatformVersion(); - public void setPlatformVersion(Version platformVersion) { - this.platformVersion = platformVersion; - } + /** + * Return the {@link BuildSystem} to use. + * @return the build system or {@code null} + */ + BuildSystem getBuildSystem(); - public BuildSystem getBuildSystem() { - return this.buildSystem; - } + /** + * Return the build {@link Packaging} to use. + * @return the build packaging or {@code null} + */ + Packaging getPackaging(); - public void setBuildSystem(BuildSystem buildSystem) { - this.buildSystem = buildSystem; - } + /** + * Return the primary {@link Language} of the project. + * @return the primary language or {@code null} + */ + Language getLanguage(); - public Packaging getPackaging() { - return this.packaging; - } + /** + * Return the build {@code groupId}. + * @return the groupId or {@code null} + */ + String getGroupId(); - public void setPackaging(Packaging packaging) { - this.packaging = packaging; - } + /** + * Return the build {@code artifactId}. + * @return the artifactId or {@code null} + */ + String getArtifactId(); - public Language getLanguage() { - return this.language; - } + /** + * Return the version of the project. + * @return the version of {@code null} + */ + String getVersion(); - public void setLanguage(Language language) { - this.language = language; - } + /** + * Return a simple name for the project. + * @return the name of the project or {@code null} + */ + String getName(); - public Dependency addDependency(String id, Dependency dependency) { - return this.requestedDependencies.put(id, dependency); - } + /** + * Return a human readable description of the project. + * @return the description of the project or {@code null} + */ + String getDescription(); - public Map getRequestedDependencies() { - return Collections.unmodifiableMap(this.requestedDependencies); - } + /** + * Return the name of the application as a standard Java identifier. + * @return the name of the application or {@code null} + */ + String getApplicationName(); - public String getGroupId() { - return this.groupId; - } + /** + * Return the root package name of the project. + * @return the package name or {@code null} + */ + String getPackageName(); - public void setGroupId(String groupId) { - this.groupId = groupId; - } - - public String getArtifactId() { - return this.artifactId; - } - - public void setArtifactId(String artifactId) { - this.artifactId = artifactId; - } - - public String getVersion() { - return this.version; - } - - public void setVersion(String version) { - this.version = version; - } - - public String getName() { - return this.name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDescription() { - return this.description; - } - - public void setDescription(String description) { - this.description = description; - } - - public String getApplicationName() { - return this.applicationName; - } - - public void setApplicationName(String applicationName) { - this.applicationName = applicationName; - } - - public String getPackageName() { - return this.packageName; - } - - public void setPackageName(String packageName) { - this.packageName = packageName; - } - - public String getBaseDirectory() { - return this.baseDirectory; - } - - public void setBaseDirectory(String baseDirectory) { - this.baseDirectory = baseDirectory; - } + /** + * Return the base directory of the project or {@code null} to use the root directory. + * @return the base directory + */ + String getBaseDirectory(); } diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectDescriptionCustomizer.java b/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectDescriptionCustomizer.java index 493af630..36071b28 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectDescriptionCustomizer.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectDescriptionCustomizer.java @@ -28,7 +28,7 @@ import org.springframework.core.Ordered; @FunctionalInterface public interface ProjectDescriptionCustomizer extends Ordered { - void customize(ProjectDescription description); + void customize(MutableProjectDescription description); @Override default int getOrder() { diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectDirectoryFactory.java b/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectDirectoryFactory.java index 507c955a..9b8ec167 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectDirectoryFactory.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectDirectoryFactory.java @@ -28,12 +28,11 @@ import java.nio.file.Path; public interface ProjectDirectoryFactory { /** - * Create a dedicated project directory for the specified - * {@link ResolvedProjectDescription}. + * Create a dedicated project directory for the specified {@link ProjectDescription}. * @param description the description of a project to generate * @return a dedicated existing directory * @throws IOException if creating the directory failed */ - Path createProjectDirectory(ResolvedProjectDescription description) throws IOException; + Path createProjectDirectory(ProjectDescription description) throws IOException; } diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectGenerator.java b/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectGenerator.java index d2f8fa9d..c8a1c9f5 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectGenerator.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectGenerator.java @@ -47,7 +47,8 @@ public class ProjectGenerator { } /** - * Generate project assets using the specified {@link ProjectAssetGenerator}. + * Generate project assets using the specified {@link ProjectAssetGenerator}. Invokes + * known {@link ProjectDescriptionCustomizer} if applicable prior to asset generation. * @param description the description of the project to generate * @param projectAssetGenerator the {@link ProjectAssetGenerator} to invoke * @param the type that gathers the project assets @@ -57,7 +58,7 @@ public class ProjectGenerator { public T generate(ProjectDescription description, ProjectAssetGenerator projectAssetGenerator) throws ProjectGenerationException { try (ProjectGenerationContext context = new ProjectGenerationContext()) { - context.registerBean(ResolvedProjectDescription.class, resolve(description, context)); + context.registerBean(ProjectDescription.class, resolve(description, context)); context.register(CoreConfiguration.class); this.projectGenerationContext.accept(context); context.refresh(); @@ -70,12 +71,13 @@ public class ProjectGenerator { } } - private Supplier resolve(ProjectDescription description, - ProjectGenerationContext context) { + private Supplier resolve(ProjectDescription description, ProjectGenerationContext context) { return () -> { - context.getBeanProvider(ProjectDescriptionCustomizer.class).orderedStream() - .forEach((customizer) -> customizer.customize(description)); - return new ResolvedProjectDescription(description); + if (description instanceof MutableProjectDescription) { + context.getBeanProvider(ProjectDescriptionCustomizer.class).orderedStream() + .forEach((customizer) -> customizer.customize((MutableProjectDescription) description)); + } + return description; }; } diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/project/ResolvedProjectDescription.java b/initializr-generator/src/main/java/io/spring/initializr/generator/project/ResolvedProjectDescription.java deleted file mode 100644 index a48bdc45..00000000 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/project/ResolvedProjectDescription.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2012-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.spring.initializr.generator.project; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; - -import io.spring.initializr.generator.buildsystem.BuildSystem; -import io.spring.initializr.generator.buildsystem.Dependency; -import io.spring.initializr.generator.language.Language; -import io.spring.initializr.generator.packaging.Packaging; -import io.spring.initializr.generator.version.Version; - -import org.springframework.util.StringUtils; - -/** - * An immutable description of a project that is being generated. - * - * @author Madhura Bhave - */ -public final class ResolvedProjectDescription { - - private final Map requestedDependencies; - - private final Version platformVersion; - - private final BuildSystem buildSystem; - - private final Packaging packaging; - - private final Language language; - - private final String groupId; - - private final String artifactId; - - private final String version; - - private final String name; - - private final String description; - - private final String applicationName; - - private final String packageName; - - private final String baseDirectory; - - public ResolvedProjectDescription(ProjectDescription description) { - this.platformVersion = description.getPlatformVersion(); - this.buildSystem = description.getBuildSystem(); - this.packaging = description.getPackaging(); - this.language = description.getLanguage(); - this.groupId = description.getGroupId(); - this.artifactId = description.getArtifactId(); - this.version = description.getVersion(); - this.name = description.getName(); - this.description = description.getDescription(); - this.applicationName = description.getApplicationName(); - this.packageName = getPackageName(description); - this.baseDirectory = description.getBaseDirectory(); - Map requestedDependencies = new LinkedHashMap<>(description.getRequestedDependencies()); - this.requestedDependencies = Collections.unmodifiableMap(requestedDependencies); - } - - private String getPackageName(ProjectDescription description) { - if (StringUtils.hasText(description.getPackageName())) { - return description.getPackageName(); - } - if (StringUtils.hasText(description.getGroupId()) && StringUtils.hasText(description.getArtifactId())) { - return description.getGroupId() + "." + description.getArtifactId(); - } - return null; - } - - public Map getRequestedDependencies() { - return this.requestedDependencies; - } - - public Version getPlatformVersion() { - return this.platformVersion; - } - - public BuildSystem getBuildSystem() { - return this.buildSystem; - } - - public Packaging getPackaging() { - return this.packaging; - } - - public Language getLanguage() { - return this.language; - } - - public String getGroupId() { - return this.groupId; - } - - public String getArtifactId() { - return this.artifactId; - } - - public String getVersion() { - return this.version; - } - - public String getName() { - return this.name; - } - - public String getDescription() { - return this.description; - } - - public String getApplicationName() { - return this.applicationName; - } - - public String getPackageName() { - return this.packageName; - } - - public String getBaseDirectory() { - return this.baseDirectory; - } - -} diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnBuildSystemTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnBuildSystemTests.java index a2fcfe05..60b25961 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnBuildSystemTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnBuildSystemTests.java @@ -20,9 +20,9 @@ import java.util.Map; import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem; import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationContext; -import io.spring.initializr.generator.project.ResolvedProjectDescription; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.Bean; @@ -39,29 +39,30 @@ class ConditionalOnBuildSystemTests { @Test void outcomeWithMavenBuildSystem() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setBuildSystem(new MavenBuildSystem()); assertThat(candidatesFor(projectDescription, BuildSystemTestConfiguration.class)).containsOnlyKeys("maven"); } @Test void outcomeWithGradleBuildSystem() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setBuildSystem(new GradleBuildSystem()); assertThat(candidatesFor(projectDescription, BuildSystemTestConfiguration.class)).containsOnlyKeys("gradle"); } @Test void conditionalOnGradleWithKotlinDialectMatchesWhenGradleBuildSystemUsesKotlinDialect() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setBuildSystem(new GradleBuildSystem("kotlin")); assertThat(candidatesFor(projectDescription, BuildSystemTestConfiguration.class)).containsOnlyKeys("gradle", "gradleKotlin"); } - private Map candidatesFor(ProjectDescription projectDescription, Class... extraConfigurations) { + private Map candidatesFor(MutableProjectDescription projectDescription, + Class... extraConfigurations) { try (ProjectGenerationContext context = new ProjectGenerationContext()) { - context.registerBean(ResolvedProjectDescription.class, projectDescription::resolve); + context.registerBean(ProjectDescription.class, () -> projectDescription); context.register(extraConfigurations); context.refresh(); return context.getBeansOfType(String.class); diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnLanguageTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnLanguageTests.java index 309009f0..ef74ff19 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnLanguageTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnLanguageTests.java @@ -21,9 +21,9 @@ import java.util.function.Consumer; import io.spring.initializr.generator.language.groovy.GroovyLanguage; import io.spring.initializr.generator.language.java.JavaLanguage; import io.spring.initializr.generator.language.kotlin.KotlinLanguage; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationContext; -import io.spring.initializr.generator.project.ResolvedProjectDescription; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.Bean; @@ -40,7 +40,7 @@ class ConditionalOnLanguageTests { @Test void outcomeWithJavaLanguage() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setLanguage(new JavaLanguage()); assertCondition(projectDescription, (context) -> { assertThat(context.getBeansOfType(String.class)).hasSize(1); @@ -50,7 +50,7 @@ class ConditionalOnLanguageTests { @Test void outcomeWithGroovyBuildSystem() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setLanguage(new GroovyLanguage()); assertCondition(projectDescription, (context) -> { assertThat(context.getBeansOfType(String.class)).hasSize(1); @@ -60,20 +60,21 @@ class ConditionalOnLanguageTests { @Test void outcomeWithNoMatch() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setLanguage(new KotlinLanguage()); assertCondition(projectDescription, (context) -> assertThat(context.getBeansOfType(String.class)).isEmpty()); } @Test void outcomeWithNoAvailableLanguage() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); assertCondition(projectDescription, (context) -> assertThat(context.getBeansOfType(String.class)).isEmpty()); } - private void assertCondition(ProjectDescription projectDescription, Consumer context) { + private void assertCondition(MutableProjectDescription projectDescription, + Consumer context) { try (ProjectGenerationContext projectContext = new ProjectGenerationContext()) { - projectContext.registerBean(ResolvedProjectDescription.class, projectDescription::resolve); + projectContext.registerBean(ProjectDescription.class, () -> projectDescription); projectContext.register(LanguageTestConfiguration.class); projectContext.refresh(); context.accept(projectContext); diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnPackagingTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnPackagingTests.java index 57819cda..c8ed75da 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnPackagingTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnPackagingTests.java @@ -20,9 +20,9 @@ import java.util.function.Consumer; import io.spring.initializr.generator.packaging.jar.JarPackaging; import io.spring.initializr.generator.packaging.war.WarPackaging; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationContext; -import io.spring.initializr.generator.project.ResolvedProjectDescription; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.Bean; @@ -39,7 +39,7 @@ class ConditionalOnPackagingTests { @Test void outcomeWithJarPackaging() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPackaging(new JarPackaging()); assertCondition(projectDescription, (context) -> { assertThat(context.getBeansOfType(String.class)).hasSize(1); @@ -49,7 +49,7 @@ class ConditionalOnPackagingTests { @Test void outcomeWithWarPackaging() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPackaging(new WarPackaging()); assertCondition(projectDescription, (context) -> { assertThat(context.getBeansOfType(String.class)).hasSize(1); @@ -59,13 +59,14 @@ class ConditionalOnPackagingTests { @Test void outcomeWithNoAvailablePackaging() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); assertCondition(projectDescription, (context) -> assertThat(context.getBeansOfType(String.class)).isEmpty()); } - private void assertCondition(ProjectDescription projectDescription, Consumer context) { + private void assertCondition(MutableProjectDescription projectDescription, + Consumer context) { try (ProjectGenerationContext projectContext = new ProjectGenerationContext()) { - projectContext.registerBean(ResolvedProjectDescription.class, projectDescription::resolve); + projectContext.registerBean(ProjectDescription.class, () -> projectDescription); projectContext.register(PackagingTestConfiguration.class); projectContext.refresh(); context.accept(projectContext); diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnPlatformVersionTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnPlatformVersionTests.java index e45eda1d..afa32295 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnPlatformVersionTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnPlatformVersionTests.java @@ -18,9 +18,9 @@ package io.spring.initializr.generator.condition; import java.util.Map; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationContext; -import io.spring.initializr.generator.project.ResolvedProjectDescription; import io.spring.initializr.generator.version.Version; import org.junit.jupiter.api.Test; @@ -38,14 +38,14 @@ class ConditionalOnPlatformVersionTests { @Test void outcomeWithMatchingRange() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPlatformVersion(Version.parse("1.2.0.RELEASE")); assertThat(candidatesFor(projectDescription, PlatformVersionTestConfiguration.class)).containsOnlyKeys("first"); } @Test void outcomeWithMatchingOpenRange() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPlatformVersion(Version.parse("2.0.1.RELEASE")); assertThat(candidatesFor(projectDescription, PlatformVersionTestConfiguration.class)) .containsOnlyKeys("second"); @@ -53,7 +53,7 @@ class ConditionalOnPlatformVersionTests { @Test void outcomeWithMatchingStartOfOpenRange() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPlatformVersion(Version.parse("2.0.0.M1")); assertThat(candidatesFor(projectDescription, PlatformVersionTestConfiguration.class)) .containsOnlyKeys("second"); @@ -61,20 +61,20 @@ class ConditionalOnPlatformVersionTests { @Test void outcomeWithNoMatch() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPlatformVersion(Version.parse("0.1.0")); assertThat(candidatesFor(projectDescription, PlatformVersionTestConfiguration.class)).isEmpty(); } @Test void outcomeWithNoAvailablePlatformVersion() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); assertThat(candidatesFor(projectDescription, PlatformVersionTestConfiguration.class)).isEmpty(); } @Test void outcomeWithSeveralRangesAndMatchingVersion() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPlatformVersion(Version.parse("2.1.0.RELEASE")); assertThat(candidatesFor(projectDescription, PlatformVersionTestConfiguration.class, OneOrTwoPlatformVersionTestConfiguration.class)).containsOnlyKeys("second", "firstOrSecond"); @@ -82,15 +82,16 @@ class ConditionalOnPlatformVersionTests { @Test void outcomeWithSeveralRangesAndNonMatchingVersion() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.setPlatformVersion(Version.parse("2.0.0.M2")); assertThat(candidatesFor(projectDescription, PlatformVersionTestConfiguration.class, OneOrTwoPlatformVersionTestConfiguration.class)).containsOnlyKeys("second"); } - private Map candidatesFor(ProjectDescription projectDescription, Class... extraConfigurations) { + private Map candidatesFor(MutableProjectDescription projectDescription, + Class... extraConfigurations) { try (ProjectGenerationContext context = new ProjectGenerationContext()) { - context.registerBean(ResolvedProjectDescription.class, projectDescription::resolve); + context.registerBean(ProjectDescription.class, () -> projectDescription); context.register(PlatformVersionTestConfiguration.class); context.register(extraConfigurations); context.refresh(); diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnRequestedDependencyTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnRequestedDependencyTests.java index e64d5b50..2021c2c1 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnRequestedDependencyTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnRequestedDependencyTests.java @@ -19,9 +19,9 @@ package io.spring.initializr.generator.condition; import java.util.function.Consumer; import io.spring.initializr.generator.buildsystem.Dependency; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationContext; -import io.spring.initializr.generator.project.ResolvedProjectDescription; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.Bean; @@ -39,7 +39,7 @@ class ConditionalOnRequestedDependencyTests { @Test void outcomeWithMatchingDependency() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.addDependency("web", mock(Dependency.class)); assertCondition(projectDescription, (context) -> { assertThat(context.getBeansOfType(String.class)).hasSize(1); @@ -49,14 +49,15 @@ class ConditionalOnRequestedDependencyTests { @Test void outcomeWithNoMatch() { - ProjectDescription projectDescription = new ProjectDescription(); + MutableProjectDescription projectDescription = new MutableProjectDescription(); projectDescription.addDependency("another", mock(Dependency.class)); assertCondition(projectDescription, (context) -> assertThat(context.getBeansOfType(String.class)).isEmpty()); } - private void assertCondition(ProjectDescription projectDescription, Consumer context) { + private void assertCondition(MutableProjectDescription projectDescription, + Consumer context) { try (ProjectGenerationContext projectContext = new ProjectGenerationContext()) { - projectContext.registerBean(ResolvedProjectDescription.class, projectDescription::resolve); + projectContext.registerBean(ProjectDescription.class, () -> projectDescription); projectContext.register(RequestedDependencyTestConfiguration.class); projectContext.refresh(); context.accept(projectContext); diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/project/DefaultProjectAssetGeneratorTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/project/DefaultProjectAssetGeneratorTests.java index d71274ef..1d24cb4f 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/project/DefaultProjectAssetGeneratorTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/project/DefaultProjectAssetGeneratorTests.java @@ -39,13 +39,13 @@ class DefaultProjectAssetGeneratorTests { @Test void generationWithExplicitFactoryDoesNotLookupBean(@TempDir Path tempDir) throws IOException { - ResolvedProjectDescription description = new ProjectDescription().resolve(); + ProjectDescription description = new MutableProjectDescription(); ProjectDirectoryFactory factory = mock(ProjectDirectoryFactory.class); Path expected = tempDir.resolve("does-not-exist"); assertThat(expected).doesNotExist(); given(factory.createProjectDirectory(description)).willReturn(expected); try (ProjectGenerationContext context = new ProjectGenerationContext()) { - context.registerBean(ResolvedProjectDescription.class, () -> description); + context.registerBean(ProjectDescription.class, () -> description); context.refresh(); Path rootDir = new DefaultProjectAssetGenerator(factory).generate(context); assertThat(rootDir).isSameAs(expected); @@ -56,13 +56,13 @@ class DefaultProjectAssetGeneratorTests { @Test void generationWithoutExplicitFactoryLookupsBean(@TempDir Path tempDir) throws IOException { - ResolvedProjectDescription description = new ProjectDescription().resolve(); + ProjectDescription description = new MutableProjectDescription(); ProjectDirectoryFactory factory = mock(ProjectDirectoryFactory.class); Path expected = tempDir.resolve("does-not-exist"); assertThat(expected).doesNotExist(); given(factory.createProjectDirectory(description)).willReturn(expected); try (ProjectGenerationContext context = new ProjectGenerationContext()) { - context.registerBean(ResolvedProjectDescription.class, () -> description); + context.registerBean(ProjectDescription.class, () -> description); context.registerBean(ProjectDirectoryFactory.class, () -> factory); context.refresh(); Path rootDir = new DefaultProjectAssetGenerator().generate(context); @@ -74,10 +74,10 @@ class DefaultProjectAssetGeneratorTests { @Test void generationWithoutExplicitFactoryFailIfBeanIsNotPresent() { - ResolvedProjectDescription description = new ProjectDescription().resolve(); + ProjectDescription description = new MutableProjectDescription(); assertThatThrownBy(() -> { try (ProjectGenerationContext context = new ProjectGenerationContext()) { - context.registerBean(ResolvedProjectDescription.class, () -> description); + context.registerBean(ProjectDescription.class, () -> description); context.refresh(); new DefaultProjectAssetGenerator().generate(context); } @@ -87,15 +87,14 @@ class DefaultProjectAssetGeneratorTests { @Test void generationWithBaseDirCreatesBaseDirStructure(@TempDir Path tempDir) throws IOException { - ProjectDescription projectDescription = new ProjectDescription(); - projectDescription.setBaseDirectory("my-project"); - ResolvedProjectDescription description = projectDescription.resolve(); + MutableProjectDescription description = new MutableProjectDescription(); + description.setBaseDirectory("my-project"); ProjectDirectoryFactory factory = mock(ProjectDirectoryFactory.class); Path expected = tempDir.resolve("does-not-exist"); assertThat(expected).doesNotExist(); given(factory.createProjectDirectory(description)).willReturn(expected); try (ProjectGenerationContext context = new ProjectGenerationContext()) { - context.registerBean(ResolvedProjectDescription.class, () -> description); + context.registerBean(ProjectDescription.class, () -> description); context.refresh(); Path rootDir = new DefaultProjectAssetGenerator(factory).generate(context); assertThat(rootDir).isSameAs(expected); diff --git a/initializr-web/src/main/java/io/spring/initializr/web/project/MainController.java b/initializr-web/src/main/java/io/spring/initializr/web/project/MainController.java index 8603d02a..070a16f0 100644 --- a/initializr-web/src/main/java/io/spring/initializr/web/project/MainController.java +++ b/initializr-web/src/main/java/io/spring/initializr/web/project/MainController.java @@ -33,7 +33,7 @@ import java.util.function.Function; import io.spring.initializr.generator.buildsystem.BuildSystem; import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem; import io.spring.initializr.generator.io.template.TemplateRenderer; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.version.Version; import io.spring.initializr.metadata.DependencyMetadata; import io.spring.initializr.metadata.DependencyMetadataProvider; @@ -306,7 +306,7 @@ public class MainController extends AbstractInitializrController { } } - private static String getWrapperScript(ResolvedProjectDescription description) { + private static String getWrapperScript(ProjectDescription description) { BuildSystem buildSystem = description.getBuildSystem(); String script = buildSystem.id().equals(MavenBuildSystem.ID) ? "mvnw" : "gradlew"; return (description.getBaseDirectory() != null) ? description.getBaseDirectory() + "/" + script : script; diff --git a/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectGenerationInvoker.java b/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectGenerationInvoker.java index 25b9ddaf..8ad1e88f 100644 --- a/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectGenerationInvoker.java +++ b/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectGenerationInvoker.java @@ -32,7 +32,6 @@ import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationContext; import io.spring.initializr.generator.project.ProjectGenerationException; import io.spring.initializr.generator.project.ProjectGenerator; -import io.spring.initializr.generator.project.ResolvedProjectDescription; import io.spring.initializr.metadata.InitializrMetadata; import io.spring.initializr.metadata.InitializrMetadataProvider; import io.spring.initializr.metadata.support.MetadataBuildItemResolver; @@ -91,7 +90,7 @@ public class ProjectGenerationInvoker { return (context) -> { Path projectDir = new DefaultProjectAssetGenerator().generate(context); publishProjectGeneratedEvent(request, context); - return new ProjectGenerationResult(context.getBean(ResolvedProjectDescription.class), projectDir); + return new ProjectGenerationResult(context.getBean(ProjectDescription.class), projectDir); }; } @@ -161,7 +160,7 @@ public class ProjectGenerationInvoker { } private byte[] generateBuild(ProjectGenerationContext context) throws IOException { - ResolvedProjectDescription projectDescription = context.getBean(ResolvedProjectDescription.class); + ProjectDescription projectDescription = context.getBean(ProjectDescription.class); StringWriter out = new StringWriter(); BuildWriter buildWriter = context.getBeanProvider(BuildWriter.class).getIfAvailable(); if (buildWriter != null) { @@ -179,7 +178,7 @@ public class ProjectGenerationInvoker { context.setParent(this.parentApplicationContext); context.registerBean(InitializrMetadata.class, () -> metadata); context.registerBean(BuildItemResolver.class, () -> new MetadataBuildItemResolver(metadata, - context.getBean(ResolvedProjectDescription.class).getPlatformVersion())); + context.getBean(ProjectDescription.class).getPlatformVersion())); } private void publishProjectGeneratedEvent(ProjectRequest request, ProjectGenerationContext context) { diff --git a/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectGenerationResult.java b/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectGenerationResult.java index 8e8f3209..b0b4c38e 100644 --- a/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectGenerationResult.java +++ b/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectGenerationResult.java @@ -18,7 +18,7 @@ package io.spring.initializr.web.project; import java.nio.file.Path; -import io.spring.initializr.generator.project.ResolvedProjectDescription; +import io.spring.initializr.generator.project.ProjectDescription; /** * Result of project generation. @@ -27,28 +27,27 @@ import io.spring.initializr.generator.project.ResolvedProjectDescription; */ public class ProjectGenerationResult { - private final ResolvedProjectDescription projectDescription; + private final ProjectDescription projectDescription; private final Path rootDirectory; - ProjectGenerationResult(ResolvedProjectDescription projectDescription, Path rootDirectory) { + ProjectGenerationResult(ProjectDescription projectDescription, Path rootDirectory) { this.projectDescription = projectDescription; this.rootDirectory = rootDirectory; } /** - * Return the {@link ResolvedProjectDescription} that was used to generate the - * project. + * Return the {@link ProjectDescription} that was used to generate the project. * @return the project description */ - public ResolvedProjectDescription getProjectDescription() { + public ProjectDescription getProjectDescription() { return this.projectDescription; } /** * Return the root directory. * @return the root directory - * @see ResolvedProjectDescription#getBaseDirectory() + * @see ProjectDescription#getBaseDirectory() */ public Path getRootDirectory() { return this.rootDirectory; diff --git a/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectRequestToDescriptionConverter.java b/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectRequestToDescriptionConverter.java index 03da1d1f..b5ee01dd 100644 --- a/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectRequestToDescriptionConverter.java +++ b/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectRequestToDescriptionConverter.java @@ -23,6 +23,7 @@ import java.util.stream.Collectors; import io.spring.initializr.generator.buildsystem.BuildSystem; import io.spring.initializr.generator.language.Language; import io.spring.initializr.generator.packaging.Packaging; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.version.Version; import io.spring.initializr.metadata.DefaultMetadataElement; @@ -50,7 +51,7 @@ public class ProjectRequestToDescriptionConverter { String springBootVersion = getSpringBootVersion(request, metadata); List resolvedDependencies = getResolvedDependencies(request, springBootVersion, metadata); validateDependencyRange(springBootVersion, resolvedDependencies); - ProjectDescription description = new ProjectDescription(); + MutableProjectDescription description = new MutableProjectDescription(); description.setApplicationName(getApplicationName(request, metadata)); description.setArtifactId(getArtifactId(request, metadata)); description.setBaseDirectory(getBaseDirectory(request.getBaseDir(), request.getArtifactId())); diff --git a/initializr-web/src/test/java/io/spring/initializr/web/project/ProjectGenerationDescriptionCustomizerTests.java b/initializr-web/src/test/java/io/spring/initializr/web/project/ProjectGenerationDescriptionCustomizerTests.java index 9647d649..dd815234 100755 --- a/initializr-web/src/test/java/io/spring/initializr/web/project/ProjectGenerationDescriptionCustomizerTests.java +++ b/initializr-web/src/test/java/io/spring/initializr/web/project/ProjectGenerationDescriptionCustomizerTests.java @@ -17,7 +17,7 @@ package io.spring.initializr.web.project; import io.spring.initializr.generator.language.java.JavaLanguage; -import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.project.MutableProjectDescription; import io.spring.initializr.generator.project.ProjectDescriptionCustomizer; import io.spring.initializr.generator.test.project.ProjectStructure; import io.spring.initializr.generator.version.Version; @@ -52,7 +52,7 @@ class ProjectGenerationDescriptionCustomizerTests extends AbstractInitializrCont ProjectDescriptionCustomizer secondPostProcessor() { return new ProjectDescriptionCustomizer() { @Override - public void customize(ProjectDescription description) { + public void customize(MutableProjectDescription description) { description.setLanguage(new JavaLanguage("1.7")); } @@ -67,7 +67,7 @@ class ProjectGenerationDescriptionCustomizerTests extends AbstractInitializrCont ProjectDescriptionCustomizer firstPostProcessor() { return new ProjectDescriptionCustomizer() { @Override - public void customize(ProjectDescription description) { + public void customize(MutableProjectDescription description) { description.setLanguage(new JavaLanguage("1.2")); description.setPlatformVersion(Version.parse("2.2.3.RELEASE")); }