Java - Crear una Lista con los elementos devueltos por un Mono<Object>

 
Vista:
sin imagen de perfil

Crear una Lista con los elementos devueltos por un Mono<Object>

Publicado por Jesus (1 intervención) el 04/09/2023 09:51:53
Hola. Estoy intentando hacer un api rest con Spring Webflux. Tengo dos endpoints en una api, uno de ellos me devuelve los ids de los productos y otro el detalle del producto. Mi api consiste en devolver el detalle de los productos pasando los ids que obtengo del primer endpoint. Lo estoy haciendo con reactor. He conseguido hacer la llamada y obtener los ids, pero cuando añado el detalle del producto a la lista que debería devolver el servicio esta siempre está vacia.

Mi código es este:

public List<ProductDetail> getSimilarProductsDetails(String productId) {
final ResponseEntity<List<ProductDetail>> responseEntity;
Mono<Object> idsList = productsClient.getSimilarProductsIds(productId);
List<ProductDetail> productsDetailsList = new ArrayList<>();
Map<String, ProductDetail> productsDetailsMap = new HashMap();
List<String> productIds = new ArrayList<>();

idsList.subscribe(
ids -> {
((ArrayList) ids).forEach(id -> {
Mono<ProductDetail> productDetail = productsClient.getProductDetail(String.valueOf(id));
//productsDetailsList.add(productDetail.flatMap(value -> ProductDetailService::getProductDetail)););
//productDetail.log().subscribe(productsDetailsList::add);
productDetail.subscribe(pdetail -> {
productsDetailsList.add(
pdetail);
});
});
});

return productsDetailsList;
}

¿Como puedo hacer para que la lista productsDetailsList tenga contenido? Es para un proceso de selección y estoy bastante bloqueado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder