Hi I have an API returning Mono<ResponseEntity<Void>>, the API will call another API which returns Mono<ResponseEntity<Object>>, how do I convert the result from this other API to Mono<ResponseEntity<Void>>? e.g.
public Mono<ResponseEntity<Void>> api() {
return anotherApi()
.map(response -> ResponseEntity.ok().build())
.onErrorReturn(ResponseEntity.badRequest().build());
}
The above works if I only have the map, but not when I add the onErrorReturn, it complains Type mismatch: cannot convert from Mono<ResponseEntity<Object>> to Mono<ResponseEntity<Void>>, why has it become Mono<ResponseEntity<Object>>?
CodePudding user response:
The code is correct and this is just Java generics that couldn't infer type correctly.
You could provide type explicitly
public Mono<ResponseEntity<Void>> api() {
return anotherApi()
.<ResponseEntity<Void>>map(response -> ResponseEntity.ok().build())
.onErrorReturn(ResponseEntity.badRequest().build());
}
or move onErrorReturn one level up
public Mono<ResponseEntity<Void>> api() {
return anotherApi()
.onErrorReturn(ResponseEntity.badRequest().build())
.map(response -> ResponseEntity.ok().build());
}
