gnodet commented on code in PR #1957:
URL: https://github.com/apache/maven-resolver/pull/1957#discussion_r3570266683
##########
maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java:
##########
@@ -182,77 +219,106 @@ public DefaultRepositorySystem(
@Override
public VersionResult resolveVersion(RepositorySystemSession session,
VersionRequest request)
throws VersionResolutionException {
- validateSession(session);
requireNonNull(request, "request cannot be null");
- repositorySystemValidator.validateVersionRequest(session, request);
+ if (!isReentrant(request.getTrace())) {
+ validateSession(session);
+ repositorySystemValidator.validateVersionRequest(session, request);
+ request.setTrace(RequestTrace.newChild(request.getTrace(),
REPOSITORY_SYSTEM_CALL));
+ }
return versionResolver.resolveVersion(session, request);
}
@Override
public VersionRangeResult resolveVersionRange(RepositorySystemSession
session, VersionRangeRequest request)
throws VersionRangeResolutionException {
- validateSession(session);
requireNonNull(request, "request cannot be null");
- repositorySystemValidator.validateVersionRangeRequest(session,
request);
+ if (!isReentrant(request.getTrace())) {
+ validateSession(session);
+ repositorySystemValidator.validateVersionRangeRequest(session,
request);
+ request.setTrace(RequestTrace.newChild(request.getTrace(),
REPOSITORY_SYSTEM_CALL));
+ }
return versionRangeResolver.resolveVersionRange(session, request);
}
@Override
public ArtifactDescriptorResult readArtifactDescriptor(
RepositorySystemSession session, ArtifactDescriptorRequest
request) throws ArtifactDescriptorException {
- validateSession(session);
requireNonNull(request, "request cannot be null");
- repositorySystemValidator.validateArtifactDescriptorRequest(session,
request);
+ boolean outermost = !isReentrant(request.getTrace());
+ if (outermost) {
+ validateSession(session);
+
repositorySystemValidator.validateArtifactDescriptorRequest(session, request);
+ request.setTrace(RequestTrace.newChild(request.getTrace(),
REPOSITORY_SYSTEM_CALL));
+ }
ArtifactDescriptorResult descriptorResult =
artifactDescriptorReader.readArtifactDescriptor(session, request);
- for (ArtifactDecorator decorator :
Utils.getArtifactDecorators(session, artifactDecoratorFactories)) {
-
descriptorResult.setArtifact(decorator.decorateArtifact(descriptorResult));
+ if (outermost) {
+ for (ArtifactDecorator decorator :
Utils.getArtifactDecorators(session, artifactDecoratorFactories)) {
+
descriptorResult.setArtifact(decorator.decorateArtifact(descriptorResult));
+ }
}
return descriptorResult;
}
@Override
public ArtifactResult resolveArtifact(RepositorySystemSession session,
ArtifactRequest request)
throws ArtifactResolutionException {
- validateSession(session);
requireNonNull(request, "request cannot be null");
- repositorySystemValidator.validateArtifactRequests(session,
Collections.singleton(request));
+ if (!isReentrant(request.getTrace())) {
+ validateSession(session);
+ repositorySystemValidator.validateArtifactRequests(session,
Collections.singleton(request));
+ request.setTrace(RequestTrace.newChild(request.getTrace(),
REPOSITORY_SYSTEM_CALL));
+ }
return artifactResolver.resolveArtifact(session, request);
}
@Override
public List<ArtifactResult> resolveArtifacts(
RepositorySystemSession session, Collection<? extends
ArtifactRequest> requests)
throws ArtifactResolutionException {
- validateSession(session);
requireNonNull(requests, "requests cannot be null");
- repositorySystemValidator.validateArtifactRequests(session, requests);
+ RequestTrace firstTrace =
+
requests.stream().map(ArtifactRequest::getTrace).findFirst().orElse(null);
+ if (!isReentrant(firstTrace)) {
+ validateSession(session);
+ repositorySystemValidator.validateArtifactRequests(session,
requests);
+ }
return artifactResolver.resolveArtifacts(session, requests);
}
@Override
public List<MetadataResult> resolveMetadata(
RepositorySystemSession session, Collection<? extends
MetadataRequest> requests) {
- validateSession(session);
requireNonNull(requests, "requests cannot be null");
- repositorySystemValidator.validateMetadataRequests(session, requests);
+ RequestTrace firstTrace =
+
requests.stream().map(MetadataRequest::getTrace).findFirst().orElse(null);
+ if (!isReentrant(firstTrace)) {
+ validateSession(session);
+ repositorySystemValidator.validateMetadataRequests(session,
requests);
Review Comment:
Same fix applied in eb1e2af — `resolveMetadata()` now also stamps the marker
into each request's trace on outermost calls.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]