From 75307eab0f159a38977bd88ab30b2de2fcf99abe Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Thu, 14 Feb 2019 09:53:39 +0100 Subject: [PATCH] Map whitespace input to default value This commit checks if a request for any of the text capability is set with only whitespaces and replaces it with the metadata default counterpart. Closes gh-769 --- .../ProjectRequestToDescriptionConverter.java | 17 ++++-- ...ectRequestToDescriptionConverterTests.java | 57 +++++++++++++++++++ 2 files changed, 70 insertions(+), 4 deletions(-) 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 253deffa..638dabf6 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 @@ -17,6 +17,7 @@ package io.spring.initializr.web.project; import java.util.List; +import java.util.function.Supplier; import java.util.stream.Collectors; import io.spring.initializr.generator.buildsystem.BuildSystem; @@ -50,14 +51,18 @@ public class ProjectRequestToDescriptionConverter { validateDependencyRange(springBootVersion, resolvedDependencies); ProjectDescription description = new ProjectDescription(); description.setApplicationName(getApplicationName(request, metadata)); - description.setArtifactId(request.getArtifactId()); + description.setArtifactId(determineValue(request.getArtifactId(), + () -> metadata.getArtifactId().getContent())); description.setBaseDirectory(request.getBaseDir()); description.setBuildSystem(getBuildSystem(request, metadata)); - description.setDescription(request.getDescription()); - description.setGroupId(request.getGroupId()); + description.setDescription(determineValue(request.getDescription(), + () -> metadata.getDescription().getContent())); + description.setGroupId(determineValue(request.getGroupId(), + () -> metadata.getGroupId().getContent())); description.setLanguage( Language.forId(request.getLanguage(), request.getJavaVersion())); - description.setName(request.getName()); + description.setName( + determineValue(request.getName(), () -> metadata.getName().getContent())); description.setPackageName(getPackageName(request, metadata)); description.setPackaging(Packaging.forId(request.getPackaging())); description.setPlatformVersion(Version.parse(springBootVersion)); @@ -67,6 +72,10 @@ public class ProjectRequestToDescriptionConverter { return description; } + private String determineValue(String candidate, Supplier fallback) { + return (StringUtils.hasText(candidate)) ? candidate : fallback.get(); + } + private void validate(ProjectRequest request, InitializrMetadata metadata) { validateSpringBootVersion(request); validateType(request.getType(), metadata); diff --git a/initializr-web/src/test/java/io/spring/initializr/web/project/ProjectRequestToDescriptionConverterTests.java b/initializr-web/src/test/java/io/spring/initializr/web/project/ProjectRequestToDescriptionConverterTests.java index 7fce0dc7..0e8ad768 100644 --- a/initializr-web/src/test/java/io/spring/initializr/web/project/ProjectRequestToDescriptionConverterTests.java +++ b/initializr-web/src/test/java/io/spring/initializr/web/project/ProjectRequestToDescriptionConverterTests.java @@ -205,6 +205,63 @@ public class ProjectRequestToDescriptionConverterTests { assertThat(description.getLanguage().jvmVersion()).isEqualTo("1.8"); } + @Test + void convertShouldUsedDefaultFromMetadataOnEmptyGroup() { + ProjectRequest request = createProjectRequest(); + request.setGroupId(" "); + ProjectDescription description = this.converter.convert(request, this.metadata); + assertThat(description.getGroupId()).isEqualTo("com.example"); + } + + @Test + void convertShouldUsedDefaultFromMetadataOnEmptyArtifact() { + ProjectRequest request = createProjectRequest(); + request.setArtifactId(""); + ProjectDescription description = this.converter.convert(request, this.metadata); + assertThat(description.getArtifactId()).isEqualTo("demo"); + } + + @Test + void convertShouldUsedDefaultFromMetadataOnEmptyName() { + ProjectRequest request = createProjectRequest(); + request.setName(" "); + ProjectDescription description = this.converter.convert(request, this.metadata); + assertThat(description.getName()).isEqualTo("demo"); + } + + @Test + void convertShouldUsedDefaultFromMetadataOnEmptyDescription() { + ProjectRequest request = createProjectRequest(); + request.setDescription(" "); + ProjectDescription description = this.converter.convert(request, this.metadata); + assertThat(description.getDescription()) + .isEqualTo("Demo project for Spring Boot"); + } + + @Test + void convertShouldUsedDefaultFromMetadataOnEmptyPackageName() { + ProjectRequest request = createProjectRequest(); + request.setPackageName(" "); + ProjectDescription description = this.converter.convert(request, this.metadata); + assertThat(description.getPackageName()).isEqualTo("com.example.demo"); + } + + @Test + void convertShouldUsedDefaultFromMetadataWhenGeneratingPackageNameWithEmptyGroup() { + ProjectRequest request = createProjectRequest(); + request.setGroupId(" "); + ProjectDescription description = this.converter.convert(request, this.metadata); + assertThat(description.getPackageName()).isEqualTo("com.example.demo"); + } + + @Test + void convertShouldUsedDefaultFromMetadataWhenGeneratingPackageNameWithEmptyArtifact() { + ProjectRequest request = createProjectRequest(); + request.setArtifactId(" "); + ProjectDescription description = this.converter.convert(request, this.metadata); + assertThat(description.getPackageName()).isEqualTo("com.example.demo"); + } + private ProjectRequest createProjectRequest() { WebProjectRequest request = new WebProjectRequest(); request.initialize(this.metadata);