Skip to content

Commit c934da9

Browse files
committed
Sync with underscore-java.
1 parent 5e9d043 commit c934da9

File tree

6 files changed

+77
-49
lines changed

6 files changed

+77
-49
lines changed

src/main/java/com/github/underscore/lodash/Json.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -904,6 +904,6 @@ public static String formatJson(String json, JsonStringBuilder.Step identStep) {
904904
}
905905

906906
public static String formatJson(String json) {
907-
return formatJson(json, JsonStringBuilder.Step.THREE_SPACES);
907+
return formatJson(json, JsonStringBuilder.Step.TWO_SPACES);
908908
}
909909
}

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

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ public enum Mode {
113113
REPLACE_EMPTY_TAG_WITH_EMPTY_STRING,
114114
FORCE_ATTRIBUTE_USAGE,
115115
DEFINE_ROOT_NAME,
116-
FORCE_ATTRIBUTE_USAGE_AND_DEFINE_ROOT_NAME,
117116
REPLACE_NULL_WITH_EMPTY_VALUE,
118117
REPLACE_EMPTY_STRING_WITH_EMPTY_VALUE,
119118
REMOVE_FIRST_LEVEL_XML_TO_JSON,
@@ -212,7 +211,6 @@ public Chain<T> compact(final T falsyValue) {
212211
}
213212

214213
@Override
215-
@SuppressWarnings("unchecked")
216214
public Chain flatten() {
217215
return new Chain<>(Underscore.flatten(value()));
218216
}
@@ -967,9 +965,7 @@ public static <T> List<T> fill(List<T> list, T item) {
967965
}
968966

969967
public static <T> T[] fill(T[] array, T item) {
970-
for (int i = 0; i < array.length; i++) {
971-
array[i] = item;
972-
}
968+
Arrays.fill(array, item);
973969
return array;
974970
}
975971

@@ -1764,7 +1760,6 @@ public static <T> T remove(final Map<String, Object> object, final String path)
17641760
return baseGetOrSetOrRemove(object, path, null, OperationType.REMOVE);
17651761
}
17661762

1767-
@SuppressWarnings("unchecked")
17681763
public static Map<String, Object> rename(
17691764
final Map<String, Object> map, final String oldKey, final String newKey) {
17701765
Map<String, Object> outMap = newLinkedHashMap();
@@ -1843,7 +1838,6 @@ private static Object makeObjectForSetValue(
18431838
return result;
18441839
}
18451840

1846-
@SuppressWarnings("unchecked")
18471841
public static Map<String, Object> update(
18481842
final Map<String, Object> map1, final Map<String, Object> map2) {
18491843
Map<String, Object> outMap = newLinkedHashMap();
@@ -2364,7 +2358,6 @@ public static Map<String, Object> fromXmlMap(final String xml) {
23642358
return fromXmlMap(xml, Xml.FromType.FOR_CONVERT);
23652359
}
23662360

2367-
@SuppressWarnings("unchecked")
23682361
public static Map<String, Object> fromXmlMap(final String xml, final Xml.FromType fromType) {
23692362
final Object object = Xml.fromXml(xml, fromType);
23702363
return getStringObjectMap(object);
@@ -2412,7 +2405,6 @@ public Object fromJson() {
24122405
return Json.fromJson(getString().get());
24132406
}
24142407

2415-
@SuppressWarnings("unchecked")
24162408
public static Map<String, Object> fromJsonMap(final String string) {
24172409
final Object object = Json.fromJson(string);
24182410
return getStringObjectMap(object);
@@ -2445,11 +2437,9 @@ public static String jsonToXml(
24452437
final String result;
24462438
if (object instanceof Map) {
24472439
if (mode == Mode.FORCE_ATTRIBUTE_USAGE) {
2448-
result = Xml.toXml(forceAttributeUsage((Map) object), identStep);
2440+
result = Xml.toXml(forceAttributeUsage((Map) object), identStep, newRootName);
24492441
} else if (mode == Mode.DEFINE_ROOT_NAME) {
24502442
result = Xml.toXml((Map) object, identStep, newRootName);
2451-
} else if (mode == Mode.FORCE_ATTRIBUTE_USAGE_AND_DEFINE_ROOT_NAME) {
2452-
result = Xml.toXml(forceAttributeUsage((Map) object), identStep, newRootName);
24532443
} else if (mode == Mode.REPLACE_NULL_WITH_EMPTY_VALUE) {
24542444
result = Xml.toXml(replaceNullWithEmptyValue((Map) object), identStep, newRootName);
24552445
} else if (mode == Mode.REPLACE_EMPTY_STRING_WITH_EMPTY_VALUE) {
@@ -2461,7 +2451,7 @@ public static String jsonToXml(
24612451
} else if (mode == Mode.FORCE_ADD_ROOT_JSON_TO_XML
24622452
&& !Xml.XmlValue.getMapKey(object).equals(ROOT)) {
24632453
final Map<String, Object> map = U.newLinkedHashMap();
2464-
map.put(Underscore.isNull(newRootName) ? ROOT : newRootName, object);
2454+
map.put(newRootName, object);
24652455
result = Xml.toXml(map, identStep);
24662456
} else {
24672457
result = Xml.toXml((Map) object, identStep);
@@ -2472,7 +2462,7 @@ public static String jsonToXml(
24722462
}
24732463

24742464
public static String jsonToXml(String json, Mode mode) {
2475-
return jsonToXml(json, Xml.XmlStringBuilder.Step.TWO_SPACES, mode, null);
2465+
return jsonToXml(json, Xml.XmlStringBuilder.Step.TWO_SPACES, mode, ROOT);
24762466
}
24772467

24782468
public static String jsonToXml(String json, Mode mode, String newRootName) {
@@ -2672,7 +2662,6 @@ private static Object makeObjectSelfClose(Object value, String newValue) {
26722662
return result;
26732663
}
26742664

2675-
@SuppressWarnings("unchecked")
26762665
public static Map<String, Object> replaceEmptyValueWithNull(Map<String, Object> map) {
26772666
if (map == null || map.isEmpty()) {
26782667
return null;
@@ -2701,7 +2690,6 @@ private static Object makeObjectEmptyValue(Object value) {
27012690
return result;
27022691
}
27032692

2704-
@SuppressWarnings("unchecked")
27052693
public static Object replaceEmptyValueWithEmptyString(Map<String, Object> map) {
27062694
if (map.isEmpty()) {
27072695
return "";
@@ -2731,7 +2719,6 @@ private static Object makeObjectEmptyString(Object value) {
27312719
return result;
27322720
}
27332721

2734-
@SuppressWarnings("unchecked")
27352722
public static Map<String, Object> forceAttributeUsage(Map<String, Object> map) {
27362723
Map<String, Object> outMap = newLinkedHashMap();
27372724
for (Map.Entry<String, Object> entry : map.entrySet()) {
@@ -2763,7 +2750,6 @@ private static Object makeAttributeUsage(Object value) {
27632750
return result;
27642751
}
27652752

2766-
@SuppressWarnings("unchecked")
27672753
public static Map<String, Object> replaceNullWithEmptyValue(Map<String, Object> map) {
27682754
Map<String, Object> outMap = newLinkedHashMap();
27692755
for (Map.Entry<String, Object> entry : map.entrySet()) {
@@ -2793,7 +2779,6 @@ private static Object makeReplaceNullValue(Object value) {
27932779
return result;
27942780
}
27952781

2796-
@SuppressWarnings("unchecked")
27972782
public static Map<String, Object> replaceEmptyStringWithEmptyValue(Map<String, Object> map) {
27982783
Map<String, Object> outMap = newLinkedHashMap();
27992784
for (Map.Entry<String, Object> entry : map.entrySet()) {
@@ -2824,7 +2809,6 @@ private static Object makeReplaceEmptyString(Object value) {
28242809
return result;
28252810
}
28262811

2827-
@SuppressWarnings("unchecked")
28282812
public static Map<String, Object> replaceFirstLevel(Map<String, Object> map) {
28292813
return replaceFirstLevel(map, 0);
28302814
}
@@ -2863,6 +2847,31 @@ private static Object makeReplaceFirstLevel(Object value, int level) {
28632847
return result;
28642848
}
28652849

2850+
public static Map<String, Object> deepCopyMap(Map<String, Object> map) {
2851+
Map<String, Object> outMap = newLinkedHashMap();
2852+
for (Map.Entry<String, Object> entry : map.entrySet()) {
2853+
outMap.put(entry.getKey(), makeDeepCopyMap(entry.getValue()));
2854+
}
2855+
return outMap;
2856+
}
2857+
2858+
@SuppressWarnings("unchecked")
2859+
private static Object makeDeepCopyMap(Object value) {
2860+
final Object result;
2861+
if (value instanceof List) {
2862+
List<Object> values = newArrayList();
2863+
for (Object item : (List) value) {
2864+
values.add(item instanceof Map ? deepCopyMap((Map) item) : item);
2865+
}
2866+
result = values;
2867+
} else if (value instanceof Map) {
2868+
result = deepCopyMap((Map) value);
2869+
} else {
2870+
result = value;
2871+
}
2872+
return result;
2873+
}
2874+
28662875
public static long gcd(long value1, long value2) {
28672876
if (value1 == 0) {
28682877
return value2;
@@ -2944,6 +2953,12 @@ public static Builder fromXml(final String xml) {
29442953
return builder;
29452954
}
29462955

2956+
public static Builder fromMap(final Map<String, Object> map) {
2957+
final Builder builder = new Builder();
2958+
deepCopyMap(map).forEach(builder.data::put);
2959+
return builder;
2960+
}
2961+
29472962
public String toJson() {
29482963
return Json.toJson(data);
29492964
}

src/main/java/com/github/underscore/lodash/Xml.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -194,11 +194,6 @@ public static class XmlStringBuilderText extends XmlStringBuilderWithoutHeader {
194194
public XmlStringBuilderText(XmlStringBuilder.Step identStep, int ident) {
195195
super(identStep, ident);
196196
}
197-
198-
@Override
199-
public String toString() {
200-
return super.toString();
201-
}
202197
}
203198

204199
public static class XmlArray {
@@ -237,7 +232,6 @@ public static void writeXml(
237232
}
238233
}
239234

240-
@SuppressWarnings("unchecked")
241235
private static void writeXml(
242236
Collection<?> collection,
243237
XmlStringBuilder builder,
@@ -1855,7 +1849,7 @@ public static String formatXml(String xml, XmlStringBuilder.Step identStep) {
18551849
}
18561850

18571851
public static String formatXml(String xml) {
1858-
return formatXml(xml, XmlStringBuilder.Step.THREE_SPACES);
1852+
return formatXml(xml, XmlStringBuilder.Step.TWO_SPACES);
18591853
}
18601854

18611855
@SuppressWarnings("unchecked")

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030

3131
import java.util.ArrayDeque;
3232
import java.util.ArrayList;
33-
import java.util.Arrays;
3433
import java.util.Collections;
3534
import java.util.Comparator;
3635
import java.util.Iterator;
@@ -802,14 +801,15 @@ public void invoke() {
802801
Underscore.chain(asList(" foo ", " bar")).invoke("trim").value());
803802
assertEquals(
804803
asList("foo1", "bar1"),
805-
Underscore.invoke(asList("foo", "bar"), "concat", Arrays.<Object>asList("1")));
804+
Underscore.invoke(asList("foo", "bar"), "concat", Collections.singletonList("1")));
806805
assertEquals(
807806
asList("foo1", "bar1"),
808-
new Underscore(asList("foo", "bar")).invoke("concat", Arrays.<Object>asList("1")));
807+
new Underscore(asList("foo", "bar"))
808+
.invoke("concat", Collections.<Object>singletonList("1")));
809809
assertEquals(
810810
asList("foo1", "bar1"),
811811
Underscore.chain(asList("foo", "bar"))
812-
.invoke("concat", Arrays.<Object>asList("1"))
812+
.invoke("concat", Collections.singletonList("1"))
813813
.value());
814814
assertEquals(
815815
asList("[1, 5, 7]", "[1, 2, 3]").toString(),
@@ -824,7 +824,7 @@ public void invoke() {
824824
@Test(expected = IllegalArgumentException.class)
825825
@SuppressWarnings("unchecked")
826826
public void invokeError() {
827-
Underscore.invoke(asList("foo", 123), "concat", Arrays.<Object>asList("1"));
827+
Underscore.invoke(asList("foo", 123), "concat", Collections.<Object>singletonList("1"));
828828
}
829829

830830
@Test(expected = IllegalArgumentException.class)
@@ -866,7 +866,7 @@ public Integer getAge() {
866866
return age;
867867
}
868868
}
869-
assertEquals("[]", Underscore.pluck(asList(), "name").toString());
869+
assertEquals("[]", Underscore.pluck(Collections.emptyList(), "name").toString());
870870
final List<?> result =
871871
Underscore.pluck(
872872
asList(
@@ -900,7 +900,8 @@ public Integer getAge() {
900900
.pluck("name")
901901
.value();
902902
assertEquals("[moe, larry, curly]", resultChain.toString());
903-
final Set<?> resultEmpty2 = Underscore.pluck(new LinkedHashSet(asList()), "name");
903+
final Set<?> resultEmpty2 =
904+
Underscore.pluck(new LinkedHashSet(Collections.emptyList()), "name");
904905
assertEquals("[]", resultEmpty2.toString());
905906
final Set<?> resultSet =
906907
Underscore.pluck(

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

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -777,10 +777,7 @@ public void renameRoot() {
777777
U.jsonToXml("{\"a\": \"b\", \"c\": \"d\"}", "json"));
778778
assertEquals(
779779
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<json a=\"b\" c=\"d\"></json>",
780-
U.jsonToXml(
781-
"{\"a\": \"b\", \"c\": \"d\"}",
782-
U.Mode.FORCE_ATTRIBUTE_USAGE_AND_DEFINE_ROOT_NAME,
783-
"json"));
780+
U.jsonToXml("{\"a\": \"b\", \"c\": \"d\"}", U.Mode.FORCE_ATTRIBUTE_USAGE, "json"));
784781
}
785782

786783
@Test
@@ -816,7 +813,8 @@ public void forceAddRoot() {
816813
+ " }\n"
817814
+ " ]\n"
818815
+ "}",
819-
U.Mode.FORCE_ADD_ROOT_JSON_TO_XML, "newroot"));
816+
U.Mode.FORCE_ADD_ROOT_JSON_TO_XML,
817+
"newroot"));
820818
assertEquals(
821819
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
822820
+ "<root>\n"
@@ -901,16 +899,16 @@ public void jsonToXml() {
901899
@Test
902900
public void formatXml() {
903901
assertEquals(
904-
"<root>\n <element>1</element>\n <element>2</element>\n</root>",
902+
"<root>\n <element>1</element>\n <element>2</element>\n</root>",
905903
U.formatXml("<root><element>1</element><element>2</element></root>"));
906904
assertEquals(
907-
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<root>\n <element>1</element>\n"
908-
+ " <element>2</element>\n</root>",
905+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<root>\n <element>1</element>\n"
906+
+ " <element>2</element>\n</root>",
909907
U.formatXml(
910908
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<root><element>1</element>"
911909
+ "<element>2</element></root>"));
912910
assertEquals(
913-
"<a>\n <b></b>\n <b></b>\n</a>",
911+
"<a>\n <b></b>\n <b></b>\n</a>",
914912
U.formatXml("<a>\n <b></b>\n <b></b>\n</a>"));
915913
assertEquals(
916914
"<a>\n <b></b>\n <b></b>\n</a>",
@@ -1051,9 +1049,9 @@ public void changeXmlEncoding() {
10511049

10521050
@Test
10531051
public void formatJson() {
1054-
assertEquals("{\n \"a\": {\n }\n}", U.formatJson("{\n \"a\": {\n }\n}"));
1052+
assertEquals("{\n \"a\": {\n }\n}", U.formatJson("{\n \"a\": {\n }\n}"));
10551053
assertEquals("[\n]", U.formatJson("[]"));
1056-
assertEquals("[\n 1.00\n]", U.formatJson("[1.00]"));
1054+
assertEquals("[\n 1.00\n]", U.formatJson("[1.00]"));
10571055
assertEquals(
10581056
"{\n \"a\": {\n }\n}",
10591057
U.formatJson("{\n \"a\": {\n }\n}", Json.JsonStringBuilder.Step.FOUR_SPACES));
@@ -1135,6 +1133,28 @@ public void replaceFirstLevel() {
11351133
U.replaceFirstLevel(result4);
11361134
}
11371135

1136+
@Test
1137+
@SuppressWarnings("unchecked")
1138+
public void deepCopyMap() {
1139+
Map<String, Object> result = U.deepCopyMap(U.fromXml("<a/>"));
1140+
assertEquals("{a={-self-closing=true}, #omit-xml-declaration=yes}", result.toString());
1141+
Map<String, Object> result2 = U.deepCopyMap(U.fromXml("<a><b>c</b></a>"));
1142+
assertEquals("{a={b=c}, #omit-xml-declaration=yes}", result2.toString());
1143+
Map<String, Object> map = U.newLinkedHashMap();
1144+
List<Object> list = U.newArrayList();
1145+
list.add(U.newLinkedHashMap());
1146+
map.put("list", list);
1147+
U.deepCopyMap(map);
1148+
Map<String, Object> map2 = U.newLinkedHashMap();
1149+
List<Object> list2 = U.newArrayList();
1150+
list2.add(U.newArrayList());
1151+
map2.put("list", list2);
1152+
U.deepCopyMap(map2);
1153+
Map<String, Object> result3 = U.fromXml("<a/>");
1154+
((Map<String, Object>) result3.get("a")).put("-self-closing", "false");
1155+
U.deepCopyMap(result3);
1156+
}
1157+
11381158
@Test
11391159
public void objectBuilder() {
11401160
U.Builder builder = U.objectBuilder().add("1", "2").add("2");
@@ -1143,6 +1163,7 @@ public void objectBuilder() {
11431163
U.Builder.fromJson("{}");
11441164
builder.toXml();
11451165
U.Builder.fromXml("<a/>");
1166+
U.Builder.fromMap(U.newLinkedHashMap());
11461167
builder.set("1", "3");
11471168
builder.toString();
11481169
assertEquals("{1=3}", builder.build().toString());

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3411,7 +3411,6 @@ public void fromXml() {
34113411
U.fromXml(stringXml);
34123412
}
34133413

3414-
@SuppressWarnings("unchecked")
34153414
@Test
34163415
public void fromXmlMap() {
34173416
String stringXml =
@@ -3424,7 +3423,6 @@ public void fromXmlMap() {
34243423
assertEquals("{}", U.fromXmlMap(stringXml3, Xml.FromType.FOR_CONVERT).toString());
34253424
}
34263425

3427-
@SuppressWarnings("unchecked")
34283426
@Test
34293427
public void fromJsonMap() {
34303428
String stringJson = "[]";
@@ -3901,7 +3899,6 @@ public void testJavaObjectArrayToString() {
39013899
builder.toString());
39023900
}
39033901

3904-
@SuppressWarnings("unchecked")
39053902
@Test
39063903
public void toJsonJavaFromList() {
39073904
final List<String> testList = new ArrayList<>();

0 commit comments

Comments
 (0)