Reputation: 102
I have got a Flux<CollectionDetail> that contains below data structure.
[
{
"id": 181,
"date": "2020-06-25T14:49:04",
"status": "publish",
"type": "wprm_collection",
"link": "http://35.228.92.155/?post_type=wprm_collection&p=181",
"collection": {
"id": 181,
"name": "Menu-4",
"nbrItems": "3",
"items": {}
}
},
{...},
{...},
{...}
]
Below code is not able to retrieve the subobject and provide a new flux out of it.
public Flux<Collection> getWeeklyMenus() {
System.out.println("Calling WP");
Mono<List<CollectionDetail>> collectionDetailList = client.get()
.uri("/wprm_collection")
.retrieve()
.bodyToFlux(CollectionDetail.class).collectList();
List<Collection> collections = new ArrayList();
collectionDetailList.flatMap(items->{
for(CollectionDetail item : items){
Collection collection = item.getCollection();
collections.add(collection);
}
return null;
});
return Mono.just(collections).flatMapMany(Flux::fromIterable);
}
How can I convert Flux<CollectionElement> to Flux<Collection> without blocking the stream for this example?
Upvotes: 0
Views: 650
Reputation: 1838
How about not extracting the list calling collectList()
and work directly on Flux
?
Solution:
public Flux<Collection> getWeeklyMenus() {
Flux<CollectionDetail> collectionDetailList = client.get()
.uri("/wprm_collection")
.retrieve()
.bodyToFlux(CollectionDetail.class);
return collectionDetailList
.map(CollectionDetail::getCollection);
}
Upvotes: 1