Skip to content
This repository was archived by the owner on Jan 20, 2025. It is now read-only.

Commit 76e2b22

Browse files
committed
Merge pull request #68 from michaelhixson/michaelhixson-issue-67
Fix for issue #67 - ImmutableSetMultimap ordering
2 parents dafab05 + c5697ff commit 76e2b22

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/main/java/com/fasterxml/jackson/datatype/guava/GuavaDeserializers.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,9 @@ public JsonDeserializer<?> findMapLikeDeserializer(MapLikeType type,
197197
}
198198

199199
if (ImmutableSetMultimap.class.isAssignableFrom(raw)) {
200-
// TODO
200+
// [Issue#67]: Preserve order of entries
201+
return new LinkedHashMultimapDeserializer(type, keyDeserializer,
202+
elementTypeDeserializer, elementDeserializer);
201203
}
202204
if (HashMultimap.class.isAssignableFrom(raw)) {
203205
return new HashMultimapDeserializer(type, keyDeserializer, elementTypeDeserializer,

src/test/java/com/fasterxml/jackson/datatype/guava/TestMultimaps.java

+19-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.google.common.collect.*;
88

99
import java.io.IOException;
10+
import java.util.Iterator;
1011
import java.util.Map;
1112

1213
import static com.google.common.collect.TreeMultimap.create;
@@ -235,4 +236,21 @@ private ListMultimap<String, String> listBasedHelper(TypeReference<?> type) thro
235236
assertTrue(map.containsEntry("second", "bar"));
236237
return map;
237238
}
238-
}
239+
240+
public void testIssue67() throws IOException
241+
{
242+
ImmutableSetMultimap<String, Integer> map = MAPPER.readValue(
243+
"{\"d\":[1,2],\"c\":[3,4],\"b\":[5,6],\"a\":[7,8]}",
244+
new TypeReference<ImmutableSetMultimap<String, Integer>>() {});
245+
assertEquals(8, map.size());
246+
Iterator<Map.Entry<String, Integer>> iterator = map.entries().iterator();
247+
assertEquals(Maps.immutableEntry("d", 1), iterator.next());
248+
assertEquals(Maps.immutableEntry("d", 2), iterator.next());
249+
assertEquals(Maps.immutableEntry("c", 3), iterator.next());
250+
assertEquals(Maps.immutableEntry("c", 4), iterator.next());
251+
assertEquals(Maps.immutableEntry("b", 5), iterator.next());
252+
assertEquals(Maps.immutableEntry("b", 6), iterator.next());
253+
assertEquals(Maps.immutableEntry("a", 7), iterator.next());
254+
assertEquals(Maps.immutableEntry("a", 8), iterator.next());
255+
}
256+
}

0 commit comments

Comments
 (0)