Skip to content

Commit e68dcf1

Browse files
committed
Fix #1900
1 parent adce899 commit e68dcf1

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

guava-tests/test/com/google/common/base/SplitterTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,18 @@ public void testMapSplitter_CharacterSeparator() {
733733
assertThat(m.entrySet()).containsExactlyElementsIn(expected.entrySet()).inOrder();
734734
}
735735

736+
public void testMapSplitter_ValueContainKeyValueSeparator() {
737+
Map<String, String> m = Splitter
738+
.on(",")
739+
.withKeyValueSeparator(':')
740+
.split("boy:tom:tommy,girl:tina,cat:kitty,dog:tommy");
741+
ImmutableMap<String, String> expected =
742+
ImmutableMap.of("boy", "tom:tommy", "girl", "tina", "cat", "kitty", "dog", "tommy");
743+
744+
assertThat(m).isEqualTo(expected);
745+
assertThat(m.entrySet()).containsExactlyElementsIn(expected.entrySet()).inOrder();
746+
}
747+
736748
public void testMapSplitter_multiCharacterSeparator() {
737749
// try different delimiters.
738750
Map<String, String> m = Splitter

guava/src/com/google/common/base/Splitter.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ private MapSplitter(Splitter outerSplitter, Splitter entrySplitter) {
481481
public Map<String, String> split(CharSequence sequence) {
482482
Map<String, String> map = new LinkedHashMap<String, String>();
483483
for (String entry : outerSplitter.split(sequence)) {
484-
Iterator<String> entryFields = entrySplitter.splittingIterator(entry);
484+
Iterator<String> entryFields = entrySplitter.limit(2).splittingIterator(entry);
485485

486486
checkArgument(entryFields.hasNext(), INVALID_ENTRY_MESSAGE, entry);
487487
String key = entryFields.next();
@@ -490,8 +490,6 @@ public Map<String, String> split(CharSequence sequence) {
490490
checkArgument(entryFields.hasNext(), INVALID_ENTRY_MESSAGE, entry);
491491
String value = entryFields.next();
492492
map.put(key, value);
493-
494-
checkArgument(!entryFields.hasNext(), INVALID_ENTRY_MESSAGE, entry);
495493
}
496494
return Collections.unmodifiableMap(map);
497495
}

0 commit comments

Comments
 (0)