- 
                Notifications
    You must be signed in to change notification settings 
- Fork 38.8k
Closed
Labels
in: webIssues in web modules (web, webmvc, webflux, websocket)Issues in web modules (web, webmvc, webflux, websocket)status: backportedAn issue that has been backported to maintenance branchesAn issue that has been backported to maintenance branchestype: regressionA bug that is also a regressionA bug that is also a regression
Milestone
Description
Fleur Kelpin opened SPR-16461 and commented
The GSON message converter used to serialise using the class of the object that was being serialised. Now it uses the return type of the controller method.
So when I have
@GetMapping("/animal")
public Animal getAnimal() { return new Cat(...); }the Cat-specific fields do not get serialised, only Animal fields.
Workarounds:
- When I replace GSON with Jackson on the classpath, Cat fields get serialised again.
- When I subclass the GsonHttpMessageSerializer and override writeInternal as follows:
@Override
protected void writeInternal(Object o, @Nullable Type type, Writer writer) throws Exception
{
    // replaces the type info with null value
    super.writeInternal(o, null, writer); 
}the Cat fields get serialized again.
Probably introduced in #17408, the last version that serialized Cats as Cats was 4.1.9.
To reproduce:
Run the repro project, and GET http://localhost:8080/SPR-16461/animal
Response should be the same as  http://localhost:8080/SPR-16461/cat but isn't.
Affects: 4.3.14, 5.0.3
Reference URL: spring-attic/spring-framework-issues#175
Issue Links:
- Make @ResponseBody method return type available to message converters [SPR-12811] #17408 Make @ResponseBodymethod return type available to message converters
- GsonHttpMessageConverter cannot be used in an SseEmitter because it closes the response stream [SPR-16529] #21072 GsonHttpMessageConverter cannot be used in an SseEmitter because it closes the response stream
Referenced from: commits 817a836, fd964ca
Backported to: 4.3.15
Metadata
Metadata
Assignees
Labels
in: webIssues in web modules (web, webmvc, webflux, websocket)Issues in web modules (web, webmvc, webflux, websocket)status: backportedAn issue that has been backported to maintenance branchesAn issue that has been backported to maintenance branchestype: regressionA bug that is also a regressionA bug that is also a regression