mirror of
https://gitee.com/dcren/initializr.git
synced 2025-07-17 01:46:19 +08:00
Polish "Handle Unicode in Project Generation"
See gh-1345
This commit is contained in:
parent
7b204b1704
commit
ade3b0af9e
@ -100,6 +100,16 @@ public class DefaultProjectRequestToDescriptionConverter
|
|||||||
MetadataBuildItemMapper.toDependency(dependency)));
|
MetadataBuildItemMapper.toDependency(dependency)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clean input value to rely on US-ascii character as much as possible.
|
||||||
|
* @param value the input value to clean
|
||||||
|
* @return a value that can be used as part of an identifier
|
||||||
|
*/
|
||||||
|
protected String cleanInputValue(String value) {
|
||||||
|
return StringUtils.hasText(value) ? Normalizer.normalize(value, Normalizer.Form.NFKD).replaceAll("\\p{M}", "")
|
||||||
|
: value;
|
||||||
|
}
|
||||||
|
|
||||||
private void validate(ProjectRequest request, InitializrMetadata metadata) {
|
private void validate(ProjectRequest request, InitializrMetadata metadata) {
|
||||||
validatePlatformVersion(request, metadata);
|
validatePlatformVersion(request, metadata);
|
||||||
validateType(request.getType(), metadata);
|
validateType(request.getType(), metadata);
|
||||||
@ -191,11 +201,4 @@ public class DefaultProjectRequestToDescriptionConverter
|
|||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
private String cleanInputValue(String inputString) {
|
|
||||||
if (StringUtils.hasText(inputString)) {
|
|
||||||
return Normalizer.normalize(inputString, Normalizer.Form.NFKD).replaceAll("\\p{M}", "");
|
|
||||||
}
|
|
||||||
return inputString;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -36,10 +36,4 @@ public class ProjectGenerationControllerArchiveIntegrationTests extends Abstract
|
|||||||
assertDefaultProject(project.resolveModule("demo trial"));
|
assertDefaultProject(project.resolveModule("demo trial"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
void projectNameWithAccentRemoved() {
|
|
||||||
ProjectStructure project = downloadZip("/starter.zip?artifactId=demo&baseDir=demo trial&name=Demö");
|
|
||||||
assertDefaultProject(project.resolveModule("demo trial"));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,38 @@ class DefaultProjectRequestToDescriptionConverterTests {
|
|||||||
|
|
||||||
private final DefaultProjectRequestToDescriptionConverter converter = new DefaultProjectRequestToDescriptionConverter();
|
private final DefaultProjectRequestToDescriptionConverter converter = new DefaultProjectRequestToDescriptionConverter();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void convertWhenArtifactIdHasAccentCleanValue() {
|
||||||
|
ProjectRequest request = createProjectRequest();
|
||||||
|
request.setArtifactId("tëst-âpp");
|
||||||
|
ProjectDescription description = this.converter.convert(request, this.metadata);
|
||||||
|
assertThat(description.getArtifactId()).isEqualTo("test-app");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void convertWhenGroupIdHasAccentCleanValue() {
|
||||||
|
ProjectRequest request = createProjectRequest();
|
||||||
|
request.setGroupId("com.êxample.äpp");
|
||||||
|
ProjectDescription description = this.converter.convert(request, this.metadata);
|
||||||
|
assertThat(description.getGroupId()).isEqualTo("com.example.app");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void convertWhenNameHasAccentCleanValue() {
|
||||||
|
ProjectRequest request = createProjectRequest();
|
||||||
|
request.setName("My Demö");
|
||||||
|
ProjectDescription description = this.converter.convert(request, this.metadata);
|
||||||
|
assertThat(description.getName()).isEqualTo("My Demo");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void convertWhenPackageNameHasAccentCleanValue() {
|
||||||
|
ProjectRequest request = createProjectRequest();
|
||||||
|
request.setPackageName("com.êxample.äpp");
|
||||||
|
ProjectDescription description = this.converter.convert(request, this.metadata);
|
||||||
|
assertThat(description.getPackageName()).isEqualTo("com.example.app");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void convertWhenTypeIsInvalidShouldThrowException() {
|
void convertWhenTypeIsInvalidShouldThrowException() {
|
||||||
ProjectRequest request = createProjectRequest();
|
ProjectRequest request = createProjectRequest();
|
||||||
|
Loading…
Reference in New Issue
Block a user