#61 - Make sure Project.getDependencies() includes transitive dependencies.

This commit is contained in:
Oliver Gierke
2017-07-27 10:32:44 +02:00
parent fec910564d
commit 11bbf98fdd
2 changed files with 28 additions and 11 deletions

View File

@@ -23,9 +23,12 @@ import lombok.ToString;
import lombok.experimental.Wither;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.springframework.util.Assert;
@@ -40,7 +43,7 @@ public class Project implements Comparable<Project> {
private final @Getter ProjectKey key;
private final @Getter String name;
private final @Wither String fullName;
private final @Getter List<Project> dependencies;
private final Collection<Project> dependencies;
private final @Getter Tracker tracker;
private final @Wither @Getter ArtifactCoordinates additionalArtifacts;
private final @Wither boolean skipTests;
@@ -54,14 +57,7 @@ public class Project implements Comparable<Project> {
}
private Project(String key, String name, String fullName, Tracker tracker) {
this.key = new ProjectKey(key);
this.name = name;
this.fullName = fullName;
this.dependencies = Collections.emptyList();
this.tracker = tracker;
this.additionalArtifacts = ArtifactCoordinates.SPRING_DATA;
this.skipTests = false;
this(new ProjectKey(key), name, fullName, Collections.emptySet(), tracker, ArtifactCoordinates.SPRING_DATA, false);
}
public boolean uses(Tracker tracker) {
@@ -102,9 +98,22 @@ public class Project implements Comparable<Project> {
}
public Project withDependencies(Project... project) {
return new Project(key, name, fullName, Arrays.asList(project), tracker, additionalArtifacts, skipTests);
}
/**
* Returns all dependencies of the current project including transitive ones.
*
* @return
*/
public Set<Project> getDependencies() {
return dependencies.stream() //
.flatMap(dependency -> Stream.concat(Stream.of(dependency), dependency.getDependencies().stream())) //
.collect(Collectors.toSet());
}
/*
* (non-Javadoc)
* @see java.lang.Comparable#compareTo(java.lang.Object)

View File

@@ -15,8 +15,9 @@
*/
package org.springframework.data.release.model;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import static org.junit.Assert.assertThat;
import java.util.ArrayList;
import java.util.List;
@@ -55,4 +56,11 @@ public class ProjectUnitTests {
assertThat(Projects.BUILD.getFullName(), is("Spring Data Build"));
assertThat(Projects.CASSANDRA.getFullName(), is("Spring Data for Apache Cassandra"));
}
@Test
public void returnsAllDependencies() {
assertThat(Projects.REDIS.getDependencies())//
.contains(Projects.COMMONS, Projects.KEY_VALUE, Projects.BUILD);
}
}