Skip to content

Commit 15cc065

Browse files
committed
Sync with underscore-java.
1 parent 65cb3a6 commit 15cc065

File tree

5 files changed

+1689
-0
lines changed

5 files changed

+1689
-0
lines changed

src/main/java/com/github/underscore/U.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2581,6 +2581,10 @@ public static String jsonToXml(
25812581
return Xml.toXml((List) object, identStep);
25822582
}
25832583

2584+
public static String jsonToXml(String json, Xml.XmlStringBuilder.Step identStep) {
2585+
return jsonToXml(json, identStep, null, ROOT);
2586+
}
2587+
25842588
public static String jsonToXml(String json, Mode mode) {
25852589
return jsonToXml(json, Xml.XmlStringBuilder.Step.TWO_SPACES, mode, ROOT);
25862590
}
@@ -2635,6 +2639,10 @@ public static String xmlToJson(String xml) {
26352639
return xmlToJson(xml, Json.JsonStringBuilder.Step.TWO_SPACES, null);
26362640
}
26372641

2642+
public static String xmlToJson(String xml, Json.JsonStringBuilder.Step identStep) {
2643+
return xmlToJson(xml, identStep, null);
2644+
}
2645+
26382646
public static String xmlToJson(String xml, Mode mode) {
26392647
return xmlToJson(xml, Json.JsonStringBuilder.Step.TWO_SPACES, mode);
26402648
}

src/test/java/com/github/underscore/LodashTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,16 @@ void xmlToJson() {
654654
+ " \"#omit-xml-declaration\": \"yes\"\n"
655655
+ "}",
656656
U.xmlToJson("<root><element>1</element><element>2</element></root>"));
657+
assertEquals(
658+
"{\n"
659+
+ " \"root\": [\n"
660+
+ " \"1\",\n"
661+
+ " \"2\"\n"
662+
+ " ],\n"
663+
+ " \"#omit-xml-declaration\": \"yes\"\n"
664+
+ "}",
665+
U.xmlToJson("<root><element>1</element><element>2</element></root>",
666+
Json.JsonStringBuilder.Step.TWO_SPACES));
657667
assertEquals(
658668
"{\n"
659669
+ " \"root\": [\n"
@@ -917,6 +927,9 @@ void jsonToXml() {
917927
assertEquals(
918928
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<a></a>",
919929
U.jsonToXml("{\n \"a\": {\n }\n}"));
930+
assertEquals(
931+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<a></a>",
932+
U.jsonToXml("{\n \"a\": {\n }\n}", Xml.XmlStringBuilder.Step.TWO_SPACES));
920933
assertEquals(
921934
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<a></a>",
922935
U.chain("{\n \"a\": {\n }\n}").jsonToXml().item());

src/test/java/com/github/underscore/StringTest.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@
3232

3333
import com.github.underscore.Json.JsonStringBuilder;
3434
import com.github.underscore.Xml.XmlStringBuilder;
35+
36+
import java.io.IOException;
37+
import java.nio.file.Files;
38+
import java.nio.file.Paths;
3539
import java.util.ArrayList;
3640
import java.util.Arrays;
3741
import java.util.Collection;
@@ -3424,6 +3428,26 @@ void fromJsonMap() {
34243428
assertEquals("{}", U.fromJsonMap(stringJson2).toString());
34253429
}
34263430

3431+
@Test
3432+
void fromJsonStackoverflowObject() throws IOException {
3433+
String stringJson = new String(Files.readAllBytes(Paths.get("src/test/resources/wellFormedObject.json")));
3434+
try {
3435+
U.fromJsonMap(stringJson);
3436+
} catch (Throwable throwable) {
3437+
assertTrue(throwable instanceof StackOverflowError);
3438+
}
3439+
}
3440+
3441+
@Test
3442+
void fromJsonStackoverflowArray() throws IOException {
3443+
String stringJson = new String(Files.readAllBytes(Paths.get("src/test/resources/wellFormedArray.json")));
3444+
try {
3445+
U.fromJsonMap(stringJson);
3446+
} catch (Throwable throwable) {
3447+
assertTrue(throwable instanceof StackOverflowError);
3448+
}
3449+
}
3450+
34273451
@Test
34283452
void testDecodeParseXmlErr13() {
34293453
assertThrows(IllegalArgumentException.class, () -> U.fromXml("[\"abc\u0010\"]"));

0 commit comments

Comments
 (0)