diff --git a/pom.xml b/pom.xml index b6f1e2c32296541d9d6bf272583fb52169e4a2c5..0536c407293ee254d95d8e441cd666e01c9b9e49 100644 --- a/pom.xml +++ b/pom.xml @@ -64,10 +64,6 @@ <groupId>io.quarkus</groupId> <artifactId>quarkus-rest-client</artifactId> </dependency> - <dependency> - <groupId>io.quarkus</groupId> - <artifactId>quarkus-arc</artifactId> - </dependency> <!-- Testing dependencies only --> <dependency> diff --git a/src/main/java/org/eclipsefoundation/cve/model/CveProjectData.java b/src/main/java/org/eclipsefoundation/cve/model/CveProjectData.java index ba0000a6acf05f02e8b2c182978ee94cb4ee050c..57c2d35e560a70d7348248873543fe738c028e1f 100644 --- a/src/main/java/org/eclipsefoundation/cve/model/CveProjectData.java +++ b/src/main/java/org/eclipsefoundation/cve/model/CveProjectData.java @@ -12,7 +12,6 @@ package org.eclipsefoundation.cve.model; import java.util.List; -import java.util.Map; import java.util.Optional; import javax.annotation.Nullable; diff --git a/src/main/java/org/eclipsefoundation/cve/precaches/InternalAdvisoriesPrecacheProvider.java b/src/main/java/org/eclipsefoundation/cve/precaches/InternalAdvisoriesPrecacheProvider.java index d4c7c320ef374b3694e5d5abdbed5bad826aba9a..7cf25c93786c909421e3120cb0edff80f4ac2be6 100644 --- a/src/main/java/org/eclipsefoundation/cve/precaches/InternalAdvisoriesPrecacheProvider.java +++ b/src/main/java/org/eclipsefoundation/cve/precaches/InternalAdvisoriesPrecacheProvider.java @@ -14,6 +14,7 @@ package org.eclipsefoundation.cve.precaches; import java.net.URI; import java.util.List; import java.util.Optional; +import java.util.concurrent.CompletableFuture; import java.util.regex.Matcher; import java.util.stream.Collectors; @@ -23,6 +24,7 @@ import javax.inject.Named; import javax.ws.rs.ProcessingException; import org.apache.commons.lang3.StringUtils; +import org.eclipse.microprofile.context.ManagedExecutor; import org.eclipse.microprofile.rest.client.inject.RestClient; import org.eclipsefoundation.core.model.ParameterizedCacheKey; import org.eclipsefoundation.core.service.LoadingCacheManager.LoadingCacheProvider; @@ -65,12 +67,21 @@ public class InternalAdvisoriesPrecacheProvider implements LoadingCacheProvider< @RestClient GithubCveAPI githubApi; + @Inject + ManagedExecutor executor; + @Inject ObjectMapper om; @Override public List<CveData> fetchData(ParameterizedCacheKey k) { - return fetchInternalCveDatas().stream().map(this::augmentCveData).collect(Collectors.toList()); + // Create a CompletableFuture for each cve augmentation + List<CompletableFuture<CveData>> augmentingTasks = fetchInternalCveDatas().stream() + .map(cve -> CompletableFuture.supplyAsync(() -> augmentCveData(cve), executor)) + .collect(Collectors.toList()); + + // Await completion of each and collect results + return augmentingTasks.stream().map(CompletableFuture::join).collect(Collectors.toList()); } @Override diff --git a/src/test/java/org/eclipsefoundation/cve/test/api/MockGithubCveAPI.java b/src/test/java/org/eclipsefoundation/cve/test/api/MockGithubCveAPI.java index 5aec28540d845274bb68da77ef2c565d4bcfef0d..c618829083ec5b926f374aa4481f353a07ead778 100644 --- a/src/test/java/org/eclipsefoundation/cve/test/api/MockGithubCveAPI.java +++ b/src/test/java/org/eclipsefoundation/cve/test/api/MockGithubCveAPI.java @@ -14,7 +14,6 @@ package org.eclipsefoundation.cve.test.api; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; @@ -28,10 +27,10 @@ import org.eclipsefoundation.cve.api.models.GithubAdvisoriesRequestParams; import org.eclipsefoundation.cve.model.CveProjectData; import org.eclipsefoundation.cve.model.CveProjectData.Cna; import org.eclipsefoundation.cve.model.CveProjectData.Containers; +import org.eclipsefoundation.cve.model.CveProjectData.CvssData; import org.eclipsefoundation.cve.model.CveProjectData.Description; import org.eclipsefoundation.cve.model.CveProjectData.Metadata; import org.eclipsefoundation.cve.model.CveProjectData.Metric; -import org.eclipsefoundation.cve.model.CveProjectData.CvssData; import org.eclipsefoundation.cve.model.GithubAdvisoriesData; import org.eclipsefoundation.cve.model.GithubAdvisoriesData.Cvss;