This is an automated email from the ASF dual-hosted git repository.

cstamas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git


The following commit(s) were added to refs/heads/master by this push:
     new 2e40f22dd ScopeManager: do not interfere with session graph 
transformer (#1650)
2e40f22dd is described below

commit 2e40f22dd6e35b782309619219f0e5aa0a6e032b
Author: Tamas Cservenak <[email protected]>
AuthorDate: Tue Nov 4 19:52:21 2025 +0100

    ScopeManager: do not interfere with session graph transformer (#1650)
    
    Just assume integrator (ie Maven) knows what is doing, as IF integrator 
wants to use ScopeManager, it needs to tie it into proper components (see 
suppliers). OTOH, suppliers are cleaned up and aligned.
    
    Otherwise this is really just a nasty issue/bug on integrator side.
    
    Fixes #1648
---
 .../aether/impl/scope/InternalScopeManager.java    | 20 ++-------
 .../impl/collect/DependencyCollectorDelegate.java  |  5 +--
 .../internal/impl/scope/ScopeManagerImpl.java      | 52 +++++++++-------------
 .../aether/supplier/SessionBuilderSupplier.java    | 15 ++++---
 .../aether/supplier/SessionBuilderSupplier.java    | 10 ++---
 5 files changed, 43 insertions(+), 59 deletions(-)

diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/scope/InternalScopeManager.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/scope/InternalScopeManager.java
index ac3643f75..2482490a0 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/scope/InternalScopeManager.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/scope/InternalScopeManager.java
@@ -21,10 +21,9 @@ package org.eclipse.aether.impl.scope;
 import java.util.Collection;
 import java.util.Optional;
 
+import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.collection.CollectResult;
-import org.eclipse.aether.collection.DependencyGraphTransformer;
 import org.eclipse.aether.collection.DependencySelector;
-import org.eclipse.aether.graph.DependencyFilter;
 import org.eclipse.aether.scope.DependencyScope;
 import org.eclipse.aether.scope.ResolutionScope;
 import org.eclipse.aether.scope.ScopeManager;
@@ -58,25 +57,14 @@ public interface InternalScopeManager extends ScopeManager {
      * Resolver specific: dependency selector to be used to support this scope 
(with its dependency
      * and resolution scopes).
      */
-    DependencySelector getDependencySelector(ResolutionScope resolutionScope);
-
-    /**
-     * Resolver specific: dependency graph transformer to be used to support 
this scope (with its dependency
-     * and resolution scopes).
-     */
-    DependencyGraphTransformer getDependencyGraphTransformer(ResolutionScope 
resolutionScope);
+    DependencySelector getDependencySelector(RepositorySystemSession session, 
ResolutionScope resolutionScope);
 
     /**
      * Resolver specific: post-processing to be used to support this scope 
(with its dependency
      * and resolution scopes).
      */
-    CollectResult postProcess(ResolutionScope resolutionScope, CollectResult 
collectResult);
-
-    /**
-     * Resolver specific: dependency filter to be used to support this scope 
(with its dependency
-     * and resolution scopes).
-     */
-    DependencyFilter getDependencyFilter(ResolutionScope resolutionScope);
+    CollectResult postProcess(
+            RepositorySystemSession session, ResolutionScope resolutionScope, 
CollectResult collectResult);
 
     /**
      * The mode of resolution scope: eliminate (remove all occurrences) or 
just remove.
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegate.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegate.java
index 31a5dd919..8e715efdd 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegate.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegate.java
@@ -264,7 +264,7 @@ public abstract class DependencyCollectorDelegate 
implements DependencyCollector
         }
 
         if (request.getResolutionScope() != null) {
-            return scopeManager.postProcess(request.getResolutionScope(), 
result);
+            return scopeManager.postProcess(session, 
request.getResolutionScope(), result);
         } else {
             return result;
         }
@@ -312,8 +312,7 @@ public abstract class DependencyCollectorDelegate 
implements DependencyCollector
         ResolutionScope resolutionScope = collectRequest.getResolutionScope();
         if (resolutionScope != null) {
             requireNonNull(scopeManager, "ScopeManager is not set on session");
-            
optimized.setDependencySelector(scopeManager.getDependencySelector(resolutionScope));
-            
optimized.setDependencyGraphTransformer(scopeManager.getDependencyGraphTransformer(resolutionScope));
+            
optimized.setDependencySelector(scopeManager.getDependencySelector(session, 
resolutionScope));
         }
         return optimized;
     }
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/scope/ScopeManagerImpl.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/scope/ScopeManagerImpl.java
index becfaffd4..e507cef36 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/scope/ScopeManagerImpl.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/scope/ScopeManagerImpl.java
@@ -30,11 +30,10 @@ import java.util.Set;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
+import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.artifact.Artifact;
 import org.eclipse.aether.collection.CollectResult;
-import org.eclipse.aether.collection.DependencyGraphTransformer;
 import org.eclipse.aether.collection.DependencySelector;
-import org.eclipse.aether.graph.DependencyFilter;
 import org.eclipse.aether.impl.scope.BuildPath;
 import org.eclipse.aether.impl.scope.BuildScope;
 import org.eclipse.aether.impl.scope.BuildScopeQuery;
@@ -48,10 +47,6 @@ import org.eclipse.aether.scope.SystemDependencyScope;
 import org.eclipse.aether.util.filter.ScopeDependencyFilter;
 import org.eclipse.aether.util.graph.selector.AndDependencySelector;
 import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
-import 
org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer;
-import org.eclipse.aether.util.graph.transformer.ConfigurableVersionSelector;
-import org.eclipse.aether.util.graph.transformer.ConflictResolver;
-import org.eclipse.aether.util.graph.transformer.SimpleOptionalitySelector;
 import org.eclipse.aether.util.graph.visitor.CloningDependencyVisitor;
 import org.eclipse.aether.util.graph.visitor.FilteringDependencyVisitor;
 
@@ -143,31 +138,33 @@ public final class ScopeManagerImpl implements 
InternalScopeManager {
     }
 
     @Override
-    public DependencySelector getDependencySelector(ResolutionScope 
resolutionScope) {
+    public DependencySelector getDependencySelector(RepositorySystemSession 
session, ResolutionScope resolutionScope) {
         ResolutionScopeImpl rs = translate(resolutionScope);
         Set<String> directlyExcludedLabels = getDirectlyExcludedLabels(rs);
         Set<String> transitivelyExcludedLabels = 
getTransitivelyExcludedLabels(rs);
-
-        return new AndDependencySelector(
-                rs.getMode() == Mode.ELIMINATE
-                        ? ScopeDependencySelector.fromTo(2, 2, null, 
directlyExcludedLabels)
-                        : ScopeDependencySelector.fromTo(1, 2, null, 
directlyExcludedLabels),
-                ScopeDependencySelector.from(2, null, 
transitivelyExcludedLabels),
-                OptionalDependencySelector.fromDirect(),
-                new ExclusionDependencySelector());
-    }
-
-    @Override
-    public DependencyGraphTransformer 
getDependencyGraphTransformer(ResolutionScope resolutionScope) {
-        return new ChainedDependencyGraphTransformer(
-                new ConflictResolver(
-                        new ConfigurableVersionSelector(), new 
ManagedScopeSelector(this),
-                        new SimpleOptionalitySelector(), new 
ManagedScopeDeriver(this)),
-                new ManagedDependencyContextRefiner(this));
+        if (session.getDependencySelector() != null) {
+            return new AndDependencySelector(
+                    rs.getMode() == Mode.ELIMINATE
+                            ? ScopeDependencySelector.fromTo(2, 2, null, 
directlyExcludedLabels)
+                            : ScopeDependencySelector.fromTo(1, 2, null, 
directlyExcludedLabels),
+                    ScopeDependencySelector.from(2, null, 
transitivelyExcludedLabels),
+                    OptionalDependencySelector.fromDirect(),
+                    new ExclusionDependencySelector(),
+                    session.getDependencySelector());
+        } else {
+            return new AndDependencySelector(
+                    rs.getMode() == Mode.ELIMINATE
+                            ? ScopeDependencySelector.fromTo(2, 2, null, 
directlyExcludedLabels)
+                            : ScopeDependencySelector.fromTo(1, 2, null, 
directlyExcludedLabels),
+                    ScopeDependencySelector.from(2, null, 
transitivelyExcludedLabels),
+                    OptionalDependencySelector.fromDirect(),
+                    new ExclusionDependencySelector());
+        }
     }
 
     @Override
-    public CollectResult postProcess(ResolutionScope resolutionScope, 
CollectResult collectResult) {
+    public CollectResult postProcess(
+            RepositorySystemSession session, ResolutionScope resolutionScope, 
CollectResult collectResult) {
         ResolutionScopeImpl rs = translate(resolutionScope);
         if (rs.getMode() == Mode.ELIMINATE) {
             CloningDependencyVisitor cloning = new CloningDependencyVisitor();
@@ -179,11 +176,6 @@ public final class ScopeManagerImpl implements 
InternalScopeManager {
         return collectResult;
     }
 
-    @Override
-    public DependencyFilter getDependencyFilter(ResolutionScope 
resolutionScope) {
-        return new ScopeDependencyFilter(null, 
getDirectlyExcludedLabels(translate(resolutionScope)));
-    }
-
     @Override
     public DependencyScope createDependencyScope(String id, boolean 
transitive, Collection<BuildScopeQuery> presence) {
         return new DependencyScopeImpl(id, transitive, presence);
diff --git 
a/maven-resolver-supplier-mvn3/src/main/java/org/eclipse/aether/supplier/SessionBuilderSupplier.java
 
b/maven-resolver-supplier-mvn3/src/main/java/org/eclipse/aether/supplier/SessionBuilderSupplier.java
index 43d186990..834c8bc4f 100644
--- 
a/maven-resolver-supplier-mvn3/src/main/java/org/eclipse/aether/supplier/SessionBuilderSupplier.java
+++ 
b/maven-resolver-supplier-mvn3/src/main/java/org/eclipse/aether/supplier/SessionBuilderSupplier.java
@@ -32,6 +32,7 @@ import 
org.eclipse.aether.collection.DependencyGraphTransformer;
 import org.eclipse.aether.collection.DependencyManager;
 import org.eclipse.aether.collection.DependencySelector;
 import org.eclipse.aether.collection.DependencyTraverser;
+import org.eclipse.aether.impl.scope.InternalScopeManager;
 import org.eclipse.aether.internal.impl.scope.ManagedDependencyContextRefiner;
 import org.eclipse.aether.internal.impl.scope.ManagedScopeDeriver;
 import org.eclipse.aether.internal.impl.scope.ManagedScopeSelector;
@@ -65,7 +66,7 @@ import static java.util.Objects.requireNonNull;
  */
 public class SessionBuilderSupplier implements Supplier<SessionBuilder> {
     protected final RepositorySystem repositorySystem;
-    protected final ScopeManagerImpl scopeManager;
+    protected final InternalScopeManager scopeManager;
 
     public SessionBuilderSupplier(RepositorySystem repositorySystem) {
         this.repositorySystem = requireNonNull(repositorySystem);
@@ -88,12 +89,16 @@ public class SessionBuilderSupplier implements 
Supplier<SessionBuilder> {
         session.setArtifactDescriptorPolicy(getArtifactDescriptorPolicy());
     }
 
+    protected InternalScopeManager getScopeManager() {
+        return this.scopeManager;
+    }
+
     protected DependencyTraverser getDependencyTraverser() {
         return new FatArtifactTraverser();
     }
 
     protected DependencyManager getDependencyManager() {
-        return new ClassicDependencyManager(scopeManager);
+        return new ClassicDependencyManager(getScopeManager());
     }
 
     protected DependencySelector getDependencySelector() {
@@ -110,10 +115,10 @@ public class SessionBuilderSupplier implements 
Supplier<SessionBuilder> {
         return new ChainedDependencyGraphTransformer(
                 new ConflictResolver(
                         new ConfigurableVersionSelector(),
-                        new ManagedScopeSelector(this.scopeManager),
+                        new ManagedScopeSelector(getScopeManager()),
                         new SimpleOptionalitySelector(),
-                        new ManagedScopeDeriver(this.scopeManager)),
-                new ManagedDependencyContextRefiner(this.scopeManager));
+                        new ManagedScopeDeriver(getScopeManager())),
+                new ManagedDependencyContextRefiner(getScopeManager()));
     }
 
     protected ArtifactTypeRegistry getArtifactTypeRegistry() {
diff --git 
a/maven-resolver-supplier-mvn4/src/main/java/org/eclipse/aether/supplier/SessionBuilderSupplier.java
 
b/maven-resolver-supplier-mvn4/src/main/java/org/eclipse/aether/supplier/SessionBuilderSupplier.java
index 1d6c6cf13..deb32e9ea 100644
--- 
a/maven-resolver-supplier-mvn4/src/main/java/org/eclipse/aether/supplier/SessionBuilderSupplier.java
+++ 
b/maven-resolver-supplier-mvn4/src/main/java/org/eclipse/aether/supplier/SessionBuilderSupplier.java
@@ -95,8 +95,8 @@ public class SessionBuilderSupplier {
 
     public DependencyManager getDependencyManager(boolean transitive) {
         return transitive
-                ? new TransitiveDependencyManager(this.getScopeManager())
-                : new ClassicDependencyManager(this.scopeManager);
+                ? new TransitiveDependencyManager(getScopeManager())
+                : new ClassicDependencyManager(getScopeManager());
     }
 
     protected DependencySelector getDependencySelector() {
@@ -112,10 +112,10 @@ public class SessionBuilderSupplier {
         return new ChainedDependencyGraphTransformer(
                 new ConflictResolver(
                         new ConfigurableVersionSelector(),
-                        new ManagedScopeSelector(this.getScopeManager()),
+                        new ManagedScopeSelector(getScopeManager()),
                         new SimpleOptionalitySelector(),
-                        new ManagedScopeDeriver(this.getScopeManager())),
-                new ManagedDependencyContextRefiner(this.getScopeManager()));
+                        new ManagedScopeDeriver(getScopeManager())),
+                new ManagedDependencyContextRefiner(getScopeManager()));
     }
 
     protected ArtifactTypeRegistry getArtifactTypeRegistry() {

Reply via email to