Skip to content

Commit 2e40f22

Browse files
authored
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
1 parent d618d63 commit 2e40f22

File tree

5 files changed

+43
-59
lines changed

5 files changed

+43
-59
lines changed

maven-resolver-impl/src/main/java/org/eclipse/aether/impl/scope/InternalScopeManager.java

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,9 @@
2121
import java.util.Collection;
2222
import java.util.Optional;
2323

24+
import org.eclipse.aether.RepositorySystemSession;
2425
import org.eclipse.aether.collection.CollectResult;
25-
import org.eclipse.aether.collection.DependencyGraphTransformer;
2626
import org.eclipse.aether.collection.DependencySelector;
27-
import org.eclipse.aether.graph.DependencyFilter;
2827
import org.eclipse.aether.scope.DependencyScope;
2928
import org.eclipse.aether.scope.ResolutionScope;
3029
import org.eclipse.aether.scope.ScopeManager;
@@ -58,25 +57,14 @@ public interface InternalScopeManager extends ScopeManager {
5857
* Resolver specific: dependency selector to be used to support this scope (with its dependency
5958
* and resolution scopes).
6059
*/
61-
DependencySelector getDependencySelector(ResolutionScope resolutionScope);
62-
63-
/**
64-
* Resolver specific: dependency graph transformer to be used to support this scope (with its dependency
65-
* and resolution scopes).
66-
*/
67-
DependencyGraphTransformer getDependencyGraphTransformer(ResolutionScope resolutionScope);
60+
DependencySelector getDependencySelector(RepositorySystemSession session, ResolutionScope resolutionScope);
6861

6962
/**
7063
* Resolver specific: post-processing to be used to support this scope (with its dependency
7164
* and resolution scopes).
7265
*/
73-
CollectResult postProcess(ResolutionScope resolutionScope, CollectResult collectResult);
74-
75-
/**
76-
* Resolver specific: dependency filter to be used to support this scope (with its dependency
77-
* and resolution scopes).
78-
*/
79-
DependencyFilter getDependencyFilter(ResolutionScope resolutionScope);
66+
CollectResult postProcess(
67+
RepositorySystemSession session, ResolutionScope resolutionScope, CollectResult collectResult);
8068

8169
/**
8270
* The mode of resolution scope: eliminate (remove all occurrences) or just remove.

maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegate.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ public final CollectResult collectDependencies(RepositorySystemSession session,
264264
}
265265

266266
if (request.getResolutionScope() != null) {
267-
return scopeManager.postProcess(request.getResolutionScope(), result);
267+
return scopeManager.postProcess(session, request.getResolutionScope(), result);
268268
} else {
269269
return result;
270270
}
@@ -312,8 +312,7 @@ protected RepositorySystemSession setUpSession(
312312
ResolutionScope resolutionScope = collectRequest.getResolutionScope();
313313
if (resolutionScope != null) {
314314
requireNonNull(scopeManager, "ScopeManager is not set on session");
315-
optimized.setDependencySelector(scopeManager.getDependencySelector(resolutionScope));
316-
optimized.setDependencyGraphTransformer(scopeManager.getDependencyGraphTransformer(resolutionScope));
315+
optimized.setDependencySelector(scopeManager.getDependencySelector(session, resolutionScope));
317316
}
318317
return optimized;
319318
}

maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/scope/ScopeManagerImpl.java

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,10 @@
3030
import java.util.concurrent.atomic.AtomicReference;
3131
import java.util.stream.Collectors;
3232

33+
import org.eclipse.aether.RepositorySystemSession;
3334
import org.eclipse.aether.artifact.Artifact;
3435
import org.eclipse.aether.collection.CollectResult;
35-
import org.eclipse.aether.collection.DependencyGraphTransformer;
3636
import org.eclipse.aether.collection.DependencySelector;
37-
import org.eclipse.aether.graph.DependencyFilter;
3837
import org.eclipse.aether.impl.scope.BuildPath;
3938
import org.eclipse.aether.impl.scope.BuildScope;
4039
import org.eclipse.aether.impl.scope.BuildScopeQuery;
@@ -48,10 +47,6 @@
4847
import org.eclipse.aether.util.filter.ScopeDependencyFilter;
4948
import org.eclipse.aether.util.graph.selector.AndDependencySelector;
5049
import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
51-
import org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer;
52-
import org.eclipse.aether.util.graph.transformer.ConfigurableVersionSelector;
53-
import org.eclipse.aether.util.graph.transformer.ConflictResolver;
54-
import org.eclipse.aether.util.graph.transformer.SimpleOptionalitySelector;
5550
import org.eclipse.aether.util.graph.visitor.CloningDependencyVisitor;
5651
import org.eclipse.aether.util.graph.visitor.FilteringDependencyVisitor;
5752

@@ -143,31 +138,33 @@ public Optional<BuildScope> getDependencyScopeMainProjectBuildScope(DependencySc
143138
}
144139

145140
@Override
146-
public DependencySelector getDependencySelector(ResolutionScope resolutionScope) {
141+
public DependencySelector getDependencySelector(RepositorySystemSession session, ResolutionScope resolutionScope) {
147142
ResolutionScopeImpl rs = translate(resolutionScope);
148143
Set<String> directlyExcludedLabels = getDirectlyExcludedLabels(rs);
149144
Set<String> transitivelyExcludedLabels = getTransitivelyExcludedLabels(rs);
150-
151-
return new AndDependencySelector(
152-
rs.getMode() == Mode.ELIMINATE
153-
? ScopeDependencySelector.fromTo(2, 2, null, directlyExcludedLabels)
154-
: ScopeDependencySelector.fromTo(1, 2, null, directlyExcludedLabels),
155-
ScopeDependencySelector.from(2, null, transitivelyExcludedLabels),
156-
OptionalDependencySelector.fromDirect(),
157-
new ExclusionDependencySelector());
158-
}
159-
160-
@Override
161-
public DependencyGraphTransformer getDependencyGraphTransformer(ResolutionScope resolutionScope) {
162-
return new ChainedDependencyGraphTransformer(
163-
new ConflictResolver(
164-
new ConfigurableVersionSelector(), new ManagedScopeSelector(this),
165-
new SimpleOptionalitySelector(), new ManagedScopeDeriver(this)),
166-
new ManagedDependencyContextRefiner(this));
145+
if (session.getDependencySelector() != null) {
146+
return new AndDependencySelector(
147+
rs.getMode() == Mode.ELIMINATE
148+
? ScopeDependencySelector.fromTo(2, 2, null, directlyExcludedLabels)
149+
: ScopeDependencySelector.fromTo(1, 2, null, directlyExcludedLabels),
150+
ScopeDependencySelector.from(2, null, transitivelyExcludedLabels),
151+
OptionalDependencySelector.fromDirect(),
152+
new ExclusionDependencySelector(),
153+
session.getDependencySelector());
154+
} else {
155+
return new AndDependencySelector(
156+
rs.getMode() == Mode.ELIMINATE
157+
? ScopeDependencySelector.fromTo(2, 2, null, directlyExcludedLabels)
158+
: ScopeDependencySelector.fromTo(1, 2, null, directlyExcludedLabels),
159+
ScopeDependencySelector.from(2, null, transitivelyExcludedLabels),
160+
OptionalDependencySelector.fromDirect(),
161+
new ExclusionDependencySelector());
162+
}
167163
}
168164

169165
@Override
170-
public CollectResult postProcess(ResolutionScope resolutionScope, CollectResult collectResult) {
166+
public CollectResult postProcess(
167+
RepositorySystemSession session, ResolutionScope resolutionScope, CollectResult collectResult) {
171168
ResolutionScopeImpl rs = translate(resolutionScope);
172169
if (rs.getMode() == Mode.ELIMINATE) {
173170
CloningDependencyVisitor cloning = new CloningDependencyVisitor();
@@ -179,11 +176,6 @@ public CollectResult postProcess(ResolutionScope resolutionScope, CollectResult
179176
return collectResult;
180177
}
181178

182-
@Override
183-
public DependencyFilter getDependencyFilter(ResolutionScope resolutionScope) {
184-
return new ScopeDependencyFilter(null, getDirectlyExcludedLabels(translate(resolutionScope)));
185-
}
186-
187179
@Override
188180
public DependencyScope createDependencyScope(String id, boolean transitive, Collection<BuildScopeQuery> presence) {
189181
return new DependencyScopeImpl(id, transitive, presence);

maven-resolver-supplier-mvn3/src/main/java/org/eclipse/aether/supplier/SessionBuilderSupplier.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.eclipse.aether.collection.DependencyManager;
3333
import org.eclipse.aether.collection.DependencySelector;
3434
import org.eclipse.aether.collection.DependencyTraverser;
35+
import org.eclipse.aether.impl.scope.InternalScopeManager;
3536
import org.eclipse.aether.internal.impl.scope.ManagedDependencyContextRefiner;
3637
import org.eclipse.aether.internal.impl.scope.ManagedScopeDeriver;
3738
import org.eclipse.aether.internal.impl.scope.ManagedScopeSelector;
@@ -65,7 +66,7 @@
6566
*/
6667
public class SessionBuilderSupplier implements Supplier<SessionBuilder> {
6768
protected final RepositorySystem repositorySystem;
68-
protected final ScopeManagerImpl scopeManager;
69+
protected final InternalScopeManager scopeManager;
6970

7071
public SessionBuilderSupplier(RepositorySystem repositorySystem) {
7172
this.repositorySystem = requireNonNull(repositorySystem);
@@ -88,12 +89,16 @@ protected void configureSessionBuilder(SessionBuilder session) {
8889
session.setArtifactDescriptorPolicy(getArtifactDescriptorPolicy());
8990
}
9091

92+
protected InternalScopeManager getScopeManager() {
93+
return this.scopeManager;
94+
}
95+
9196
protected DependencyTraverser getDependencyTraverser() {
9297
return new FatArtifactTraverser();
9398
}
9499

95100
protected DependencyManager getDependencyManager() {
96-
return new ClassicDependencyManager(scopeManager);
101+
return new ClassicDependencyManager(getScopeManager());
97102
}
98103

99104
protected DependencySelector getDependencySelector() {
@@ -110,10 +115,10 @@ protected DependencyGraphTransformer getDependencyGraphTransformer() {
110115
return new ChainedDependencyGraphTransformer(
111116
new ConflictResolver(
112117
new ConfigurableVersionSelector(),
113-
new ManagedScopeSelector(this.scopeManager),
118+
new ManagedScopeSelector(getScopeManager()),
114119
new SimpleOptionalitySelector(),
115-
new ManagedScopeDeriver(this.scopeManager)),
116-
new ManagedDependencyContextRefiner(this.scopeManager));
120+
new ManagedScopeDeriver(getScopeManager())),
121+
new ManagedDependencyContextRefiner(getScopeManager()));
117122
}
118123

119124
protected ArtifactTypeRegistry getArtifactTypeRegistry() {

maven-resolver-supplier-mvn4/src/main/java/org/eclipse/aether/supplier/SessionBuilderSupplier.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ protected DependencyManager getDependencyManager() {
9595

9696
public DependencyManager getDependencyManager(boolean transitive) {
9797
return transitive
98-
? new TransitiveDependencyManager(this.getScopeManager())
99-
: new ClassicDependencyManager(this.scopeManager);
98+
? new TransitiveDependencyManager(getScopeManager())
99+
: new ClassicDependencyManager(getScopeManager());
100100
}
101101

102102
protected DependencySelector getDependencySelector() {
@@ -112,10 +112,10 @@ protected DependencyGraphTransformer getDependencyGraphTransformer() {
112112
return new ChainedDependencyGraphTransformer(
113113
new ConflictResolver(
114114
new ConfigurableVersionSelector(),
115-
new ManagedScopeSelector(this.getScopeManager()),
115+
new ManagedScopeSelector(getScopeManager()),
116116
new SimpleOptionalitySelector(),
117-
new ManagedScopeDeriver(this.getScopeManager())),
118-
new ManagedDependencyContextRefiner(this.getScopeManager()));
117+
new ManagedScopeDeriver(getScopeManager())),
118+
new ManagedDependencyContextRefiner(getScopeManager()));
119119
}
120120

121121
protected ArtifactTypeRegistry getArtifactTypeRegistry() {

0 commit comments

Comments
 (0)