Skip to content

Commit

Permalink
override dependencies on conflicts as part of project dependency repo…
Browse files Browse the repository at this point in the history
…rt (#3) (finos#361)

override dependencies on conflicts as part of project dependency report
  • Loading branch information
gs-gunjan authored Aug 7, 2023
1 parent 1ef680a commit 93efc1c
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
import java.util.Set;
import java.util.HashSet;
import java.util.Map;
import java.util.ArrayList;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.stream.Collectors;
import java.util.stream.Stream;
Expand Down Expand Up @@ -267,7 +268,22 @@ public ProjectDependencyReport getProjectDependencyReport(List<ProjectVersion> p
ProjectDependencyGraph graph = new ProjectDependencyGraph();
ProjectDependencyGraphWalkerContext graphWalkerContext = new ProjectDependencyGraphWalkerContext();
buildDependencyGraph(graph, null, projectDependencyVersions, graphWalkerContext);
return buildReportFromGraph(graph,graphWalkerContext);
ProjectDependencyReport report = buildReportFromGraph(graph, graphWalkerContext);
return overrideConflictDependencies(projectDependencyVersions, report);
}

public ProjectDependencyReport overrideConflictDependencies(List<ProjectVersion> projectDependencyVersions, ProjectDependencyReport report)
{
List<ProjectDependencyReport.ProjectDependencyConflict> conflicts = new ArrayList<>(report.getConflicts());
projectDependencyVersions.stream().forEach(dep ->
{
Optional<ProjectDependencyReport.ProjectDependencyConflict> conflictPresent = conflicts.stream().filter(conflict -> conflict.getGroupId().equals(dep.getGroupId()) && conflict.getArtifactId().equals(dep.getArtifactId())).findFirst();
if (conflictPresent.isPresent())
{
report.removeConflict(conflictPresent.get());
}
});
return report;
}

public ProjectDependencyReport buildReportFromGraph(ProjectDependencyGraph dependencyGraph, ProjectDependencyGraphWalkerContext graphWalkerContext)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,31 @@ public void canGetProjectDependenciesWithConflicts()
Assert.assertEquals(dependencyReport.getConflicts().get(0).getVersions(), Sets.mutable.of("examples.metadata:test-dependencies:1.0.0","examples.metadata:test-dependencies:2.0.0"));
}

@Test
public void canGetProjectDependenciesReportWithOverriddenDependencies()
{
Set<ProjectVersion> dependencyList = projectsService.getDependencies("examples.metadata", "test", "2.3.1", false);
Assert.assertFalse(dependencyList.isEmpty());
Assert.assertTrue(dependencyList.contains(new ProjectVersion("examples.metadata", "test-dependencies", "1.0.0")));

Set<ProjectVersion> dependencyList2 = projectsService.getDependencies("examples.metadata", "test", "2.3.1", true);
Assert.assertFalse(dependencyList2.isEmpty());
Assert.assertTrue(dependencyList2.contains(new ProjectVersion("examples.metadata", "test-dependencies", "1.0.0")));
Assert.assertTrue(dependencyList2.contains(new ProjectVersion("example.services.test", "test", "1.0.0")));
Assert.assertFalse(projectsService.getDependencies("examples.metadata", "test", "2.3.1", false).contains(new ProjectVersion("example.services.test", "test", "2.0.1")));
StoreProjectVersionData projectA = projectsService.find("example.services.test", "test", "1.0.0").get();
StoreProjectVersionData projectB = new StoreProjectVersionData("examples.metadata", "test-dependencies", "2.0.0");
projectA.getVersionData().addDependency(new ProjectVersion("examples.metadata", "test-dependencies", "2.0.0"));
projectsService.createOrUpdate(projectB);
projectsService.createOrUpdate(projectA);

// Dependency Tree
List<ProjectVersion> projectDependencyVersions = Arrays.asList(new ProjectVersion("examples.metadata", "test", "2.3.1"), new ProjectVersion("examples.metadata", "test-dependencies", "2.0.0"));
ProjectDependencyReport dependencyReport = projectsService.getProjectDependencyReport(projectDependencyVersions);

Assert.assertEquals(0, dependencyReport.getConflicts().size());
}


@Test
public void canGetDependantProjects()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,11 @@ public void addConflict(String groupId, String artifactId, Set<String> versions)
this.getConflicts().add(new ProjectDependencyConflict(groupId, artifactId, versions));
}

public void removeConflict(ProjectDependencyConflict conflict)
{
conflicts.remove(conflict);
}

public List<ProjectDependencyConflict> getConflicts()
{
return conflicts;
Expand Down

0 comments on commit 93efc1c

Please sign in to comment.