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
This commit is contained in:
Stephane Nicoll 2019-02-14 09:53:39 +01:00
parent 8660fedd0b
commit 75307eab0f
2 changed files with 70 additions and 4 deletions

View File

@ -17,6 +17,7 @@
package io.spring.initializr.web.project; package io.spring.initializr.web.project;
import java.util.List; import java.util.List;
import java.util.function.Supplier;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import io.spring.initializr.generator.buildsystem.BuildSystem; import io.spring.initializr.generator.buildsystem.BuildSystem;
@ -50,14 +51,18 @@ public class ProjectRequestToDescriptionConverter {
validateDependencyRange(springBootVersion, resolvedDependencies); validateDependencyRange(springBootVersion, resolvedDependencies);
ProjectDescription description = new ProjectDescription(); ProjectDescription description = new ProjectDescription();
description.setApplicationName(getApplicationName(request, metadata)); description.setApplicationName(getApplicationName(request, metadata));
description.setArtifactId(request.getArtifactId()); description.setArtifactId(determineValue(request.getArtifactId(),
() -> metadata.getArtifactId().getContent()));
description.setBaseDirectory(request.getBaseDir()); description.setBaseDirectory(request.getBaseDir());
description.setBuildSystem(getBuildSystem(request, metadata)); description.setBuildSystem(getBuildSystem(request, metadata));
description.setDescription(request.getDescription()); description.setDescription(determineValue(request.getDescription(),
description.setGroupId(request.getGroupId()); () -> metadata.getDescription().getContent()));
description.setGroupId(determineValue(request.getGroupId(),
() -> metadata.getGroupId().getContent()));
description.setLanguage( description.setLanguage(
Language.forId(request.getLanguage(), request.getJavaVersion())); Language.forId(request.getLanguage(), request.getJavaVersion()));
description.setName(request.getName()); description.setName(
determineValue(request.getName(), () -> metadata.getName().getContent()));
description.setPackageName(getPackageName(request, metadata)); description.setPackageName(getPackageName(request, metadata));
description.setPackaging(Packaging.forId(request.getPackaging())); description.setPackaging(Packaging.forId(request.getPackaging()));
description.setPlatformVersion(Version.parse(springBootVersion)); description.setPlatformVersion(Version.parse(springBootVersion));
@ -67,6 +72,10 @@ public class ProjectRequestToDescriptionConverter {
return description; return description;
} }
private String determineValue(String candidate, Supplier<String> fallback) {
return (StringUtils.hasText(candidate)) ? candidate : fallback.get();
}
private void validate(ProjectRequest request, InitializrMetadata metadata) { private void validate(ProjectRequest request, InitializrMetadata metadata) {
validateSpringBootVersion(request); validateSpringBootVersion(request);
validateType(request.getType(), metadata); validateType(request.getType(), metadata);

View File

@ -205,6 +205,63 @@ public class ProjectRequestToDescriptionConverterTests {
assertThat(description.getLanguage().jvmVersion()).isEqualTo("1.8"); 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() { private ProjectRequest createProjectRequest() {
WebProjectRequest request = new WebProjectRequest(); WebProjectRequest request = new WebProjectRequest();
request.initialize(this.metadata); request.initialize(this.metadata);