mirror of
https://gitee.com/dcren/initializr.git
synced 2025-04-05 17:38:06 +08:00
Polish "Encode usual XML reserved characters"
See gh-1073
This commit is contained in:
parent
0cdf11e467
commit
ac9da18440
@ -486,7 +486,7 @@ public class MavenBuildWriter {
|
|||||||
private void writeSingleElement(IndentingWriter writer, String name, String text) {
|
private void writeSingleElement(IndentingWriter writer, String name, String text) {
|
||||||
if (text != null) {
|
if (text != null) {
|
||||||
writer.print(String.format("<%s>", name));
|
writer.print(String.format("<%s>", name));
|
||||||
writer.print(escapeString(text));
|
writer.print(encodeText(text));
|
||||||
writer.println(String.format("</%s>", name));
|
writer.println(String.format("</%s>", name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -516,32 +516,31 @@ public class MavenBuildWriter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String escapeString(String inputString) {
|
private String encodeText(String text) {
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
for (int i = 0; i < inputString.length(); i++) {
|
for (int i = 0; i < text.length(); i++) {
|
||||||
char character = inputString.charAt(i);
|
char character = text.charAt(i);
|
||||||
switch (character) {
|
switch (character) {
|
||||||
case '\'':
|
case '\'':
|
||||||
stringBuilder.append("'");
|
sb.append("'");
|
||||||
break;
|
break;
|
||||||
case '\"':
|
case '\"':
|
||||||
stringBuilder.append(""");
|
sb.append(""");
|
||||||
break;
|
break;
|
||||||
case '<':
|
case '<':
|
||||||
stringBuilder.append("<");
|
sb.append("<");
|
||||||
break;
|
break;
|
||||||
case '>':
|
case '>':
|
||||||
stringBuilder.append(">");
|
sb.append(">");
|
||||||
break;
|
break;
|
||||||
case '&':
|
case '&':
|
||||||
stringBuilder.append("&");
|
sb.append("&");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
stringBuilder.append(character);
|
sb.append(character);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return sb.toString();
|
||||||
return stringBuilder.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -818,38 +818,24 @@ class MavenBuildWriterTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void pomWithEscapedCharacters() {
|
void pomWithReservedCharacters() {
|
||||||
MavenBuild build = new MavenBuild();
|
MavenBuild build = new MavenBuild();
|
||||||
build.settings().coordinates("com.example.demo", "demo").name("<demo project>")
|
build.settings().coordinates("com.example.demo", "demo").name("<demo project>")
|
||||||
.description("A \"demo\" project for 'developers' & 'testers'");
|
.description("A \"demo\" project for 'developers' & 'testers'");
|
||||||
|
String pom = writePom(build);
|
||||||
generatePomString(build, (pomString) -> {
|
assertThat(pom).contains("<name><demo project></name>").contains(
|
||||||
String separator = System.lineSeparator();
|
"<description>A "demo" project for 'developers' & 'testers'</description>");
|
||||||
assertThat(pomString).isEqualTo("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + separator
|
|
||||||
+ "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
|
|
||||||
+ separator
|
|
||||||
+ " xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\">"
|
|
||||||
+ separator + " <modelVersion>4.0.0</modelVersion>" + separator
|
|
||||||
+ " <groupId>com.example.demo</groupId>" + separator + " <artifactId>demo</artifactId>"
|
|
||||||
+ separator + " <version>0.0.1-SNAPSHOT</version>" + separator
|
|
||||||
+ " <name><demo project></name>" + separator
|
|
||||||
+ " <description>A "demo" project for 'developers' & 'testers'</description>"
|
|
||||||
+ separator + separator + "</project>" + separator);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void generatePom(MavenBuild mavenBuild, Consumer<NodeAssert> consumer) {
|
private void generatePom(MavenBuild mavenBuild, Consumer<NodeAssert> consumer) {
|
||||||
MavenBuildWriter writer = new MavenBuildWriter();
|
consumer.accept(new NodeAssert(writePom(mavenBuild)));
|
||||||
StringWriter out = new StringWriter();
|
|
||||||
writer.writeTo(new IndentingWriter(out), mavenBuild);
|
|
||||||
consumer.accept(new NodeAssert(out.toString()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void generatePomString(MavenBuild mavenBuild, Consumer<String> consumer) {
|
private String writePom(MavenBuild mavenBuild) {
|
||||||
MavenBuildWriter writer = new MavenBuildWriter();
|
MavenBuildWriter writer = new MavenBuildWriter();
|
||||||
StringWriter out = new StringWriter();
|
StringWriter out = new StringWriter();
|
||||||
writer.writeTo(new IndentingWriter(out), mavenBuild);
|
writer.writeTo(new IndentingWriter(out), mavenBuild);
|
||||||
consumer.accept(out.toString());
|
return out.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user