gnodet commented on code in PR #1957:
URL: https://github.com/apache/maven-resolver/pull/1957#discussion_r3570265369
##########
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);
Review Comment:
Good catch — fixed in eb1e2af. `resolveArtifacts()` now stamps
`REPOSITORY_SYSTEM_CALL` into each request's trace on outermost calls, matching
the single-request methods.
##########
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);
Review Comment:
Good catch — fixed in eb1e2af. `resolveArtifacts()` now stamps
`REPOSITORY_SYSTEM_CALL` into each request's trace on outermost calls, matching
the single-request methods.
--
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]