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.Collections;
22 import java.util.HashSet;
23 import java.util.Iterator;
24 import java.util.List;
25 import java.util.Map;
26 import java.util.Set;
27 import java.util.function.Function;
28 import java.util.stream.Collectors;
29
30 import org.apache.maven.artifact.ArtifactUtils;
31 import org.apache.maven.execution.MavenSession;
32 import org.apache.maven.project.MavenProject;
33
34
35
36
37
38
39
40
41
42
43 public class ProjectBuildList implements Iterable<ProjectSegment> {
44 private final List<ProjectSegment> items;
45
46 public ProjectBuildList(List<ProjectSegment> items) {
47 this.items = Collections.unmodifiableList(items);
48 }
49
50
51
52
53
54
55
56 public ProjectBuildList getByTaskSegment(TaskSegment taskSegment) {
57 return new ProjectBuildList(
58 items.stream().filter(pb -> taskSegment == pb.getTaskSegment()).collect(Collectors.toList()));
59 }
60
61 public Map<MavenProject, ProjectSegment> selectSegment(TaskSegment taskSegment) {
62 return items.stream()
63 .filter(pb -> taskSegment == pb.getTaskSegment())
64 .collect(Collectors.toMap(ProjectSegment::getProject, Function.identity()));
65 }
66
67
68
69
70
71
72 public ProjectSegment findByMavenProject(MavenProject mavenProject) {
73 return items.stream()
74 .filter(pb -> mavenProject.equals(pb.getProject()))
75 .findFirst()
76 .orElse(null);
77 }
78
79 public Iterator<ProjectSegment> iterator() {
80 return items.iterator();
81 }
82
83 public void closeAll() {
84 for (ProjectSegment item : items) {
85 MavenSession sessionForThisModule = item.getSession();
86 sessionForThisModule.setCurrentProject(null);
87 }
88 }
89
90 public int size() {
91 return items.size();
92 }
93
94 public ProjectSegment get(int index) {
95 return items.get(index);
96 }
97
98 public Set<String> getReactorProjectKeys() {
99 Set<String> projectKeys = new HashSet<>(items.size() * 2);
100 for (ProjectSegment projectBuild : items) {
101 MavenProject project = projectBuild.getProject();
102 String key = ArtifactUtils.key(project.getGroupId(), project.getArtifactId(), project.getVersion());
103 projectKeys.add(key);
104 }
105 return projectKeys;
106 }
107
108 public boolean isEmpty() {
109 return items.isEmpty();
110 }
111
112
113
114
115 public Set<MavenProject> getProjects() {
116 return items.stream().map(ProjectSegment::getProject).collect(Collectors.toSet());
117 }
118 }