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() {