diff --git a/rest-client-collection/virtual-threads-experiences/Marketplace/Get martplace.bru b/rest-client-collection/virtual-threads-experiences/Marketplace/Get marketplace.bru similarity index 84% rename from rest-client-collection/virtual-threads-experiences/Marketplace/Get martplace.bru rename to rest-client-collection/virtual-threads-experiences/Marketplace/Get marketplace.bru index b6c8c41..25f82aa 100644 --- a/rest-client-collection/virtual-threads-experiences/Marketplace/Get martplace.bru +++ b/rest-client-collection/virtual-threads-experiences/Marketplace/Get marketplace.bru @@ -1,5 +1,5 @@ meta { - name: Get martplace + name: Get marketplace type: http seq: 1 } diff --git a/virtual-threads-app/src/main/java/com/zeenea/experiments/virtualthreads/virtualthreadsapp/domain/marketplace/MarketplaceService.java b/virtual-threads-app/src/main/java/com/zeenea/experiments/virtualthreads/virtualthreadsapp/domain/marketplace/MarketplaceService.java index f8aee9a..c091551 100644 --- a/virtual-threads-app/src/main/java/com/zeenea/experiments/virtualthreads/virtualthreadsapp/domain/marketplace/MarketplaceService.java +++ b/virtual-threads-app/src/main/java/com/zeenea/experiments/virtualthreads/virtualthreadsapp/domain/marketplace/MarketplaceService.java @@ -1,11 +1,15 @@ package com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.marketplace; import com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.catalog.CatalogService; +import com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.catalog.model.Catalog; import com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.item.ItemService; import com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.item.model.Item; import com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.marketplace.model.Marketplace; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.concurrent.CompletableFuture; + @Service public class MarketplaceService { private final CatalogService catalogService; @@ -17,6 +21,24 @@ public class MarketplaceService { } public Marketplace getMarketplace() { + return getMarketplaceInParallel(); + } + + private Marketplace getMarketplaceInParallel() { + CompletableFuture> getCatalogsFuture = CompletableFuture.supplyAsync(catalogService::getAll); + CompletableFuture> getAllItemsFuture = CompletableFuture.supplyAsync(itemService::getAllItems); + + CompletableFuture.allOf(getCatalogsFuture, getAllItemsFuture).join(); + + var catalogs = getCatalogsFuture.join(); + var sharedItems = getAllItemsFuture.join() + .stream() + .filter(Item::isShared) + .toList(); + return new Marketplace(catalogs, sharedItems); + } + + private Marketplace getMarketplaceSequentially() { return new Marketplace( catalogService.getAll(), itemService.getAllItems()