-
Notifications
You must be signed in to change notification settings - Fork 475
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ParameterizedTypeReference<CollectionModel<EntityModel<>>> returns empty content from RestTemplate / WebClient #2160
Comments
I found a "kind of working thing". If I set the header of the rest template request to If I set |
I've updated my comment above. It still looks a bit weird to me and feels like something is broken here (probably my code :D but who knows) It does make sense in a way that setting Accept to hal-forms actually produces
which has exactly same structure as CollectionModel, so no wonder object mapper is able to handle it automatically The question is there an automatic way to process CollectionModel as hal+json ? Or do I need to write my own object mapper logic? |
Can you elaborate what exactly you're doing? Through a minimal reproducer maybe? I guess we can and should move this over to Spring HATEOAS as I don't see any Spring Data involvement here. |
Hi @odrotbohm , I've forked https://github.com/spring-guides/tut-rest and added a commit with a test class where I've tried to showcase the problem - serpro69/spring-hateoas-2160@387c62d If you look at the In the first test I'm setting accept header with hal_forms_json_value: The second test showcases the problem that I've tried to describe in this issue. By removing the hal_forms header, The third test uses a String type for response So basically, TestRestTemplate can't automatically deserialize CollectionModel with default hal+json accept header (and the only way I could make it work is to specify hal-forms+json accept header), even though the controller itself returns the data in hal+json format. Don't know if this makes sense or makes things clearer. Please let me know if you'd like more details from me. Cheers. |
Thanks for that already! I'll have a look and report back! |
Is there any update on this? I faced the same issue using |
@serpro69 – From a glance, it looks nothing in your example code is preparing your client to be hypermedia aware. For the production code, Spring Boot automatically enables the HAL support if Spring HATEOAS on the class path. I.e., all Ideally, you register a |
Hi @odrotbohm , |
I'm trying to retrieve CollectionModel<EntityModel> content from an http response body (I've tried TestRestTemplate and WebClient and both produce same results) but getting an empty
content
in theCollectionModel
:CollectionModel { content: [], fallbackType: null, links: [] }
I can see that the response body actually has data because when I change the type to be returned as string instead of using ParameterizedTypeReference, then the response body is a valid json string like :
In the debug logs, the Writing part of the body also shows correct results:
So the issue seems to be in the reading mapping.
Is any special configuration required for this to work?
I've searched around and couldn't find anything on how to make it work.
At the same time,
ParameterizedTypeReference<EntityModel<MyEntity>>
works as expected. So there's something wrong with mapping theParameterizedTypeReference<CollectionModel<>>
in particular.The text was updated successfully, but these errors were encountered: