mirror of
https://gitee.com/dcren/initializr.git
synced 2025-09-19 10:08:22 +08:00
Migrate ProjectDescription to an interface
This commit migrates ProjectDescription to an interface with read-only accessors and create a MutableProjectDescription implementation that can be used for both purposes. As a result, the type separation between ResolvedProjectDescription and ProjectDescription is no longer necessary. Closes gh-993
This commit is contained in:
@@ -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;
|
||||
|
@@ -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) {
|
||||
|
@@ -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;
|
||||
|
@@ -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<Dependency> 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()));
|
||||
|
@@ -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"));
|
||||
}
|
||||
|
Reference in New Issue
Block a user