mirror of
https://gitee.com/dcren/initializr.git
synced 2026-09-27 23:07:39 +08:00
Handle Unicode in Project Generation
This commit replaces characters with accents with their US-ascii counterpart. See gh-1345
This commit is contained in:
committed by
Stephane Nicoll
parent
39208e3cb0
commit
7b204b1704
+14
-4
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package io.spring.initializr.web.project;
|
package io.spring.initializr.web.project;
|
||||||
|
|
||||||
|
import java.text.Normalizer;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -34,6 +35,7 @@ import io.spring.initializr.metadata.Type;
|
|||||||
import io.spring.initializr.metadata.support.MetadataBuildItemMapper;
|
import io.spring.initializr.metadata.support.MetadataBuildItemMapper;
|
||||||
|
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A default {@link ProjectRequestToDescriptionConverter} implementation that uses the
|
* A default {@link ProjectRequestToDescriptionConverter} implementation that uses the
|
||||||
@@ -44,6 +46,7 @@ import org.springframework.util.Assert;
|
|||||||
* @author Madhura Bhave
|
* @author Madhura Bhave
|
||||||
* @author HaiTao Zhang
|
* @author HaiTao Zhang
|
||||||
* @author Stephane Nicoll
|
* @author Stephane Nicoll
|
||||||
|
* @author Nirbhay Mishra
|
||||||
*/
|
*/
|
||||||
public class DefaultProjectRequestToDescriptionConverter
|
public class DefaultProjectRequestToDescriptionConverter
|
||||||
implements ProjectRequestToDescriptionConverter<ProjectRequest> {
|
implements ProjectRequestToDescriptionConverter<ProjectRequest> {
|
||||||
@@ -82,14 +85,14 @@ public class DefaultProjectRequestToDescriptionConverter
|
|||||||
validateDependencyRange(platformVersion, resolvedDependencies);
|
validateDependencyRange(platformVersion, resolvedDependencies);
|
||||||
|
|
||||||
description.setApplicationName(request.getApplicationName());
|
description.setApplicationName(request.getApplicationName());
|
||||||
description.setArtifactId(request.getArtifactId());
|
description.setArtifactId(cleanInputValue(request.getArtifactId()));
|
||||||
description.setBaseDirectory(request.getBaseDir());
|
description.setBaseDirectory(request.getBaseDir());
|
||||||
description.setBuildSystem(getBuildSystem(request, metadata));
|
description.setBuildSystem(getBuildSystem(request, metadata));
|
||||||
description.setDescription(request.getDescription());
|
description.setDescription(request.getDescription());
|
||||||
description.setGroupId(request.getGroupId());
|
description.setGroupId(cleanInputValue(request.getGroupId()));
|
||||||
description.setLanguage(Language.forId(request.getLanguage(), request.getJavaVersion()));
|
description.setLanguage(Language.forId(request.getLanguage(), request.getJavaVersion()));
|
||||||
description.setName(request.getName());
|
description.setName(cleanInputValue(request.getName()));
|
||||||
description.setPackageName(request.getPackageName());
|
description.setPackageName(cleanInputValue(request.getPackageName()));
|
||||||
description.setPackaging(Packaging.forId(request.getPackaging()));
|
description.setPackaging(Packaging.forId(request.getPackaging()));
|
||||||
description.setPlatformVersion(platformVersion);
|
description.setPlatformVersion(platformVersion);
|
||||||
description.setVersion(request.getVersion());
|
description.setVersion(request.getVersion());
|
||||||
@@ -188,4 +191,11 @@ 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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+6
@@ -36,4 +36,10 @@ 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"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user