1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.lifecycle.internal;
20
21 import java.util.Collection;
22 import java.util.Collections;
23 import java.util.HashSet;
24
25 import org.apache.maven.execution.ProjectDependencyGraph;
26 import org.apache.maven.lifecycle.internal.builder.BuilderCommon;
27 import org.apache.maven.project.MavenProject;
28
29
30
31
32
33
34
35 public class ReactorBuildStatus {
36 private final ProjectDependencyGraph projectDependencyGraph;
37
38 private final Collection<String> blackListedProjects = Collections.synchronizedSet(new HashSet<String>());
39
40 private volatile boolean halted = false;
41
42 public ReactorBuildStatus(ProjectDependencyGraph projectDependencyGraph) {
43 this.projectDependencyGraph = projectDependencyGraph;
44 }
45
46 public boolean isBlackListed(MavenProject project) {
47 return blackListedProjects.contains(BuilderCommon.getKey(project));
48 }
49
50 public void blackList(MavenProject project) {
51 if (blackListedProjects.add(BuilderCommon.getKey(project)) && projectDependencyGraph != null) {
52 for (MavenProject downstreamProject : projectDependencyGraph.getDownstreamProjects(project, true)) {
53 blackListedProjects.add(BuilderCommon.getKey(downstreamProject));
54 }
55 }
56 }
57
58 public void halt() {
59 halted = true;
60 }
61
62 public boolean isHalted() {
63 return halted;
64 }
65
66 public boolean isHaltedOrBlacklisted(MavenProject mavenProject) {
67 return isBlackListed(mavenProject) || isHalted();
68 }
69 }