Skip to content

Commit eab8be9

Browse files
committed
Do not fake location when loading consumer pom
1 parent 130a262 commit eab8be9

File tree

2 files changed

+44
-108
lines changed

2 files changed

+44
-108
lines changed

impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java

Lines changed: 1 addition & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,9 @@
2121
import javax.inject.Inject;
2222
import javax.inject.Named;
2323

24-
import java.io.File;
25-
import java.io.IOException;
26-
import java.io.InputStream;
27-
import java.nio.file.Files;
2824
import java.nio.file.Path;
2925
import java.util.ArrayList;
3026
import java.util.List;
31-
import java.util.Objects;
3227
import java.util.stream.Collectors;
3328

3429
import org.apache.maven.api.SessionData;
@@ -44,7 +39,6 @@
4439
import org.apache.maven.api.services.ModelBuilderRequest;
4540
import org.apache.maven.api.services.ModelBuilderResult;
4641
import org.apache.maven.api.services.ModelSource;
47-
import org.apache.maven.api.services.Source;
4842
import org.apache.maven.api.services.model.LifecycleBindingsInjector;
4943
import org.apache.maven.internal.impl.InternalSession;
5044
import org.apache.maven.model.v4.MavenModelVersion;
@@ -97,8 +91,7 @@ private ModelBuilderResult buildModel(RepositorySystemSession session, MavenProj
9791
ModelBuilderRequest.ModelBuilderRequestBuilder request = ModelBuilderRequest.builder();
9892
request.requestType(ModelBuilderRequest.RequestType.BUILD_CONSUMER);
9993
request.session(iSession);
100-
// in order to resolve parents, we need to fake being at the correct location
101-
request.source(new PomConsumerModelSource(project.getModel().getPomPath(), src));
94+
request.source(ModelSource.fromPath(src));
10295
request.locationTracking(false);
10396
request.systemProperties(session.getSystemProperties());
10497
request.userProperties(session.getUserProperties());
@@ -208,63 +201,4 @@ private static List<Repository> pruneRepositories(List<Repository> repositories)
208201
.filter(r -> !org.apache.maven.api.Repository.CENTRAL_ID.equals(r.getId()))
209202
.collect(Collectors.toList());
210203
}
211-
212-
static class PomConsumerModelSource implements ModelSource {
213-
final Path path;
214-
final Path src;
215-
216-
PomConsumerModelSource(Path path, Path src) {
217-
this.path = path;
218-
this.src = src;
219-
}
220-
221-
@Override
222-
public Path getPath() {
223-
return path;
224-
}
225-
226-
@Override
227-
public InputStream openStream() throws IOException {
228-
return Files.newInputStream(src);
229-
}
230-
231-
@Override
232-
public String getLocation() {
233-
return src.toString();
234-
}
235-
236-
@Override
237-
public Source resolve(String relative) {
238-
return ModelSource.fromPath(path.resolve(relative));
239-
}
240-
241-
@Override
242-
public ModelSource resolve(ModelLocator locator, String relative) {
243-
String norm = relative.replace('\\', File.separatorChar).replace('/', File.separatorChar);
244-
Path path = getPath().getParent().resolve(norm);
245-
Path relatedPom = locator.locateExistingPom(path);
246-
if (relatedPom != null) {
247-
return ModelSource.fromPath(relatedPom);
248-
}
249-
return null;
250-
}
251-
252-
@Override
253-
public boolean equals(Object o) {
254-
return this == o
255-
|| o.getClass() == getClass()
256-
&& Objects.equals(path, ((PomConsumerModelSource) o).path)
257-
&& Objects.equals(src, ((PomConsumerModelSource) o).src);
258-
}
259-
260-
@Override
261-
public int hashCode() {
262-
return Objects.hash(path, src);
263-
}
264-
265-
@Override
266-
public String toString() {
267-
return "PomConsumerModelSource[" + "path=" + path + ']';
268-
}
269-
}
270204
}

impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelBuilder.java

Lines changed: 43 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -200,40 +200,42 @@ public DefaultModelBuilder(
200200
}
201201

202202
public ModelBuilderSession newSession() {
203-
return new ModelBuilderSession() {
204-
DefaultModelBuilderSession mainSession;
205-
206-
/**
207-
* Builds a model based on the provided ModelBuilderRequest.
208-
*
209-
* @param request The request containing the parameters for building the model.
210-
* @return The result of the model building process.
211-
* @throws ModelBuilderException If an error occurs during model building.
212-
*/
213-
@Override
214-
public ModelBuilderResult build(ModelBuilderRequest request) throws ModelBuilderException {
215-
// Create or derive a session based on the request
216-
DefaultModelBuilderSession session;
217-
if (mainSession == null) {
218-
mainSession = new DefaultModelBuilderSession(request);
219-
session = mainSession;
220-
} else {
221-
session = mainSession.derive(request, new DefaultModelBuilderResult());
222-
}
223-
// Build the request
224-
if (request.getRequestType() == ModelBuilderRequest.RequestType.BUILD_PROJECT) {
225-
// build the build poms
226-
session.buildBuildPom();
227-
} else {
228-
// simply build the effective model
229-
session.buildEffectiveModel(new LinkedHashSet<>());
230-
}
231-
return session.result;
203+
return new ModelBuilderSessionImpl();
204+
}
205+
206+
protected class ModelBuilderSessionImpl implements ModelBuilderSession {
207+
ModelBuilderSessionState mainSession;
208+
209+
/**
210+
* Builds a model based on the provided ModelBuilderRequest.
211+
*
212+
* @param request The request containing the parameters for building the model.
213+
* @return The result of the model building process.
214+
* @throws ModelBuilderException If an error occurs during model building.
215+
*/
216+
@Override
217+
public ModelBuilderResult build(ModelBuilderRequest request) throws ModelBuilderException {
218+
// Create or derive a session based on the request
219+
ModelBuilderSessionState session;
220+
if (mainSession == null) {
221+
mainSession = new ModelBuilderSessionState(request);
222+
session = mainSession;
223+
} else {
224+
session = mainSession.derive(request, new DefaultModelBuilderResult());
225+
}
226+
// Build the request
227+
if (request.getRequestType() == ModelBuilderRequest.RequestType.BUILD_PROJECT) {
228+
// build the build poms
229+
session.buildBuildPom();
230+
} else {
231+
// simply build the effective model
232+
session.buildEffectiveModel(new LinkedHashSet<>());
232233
}
233-
};
234+
return session.result;
235+
}
234236
}
235237

236-
protected class DefaultModelBuilderSession implements ModelProblemCollector {
238+
protected class ModelBuilderSessionState implements ModelProblemCollector {
237239
private static final Pattern REGEX = Pattern.compile("\\$\\{([^}]+)}");
238240

239241
final Session session;
@@ -251,7 +253,7 @@ protected class DefaultModelBuilderSession implements ModelProblemCollector {
251253
List<RemoteRepository> externalRepositories;
252254
List<RemoteRepository> repositories;
253255

254-
DefaultModelBuilderSession(ModelBuilderRequest request) {
256+
ModelBuilderSessionState(ModelBuilderRequest request) {
255257
this(
256258
request.getSession(),
257259
request,
@@ -274,7 +276,7 @@ static List<RemoteRepository> repos(ModelBuilderRequest request) {
274276
}
275277

276278
@SuppressWarnings("checkstyle:ParameterNumber")
277-
private DefaultModelBuilderSession(
279+
private ModelBuilderSessionState(
278280
Session session,
279281
ModelBuilderRequest request,
280282
DefaultModelBuilderResult result,
@@ -296,26 +298,26 @@ private DefaultModelBuilderSession(
296298
this.result.setSource(this.request.getSource());
297299
}
298300

299-
DefaultModelBuilderSession derive(ModelSource source) {
301+
ModelBuilderSessionState derive(ModelSource source) {
300302
return derive(source, new DefaultModelBuilderResult(result));
301303
}
302304

303-
DefaultModelBuilderSession derive(ModelSource source, DefaultModelBuilderResult result) {
305+
ModelBuilderSessionState derive(ModelSource source, DefaultModelBuilderResult result) {
304306
return derive(ModelBuilderRequest.build(request, source), result);
305307
}
306308

307309
/**
308310
* Creates a new session, sharing cached datas and propagating errors.
309311
*/
310-
DefaultModelBuilderSession derive(ModelBuilderRequest request) {
312+
ModelBuilderSessionState derive(ModelBuilderRequest request) {
311313
return derive(request, new DefaultModelBuilderResult(result));
312314
}
313315

314-
DefaultModelBuilderSession derive(ModelBuilderRequest request, DefaultModelBuilderResult result) {
316+
ModelBuilderSessionState derive(ModelBuilderRequest request, DefaultModelBuilderResult result) {
315317
if (session != request.getSession()) {
316318
throw new IllegalArgumentException("Session mismatch");
317319
}
318-
return new DefaultModelBuilderSession(
320+
return new ModelBuilderSessionState(
319321
session,
320322
request,
321323
result,
@@ -669,7 +671,7 @@ private void buildBuildPom() throws ModelBuilderException {
669671
try (PhasingExecutor executor = createExecutor()) {
670672
for (DefaultModelBuilderResult r : allResults) {
671673
executor.execute(() -> {
672-
DefaultModelBuilderSession mbs = derive(r.getSource(), r);
674+
ModelBuilderSessionState mbs = derive(r.getSource(), r);
673675
try {
674676
mbs.buildEffectiveModel(new LinkedHashSet<>());
675677
} catch (ModelBuilderException e) {
@@ -1689,7 +1691,7 @@ private Model doLoadDependencyManagement(
16891691
.source(importSource)
16901692
.repositories(repositories)
16911693
.build();
1692-
DefaultModelBuilderSession modelBuilderSession = derive(importRequest);
1694+
ModelBuilderSessionState modelBuilderSession = derive(importRequest);
16931695
// build the effective model
16941696
modelBuilderSession.buildEffectiveModel(importIds);
16951697
importResult = modelBuilderSession.result;
@@ -1816,7 +1818,7 @@ private static List<String> getSubprojects(Model activated) {
18161818
}
18171819

18181820
public Model buildRawModel(ModelBuilderRequest request) throws ModelBuilderException {
1819-
DefaultModelBuilderSession build = new DefaultModelBuilderSession(request);
1821+
ModelBuilderSessionState build = new ModelBuilderSessionState(request);
18201822
Model model = build.readRawModel();
18211823
if (((ModelProblemCollector) build).hasErrors()) {
18221824
throw build.newModelBuilderException();

0 commit comments

Comments
 (0)