1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.impl.model;
20
21 import java.util.ArrayList;
22 import java.util.List;
23 import java.util.stream.Collectors;
24 import java.util.stream.Stream;
25
26 import org.apache.maven.api.model.Model;
27 import org.apache.maven.api.model.Profile;
28 import org.apache.maven.api.services.ModelBuilderRequest;
29 import org.apache.maven.api.services.ModelBuilderResult;
30 import org.apache.maven.api.services.ModelProblem;
31 import org.apache.maven.api.services.ModelSource;
32 import org.apache.maven.api.services.ProblemCollector;
33
34
35
36
37 class DefaultModelBuilderResult implements ModelBuilderResult {
38 private ModelBuilderRequest request;
39 private ModelSource source;
40 private Model fileModel;
41 private Model rawModel;
42 private Model parentModel;
43 private Model effectiveModel;
44 private List<Profile> activePomProfiles;
45 private List<Profile> activeExternalProfiles;
46 private final ProblemCollector<ModelProblem> problemCollector;
47 private final List<DefaultModelBuilderResult> children = new ArrayList<>();
48
49 DefaultModelBuilderResult(ModelBuilderRequest request, ProblemCollector<ModelProblem> problemCollector) {
50 this.request = request;
51 this.problemCollector = problemCollector;
52 }
53
54 @Override
55 public ModelBuilderRequest getRequest() {
56 return request;
57 }
58
59 @Override
60 public ModelSource getSource() {
61 return source;
62 }
63
64 public void setSource(ModelSource source) {
65 this.source = source;
66 }
67
68 @Override
69 public Model getFileModel() {
70 return fileModel;
71 }
72
73 public void setFileModel(Model fileModel) {
74 this.fileModel = fileModel;
75 }
76
77 @Override
78 public Model getRawModel() {
79 return rawModel;
80 }
81
82 public void setRawModel(Model rawModel) {
83 this.rawModel = rawModel;
84 }
85
86 @Override
87 public Model getParentModel() {
88 return parentModel;
89 }
90
91 public void setParentModel(Model parentModel) {
92 this.parentModel = parentModel;
93 }
94
95 @Override
96 public Model getEffectiveModel() {
97 return effectiveModel;
98 }
99
100 public void setEffectiveModel(Model model) {
101 this.effectiveModel = model;
102 }
103
104 @Override
105 public List<Profile> getActivePomProfiles() {
106 return activePomProfiles;
107 }
108
109 public void setActivePomProfiles(List<Profile> activeProfiles) {
110 this.activePomProfiles = activeProfiles;
111 }
112
113 @Override
114 public List<Profile> getActiveExternalProfiles() {
115 return activeExternalProfiles;
116 }
117
118 public void setActiveExternalProfiles(List<Profile> activeProfiles) {
119 this.activeExternalProfiles = activeProfiles;
120 }
121
122
123
124
125
126
127
128 @Override
129 public ProblemCollector<ModelProblem> getProblemCollector() {
130 return problemCollector;
131 }
132
133 @Override
134 public List<DefaultModelBuilderResult> getChildren() {
135 return children;
136 }
137
138 public String toString() {
139 String modelId;
140 if (effectiveModel != null) {
141 modelId = effectiveModel.getId();
142 } else if (rawModel != null) {
143 modelId = rawModel.getId();
144 } else if (fileModel != null) {
145 modelId = fileModel.getId();
146 } else {
147 modelId = null;
148 }
149 if (problemCollector.hasWarningProblems()) {
150 int totalProblems = problemCollector.totalProblemsReported();
151 StringBuilder sb = new StringBuilder();
152 sb.append(totalProblems)
153 .append(
154 (totalProblems == 1)
155 ? " problem was "
156 : " problems were encountered while building the effective model");
157 if (modelId != null && !modelId.isEmpty()) {
158 sb.append(" for ");
159 sb.append(modelId);
160 }
161 for (ModelProblem problem : problemCollector.problems().toList()) {
162 sb.append(System.lineSeparator());
163 sb.append(" - [");
164 sb.append(problem.getSeverity());
165 sb.append("] ");
166 if (problem.getMessage() != null && !problem.getMessage().isEmpty()) {
167 sb.append(problem.getMessage());
168 } else if (problem.getException() != null) {
169 sb.append(problem.getException().toString());
170 }
171 String loc = Stream.of(
172 problem.getModelId().equals(modelId) ? problem.getModelId() : "",
173 problem.getModelId().equals(modelId) ? problem.getSource() : "",
174 problem.getLineNumber() > 0 ? "line " + problem.getLineNumber() : "",
175 problem.getColumnNumber() > 0 ? "column " + problem.getColumnNumber() : "")
176 .filter(s -> !s.isEmpty())
177 .collect(Collectors.joining(", "));
178 if (!loc.isEmpty()) {
179 sb.append(" @ ").append(loc);
180 }
181 }
182 return sb.toString();
183 }
184 return modelId;
185 }
186 }