gerrit/gerrit-extension-api
Dave Borowitz 484da493b3 Prefer subtypes of Multimap
Guava team recommends using the subinterfaces of Multimap, for the
same reasons they recommend using Set and List rather than Collection:
it documents expectations about ordering, uniqueness, and behavior of
equals. Do this across the board in Gerrit.

Mostly this is straightforward and I tried to exactly match existing
behavior where possible. However, there were a few wrinkles, where
different callers passed different subtypes to the same method.

The main one is arguments to ParameterParser#parse and
splitQueryString, where some callers used SetMultimaps (perhaps
semi-intentionally, or perhaps misunderstanding the nature of
HashMultimap). For the purposes of parameter parsing, a ListMultimap
makes more sense, because it preserves argument order and repetition.

Another instance is a couple places in ReceiveCommits and downstream
where there were SetMultimap<?, Ref>. Since Refs do not implement
equals, this is effectively the same thing as a ListMultimap, and
changing the interface no longer misleads readers into thinking there
might be some deduplication happening.

Finally, this change includes a breaking API change to the return
type of ExternalIncludedIn#getIncludedIn.

Change-Id: I5f1d15e27a32e534a6aaefe204e7a31815f4c8d7
2017-01-18 10:36:38 +09:00
..
src Prefer subtypes of Multimap 2017-01-18 10:36:38 +09:00
BUCK Add unit tests for Comment.Range#isValid 2016-12-08 11:21:48 +01:00
BUILD Add unit tests for Comment.Range#isValid 2016-12-08 11:21:48 +01:00
pom.xml Set version to 2.13.1 2016-09-23 14:28:31 +02:00