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]

Reply via email to