From 8c5ccce7f94115276c872516268c4e410190fd2e Mon Sep 17 00:00:00 2001 From: Andrian Sevastyanov Date: Mon, 13 May 2024 12:28:13 -0600 Subject: [PATCH] POC: Reuse nuget dependencies and external IDs --- .../nuget/parse/NugetDependencyNodeBuilder.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/detectable/src/main/java/com/synopsys/integration/detectable/detectables/nuget/parse/NugetDependencyNodeBuilder.java b/detectable/src/main/java/com/synopsys/integration/detectable/detectables/nuget/parse/NugetDependencyNodeBuilder.java index 73d535b4ae..ee2011da94 100644 --- a/detectable/src/main/java/com/synopsys/integration/detectable/detectables/nuget/parse/NugetDependencyNodeBuilder.java +++ b/detectable/src/main/java/com/synopsys/integration/detectable/detectables/nuget/parse/NugetDependencyNodeBuilder.java @@ -1,16 +1,20 @@ package com.synopsys.integration.detectable.detectables.nuget.parse; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import com.synopsys.integration.bdio.graph.BasicDependencyGraph; import com.synopsys.integration.bdio.graph.DependencyGraph; import com.synopsys.integration.bdio.model.Forge; import com.synopsys.integration.bdio.model.dependency.Dependency; +import com.synopsys.integration.bdio.model.externalid.ExternalId; import com.synopsys.integration.detectable.detectables.nuget.model.NugetPackageId; import com.synopsys.integration.detectable.detectables.nuget.model.NugetPackageSet; public class NugetDependencyNodeBuilder { + private static Map externalIdToDependencyMap = new HashMap<>(); private final List packageSets = new ArrayList<>(); public void addPackageSets(List sets) { @@ -38,6 +42,14 @@ public DependencyGraph createDependencyGraph(List packageDepende } private Dependency convertPackageId(NugetPackageId id) { - return Dependency.FACTORY.createNameVersionDependency(Forge.NUGET, id.name, id.version); + Dependency d = Dependency.FACTORY.createNameVersionDependency(Forge.NUGET, id.name, id.version); + ExternalId ei = d.getExternalId(); + + if (externalIdToDependencyMap.containsKey(ei)) { + d = externalIdToDependencyMap.get(ei); + } else { + externalIdToDependencyMap.put(ei, d); + } + return d; } }