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