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 @Override
139 public String toString() {
140 String modelId;
141 if (effectiveModel != null) {
142 modelId = effectiveModel.getId();
143 } else if (rawModel != null) {
144 modelId = rawModel.getId();
145 } else if (fileModel != null) {
146 modelId = fileModel.getId();
147 } else {
148 modelId = null;
149 }
150 if (problemCollector.hasWarningProblems()) {
151 int totalProblems = problemCollector.totalProblemsReported();
152 StringBuilder sb = new StringBuilder();
153 sb.append(totalProblems)
154 .append(
155 (totalProblems == 1)
156 ? " problem was "
157 : " problems were encountered while building the effective model");
158 if (modelId != null && !modelId.isEmpty()) {
159 sb.append(" for ");
160 sb.append(modelId);
161 }
162 for (ModelProblem problem : problemCollector.problems().toList()) {
163 sb.append(System.lineSeparator());
164 sb.append(" - [");
165 sb.append(problem.getSeverity());
166 sb.append("] ");
167 if (problem.getMessage() != null && !problem.getMessage().isEmpty()) {
168 sb.append(problem.getMessage());
169 } else if (problem.getException() != null) {
170 sb.append(problem.getException().toString());
171 }
172 String loc = Stream.of(
173 problem.getModelId().equals(modelId) ? problem.getModelId() : "",
174 problem.getModelId().equals(modelId) ? problem.getSource() : "",
175 problem.getLineNumber() > 0 ? "line " + problem.getLineNumber() : "",
176 problem.getColumnNumber() > 0 ? "column " + problem.getColumnNumber() : "")
177 .filter(s -> !s.isEmpty())
178 .collect(Collectors.joining(", "));
179 if (!loc.isEmpty()) {
180 sb.append(" @ ").append(loc);
181 }
182 }
183 return sb.toString();
184 }
185 return modelId;
186 }
187 }