提交 640d09d7 编写于 作者: K kohsuke

added code to compute transitive dependencies.


git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@2073 71c3de6d-444a-0410-be80-ed276b4c234a
上级 21028f78
......@@ -130,6 +130,38 @@ public final class DependencyGraph {
return false;
}
/**
* Gets all the direct and indirect upstream dependencies of the given project.
*/
public Set<AbstractProject> getTransitiveUpstream(AbstractProject src) {
return getTransitive(backward,src);
}
/**
* Gets all the direct and indirect downstream dependencies of the given project.
*/
public Set<AbstractProject> getTransitiveDownstream(AbstractProject src) {
return getTransitive(forward,src);
}
private Set<AbstractProject> getTransitive(Map<AbstractProject, List<AbstractProject>> direction, AbstractProject src) {
Set<AbstractProject> visited = new HashSet<AbstractProject>();
Stack<AbstractProject> queue = new Stack<AbstractProject>();
queue.add(src);
while(!queue.isEmpty()) {
AbstractProject p = queue.pop();
for (AbstractProject child : get(direction,p)) {
if(visited.add(child))
queue.add(child);
}
}
return visited;
}
private void add(Map<AbstractProject, List<AbstractProject>> map, AbstractProject src, AbstractProject dst) {
List<AbstractProject> set = map.get(src);
if(set==null) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册