Backward compatibility issue in RestTemplate's messageConverters after SPR-11351 [SPR-11962] #16578
Labels
in: web
Issues in web modules (web, webmvc, webflux, websocket)
status: backported
An issue that has been backported to maintenance branches
type: bug
A general bug
Milestone
Boaz opened SPR-11962 and commented
Hi,
We've recently upgraded our Spring version from 3.2.6 to 3.2.9 and we've encountered a backwards compatibility issue.
Usually we use
RestTemplate
with it's default set ofmessageConverters
, but in some places we add custom message converters to the existing collection of message converters, it looks as follows:In version 3.2.9 (after merging the fix for #15976in commit 425e5a0) the
setMessageConverters
method changed from this:to this:
Causing us to loose all the converters instead of adding one and, of course -
We did an innocent mistake and expected to get from the
getMessageConverters
method a copy of the list (and not have a reference to the inner works of theRestTemplate
) without consulting the source code.It's clear that other developers might have directly added to that list without calling
setMessageConverters
afterwards, so some flows won't be backward compatible. But I do think that returning a copy of a list ingetMessageConverters
is better then returning the list itself, especially since spring doesthis.messageConverters.clear();
in the set.Affects: 3.2.9, 4.0.5
Issue Links:
Referenced from: commits 60d3a7f, a45d49c, 1222ca3
Backported to: 3.2.10
The text was updated successfully, but these errors were encountered: