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 dc3ceb44 [MRESOLVER-491] Resolver should not have any "predefined" 
scope (#425)
dc3ceb44 is described below

commit dc3ceb44d9685bcb29163d702c020f80b8922523
Author: Tamas Cservenak <[email protected]>
AuthorDate: Wed Feb 7 10:48:00 2024 +0100

    [MRESOLVER-491] Resolver should not have any "predefined" scope (#425)
    
    It is duty of consumer application to define those. Also, no need for SPI 
either, as essentialy ONLY the dependency managers were using the "system" 
scope definition so far.
    
    Now, client code, that instantianates these anyway are able to pass in 
predicate.
    
    Note: as util is japicmp checked, the def ctors MUST stay, but are 
deprecated.
    
    ---
    
    https://issues.apache.org/jira/browse/MRESOLVER-491
---
 .../DependencyCollectorDelegateTestSupport.java    | 23 ++++------
 .../bf/BfWithSkipperDependencyCollectorTest.java   |  7 +---
 .../aether/util/artifact/DependencyScopes.java     |  2 +
 .../aether/util/graph/SystemScopePredicate.java    | 49 ++++++++++++++++++++++
 .../graph/manager/AbstractDependencyManager.java   | 46 ++++++++++----------
 .../graph/manager/ClassicDependencyManager.java    | 23 +++++++---
 .../graph/manager/DefaultDependencyManager.java    | 19 +++++++--
 .../graph/manager/TransitiveDependencyManager.java | 19 +++++++--
 .../util/graph/manager/DependencyManagerTest.java  | 12 ++++--
 9 files changed, 142 insertions(+), 58 deletions(-)

diff --git 
a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegateTestSupport.java
 
b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegateTestSupport.java
index 5959a501..140a9e53 100644
--- 
a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegateTestSupport.java
+++ 
b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegateTestSupport.java
@@ -19,15 +19,7 @@
 package org.eclipse.aether.internal.impl.collect;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
 
 import org.eclipse.aether.DefaultRepositorySystemSession;
@@ -55,6 +47,7 @@ import 
org.eclipse.aether.resolution.ArtifactDescriptorException;
 import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
 import org.eclipse.aether.resolution.ArtifactDescriptorResult;
 import org.eclipse.aether.util.artifact.ArtifactIdUtils;
+import org.eclipse.aether.util.graph.SystemScopePredicate;
 import org.eclipse.aether.util.graph.manager.ClassicDependencyManager;
 import org.eclipse.aether.util.graph.manager.DefaultDependencyManager;
 import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
@@ -77,6 +70,8 @@ import static org.junit.jupiter.api.Assertions.*;
  */
 public abstract class DependencyCollectorDelegateTestSupport {
 
+    protected static final SystemScopePredicate SYSTEM_PREDICATE = 
"system"::equals;
+
     protected DefaultRepositorySystemSession session;
 
     protected DependencyGraphParser parser;
@@ -387,7 +382,7 @@ public abstract class 
DependencyCollectorDelegateTestSupport {
         Dependency dependency = newDep("managed:aid:ext:ver");
         CollectRequest request = new CollectRequest(dependency, 
singletonList(repository));
 
-        session.setDependencyManager(new ClassicDependencyManager());
+        session.setDependencyManager(new 
ClassicDependencyManager(SYSTEM_PREDICATE));
 
         CollectResult result = collector.collectDependencies(session, request);
 
@@ -462,7 +457,7 @@ public abstract class 
DependencyCollectorDelegateTestSupport {
     void testDependencyManagement_TransitiveDependencyManager() throws 
DependencyCollectionException, IOException {
         collector = setupCollector(newReader("managed/"));
         parser = new DependencyGraphParser("artifact-descriptions/managed/");
-        session.setDependencyManager(new TransitiveDependencyManager());
+        session.setDependencyManager(new 
TransitiveDependencyManager(SYSTEM_PREDICATE));
         final Dependency root = newDep("gid:root:ext:ver", "compile");
         CollectRequest request = new CollectRequest(root, 
singletonList(repository));
         
request.addManagedDependency(newDep("gid:root:ext:must-retain-core-management"));
@@ -479,7 +474,7 @@ public abstract class 
DependencyCollectorDelegateTestSupport {
         
rootArtifactRequest.addManagedDependency(newDep("gid:root:ext:must-retain-core-management"));
         
rootArtifactRequest.addManagedDependency(newDep("gid:direct:ext:must-retain-core-management"));
         
rootArtifactRequest.addManagedDependency(newDep("gid:transitive-1:ext:managed-by-root"));
-        session.setDependencyManager(new TransitiveDependencyManager());
+        session.setDependencyManager(new 
TransitiveDependencyManager(SYSTEM_PREDICATE));
         result = collector.collectDependencies(session, rootArtifactRequest);
         assertEqualSubtree(expectedTree, toDependencyResult(result.getRoot(), 
"compile", null));
     }
@@ -488,7 +483,7 @@ public abstract class 
DependencyCollectorDelegateTestSupport {
     void testDependencyManagement_DefaultDependencyManager() throws 
DependencyCollectionException, IOException {
         collector = setupCollector(newReader("managed/"));
         parser = new DependencyGraphParser("artifact-descriptions/managed/");
-        session.setDependencyManager(new DefaultDependencyManager());
+        session.setDependencyManager(new 
DefaultDependencyManager(SYSTEM_PREDICATE));
         final Dependency root = newDep("gid:root:ext:ver", "compile");
         CollectRequest request = new CollectRequest(root, 
singletonList(repository));
         
request.addManagedDependency(newDep("gid:root:ext:must-not-manage-root"));
@@ -506,7 +501,7 @@ public abstract class 
DependencyCollectorDelegateTestSupport {
         
rootArtifactRequest.addManagedDependency(newDep("gid:root:ext:must-not-manage-root"));
         
rootArtifactRequest.addManagedDependency(newDep("gid:direct:ext:managed-by-dominant-request"));
         
rootArtifactRequest.addManagedDependency(newDep("gid:transitive-1:ext:managed-by-root"));
-        session.setDependencyManager(new DefaultDependencyManager());
+        session.setDependencyManager(new 
DefaultDependencyManager(SYSTEM_PREDICATE));
         result = collector.collectDependencies(session, rootArtifactRequest);
         assertEqualSubtree(expectedTree, toDependencyResult(result.getRoot(), 
"compile", null));
     }
diff --git 
a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/bf/BfWithSkipperDependencyCollectorTest.java
 
b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/bf/BfWithSkipperDependencyCollectorTest.java
index ff4c894c..12a684e2 100644
--- 
a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/bf/BfWithSkipperDependencyCollectorTest.java
+++ 
b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/bf/BfWithSkipperDependencyCollectorTest.java
@@ -18,10 +18,7 @@
  */
 package org.eclipse.aether.internal.impl.collect.bf;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
 
 import org.eclipse.aether.artifact.DefaultArtifact;
 import org.eclipse.aether.collection.CollectRequest;
@@ -72,7 +69,7 @@ public class BfWithSkipperDependencyCollectorTest extends 
DependencyCollectorDel
     void testSkipperWithDifferentExclusion() throws 
DependencyCollectionException {
         collector = setupCollector(newReader("managed/"));
         parser = new DependencyGraphParser("artifact-descriptions/managed/");
-        session.setDependencyManager(new TransitiveDependencyManager());
+        session.setDependencyManager(new 
TransitiveDependencyManager(SYSTEM_PREDICATE));
 
         ExclusionDependencySelector exclSel1 = new 
ExclusionDependencySelector();
         session.setDependencySelector(exclSel1);
diff --git 
a/maven-resolver-util/src/main/java/org/eclipse/aether/util/artifact/DependencyScopes.java
 
b/maven-resolver-util/src/main/java/org/eclipse/aether/util/artifact/DependencyScopes.java
index ef2c4df2..d53257bd 100644
--- 
a/maven-resolver-util/src/main/java/org/eclipse/aether/util/artifact/DependencyScopes.java
+++ 
b/maven-resolver-util/src/main/java/org/eclipse/aether/util/artifact/DependencyScopes.java
@@ -28,7 +28,9 @@ package org.eclipse.aether.util.artifact;
  *
  * @see org.eclipse.aether.graph.Dependency#getScope()
  * @since 2.0.0
+ * @deprecated Consumer project is defining scopes.
  */
+@Deprecated
 public final class DependencyScopes {
 
     /**
diff --git 
a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/SystemScopePredicate.java
 
b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/SystemScopePredicate.java
new file mode 100644
index 00000000..e392626f
--- /dev/null
+++ 
b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/SystemScopePredicate.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.eclipse.aether.util.graph;
+
+import java.util.function.Predicate;
+
+import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.graph.DependencyNode;
+
+/**
+ * In Resolver 1.x line, the "system" scope represented artifacts, that in 2.x 
resolver are now delegate to consumer
+ * application. Class or component that wants to test for this special 
dependency scope should use this inteface,
+ * with implementation provided by consumer application.
+ * <p>
+ * Special scope that tells resolver that dependency is not to be found in any 
regular repository, so it should not
+ * even try to resolve the artifact from them. Dependency in this scope does 
not have artifact descriptor either.
+ * Artifacts in this scope should have the "local path" property set, pointing 
to a file on local system, where the
+ * backing file should reside. Resolution of artifacts in this scope fails, if 
backing file does not exist
+ * (no property set, or property contains invalid path, or the path points to 
a non-existent file).
+ *
+ * @see org.eclipse.aether.artifact.ArtifactProperties#LOCAL_PATH
+ * @since 2.0.0
+ */
+@FunctionalInterface
+public interface SystemScopePredicate extends Predicate<String> {
+    default boolean test(Dependency dependency) {
+        return test(dependency.getScope());
+    }
+
+    default boolean test(DependencyNode dependencyNode) {
+        return dependencyNode.getDependency() != null && 
test(dependencyNode.getDependency());
+    }
+}
diff --git 
a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/AbstractDependencyManager.java
 
b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/AbstractDependencyManager.java
index ad80679a..caea95da 100644
--- 
a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/AbstractDependencyManager.java
+++ 
b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/AbstractDependencyManager.java
@@ -18,12 +18,7 @@
  */
 package org.eclipse.aether.util.graph.manager;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 import org.eclipse.aether.artifact.Artifact;
 import org.eclipse.aether.artifact.ArtifactProperties;
@@ -32,7 +27,7 @@ import org.eclipse.aether.collection.DependencyManagement;
 import org.eclipse.aether.collection.DependencyManager;
 import org.eclipse.aether.graph.Dependency;
 import org.eclipse.aether.graph.Exclusion;
-import org.eclipse.aether.util.artifact.DependencyScopes;
+import org.eclipse.aether.util.graph.SystemScopePredicate;
 
 import static java.util.Objects.requireNonNull;
 
@@ -42,6 +37,13 @@ import static java.util.Objects.requireNonNull;
  * @since 2.0.0
  */
 public abstract class AbstractDependencyManager implements DependencyManager {
+    /**
+     * This predicate is here ONLY to support deprecated constructors.
+     *
+     * @deprecated To be removed when deprecated constructors are removed.
+     */
+    @Deprecated
+    protected static final SystemScopePredicate SYSTEM_PREDICATE = 
"system"::equals;
 
     protected final int depth;
 
@@ -59,12 +61,11 @@ public abstract class AbstractDependencyManager implements 
DependencyManager {
 
     protected final Map<Object, Collection<Exclusion>> managedExclusions;
 
+    protected final SystemScopePredicate systemScopePredicate;
+
     private final int hashCode;
 
-    /**
-     * Creates a new dependency manager without any management information.
-     */
-    protected AbstractDependencyManager(int deriveUntil, int applyFrom) {
+    protected AbstractDependencyManager(int deriveUntil, int applyFrom, 
SystemScopePredicate systemScopePredicate) {
         this(
                 0,
                 deriveUntil,
@@ -73,7 +74,8 @@ public abstract class AbstractDependencyManager implements 
DependencyManager {
                 Collections.emptyMap(),
                 Collections.emptyMap(),
                 Collections.emptyMap(),
-                Collections.emptyMap());
+                Collections.emptyMap(),
+                systemScopePredicate);
     }
 
     @SuppressWarnings("checkstyle:ParameterNumber")
@@ -85,15 +87,17 @@ public abstract class AbstractDependencyManager implements 
DependencyManager {
             Map<Object, String> managedScopes,
             Map<Object, Boolean> managedOptionals,
             Map<Object, String> managedLocalPaths,
-            Map<Object, Collection<Exclusion>> managedExclusions) {
+            Map<Object, Collection<Exclusion>> managedExclusions,
+            SystemScopePredicate systemScopePredicate) {
         this.depth = depth;
         this.deriveUntil = deriveUntil;
         this.applyFrom = applyFrom;
-        this.managedVersions = managedVersions;
-        this.managedScopes = managedScopes;
-        this.managedOptionals = managedOptionals;
-        this.managedLocalPaths = managedLocalPaths;
-        this.managedExclusions = managedExclusions;
+        this.managedVersions = requireNonNull(managedVersions);
+        this.managedScopes = requireNonNull(managedScopes);
+        this.managedOptionals = requireNonNull(managedOptionals);
+        this.managedLocalPaths = requireNonNull(managedLocalPaths);
+        this.managedExclusions = requireNonNull(managedExclusions);
+        this.systemScopePredicate = requireNonNull(systemScopePredicate);
 
         this.hashCode = Objects.hash(
                 depth,
@@ -195,7 +199,7 @@ public abstract class AbstractDependencyManager implements 
DependencyManager {
                 }
                 management.setScope(scope);
 
-                if (!DependencyScopes.SYSTEM.equals(scope)
+                if (!systemScopePredicate.test(scope)
                         && 
dependency.getArtifact().getProperty(ArtifactProperties.LOCAL_PATH, null) != 
null) {
                     Map<String, String> properties =
                             new 
HashMap<>(dependency.getArtifact().getProperties());
@@ -204,8 +208,8 @@ public abstract class AbstractDependencyManager implements 
DependencyManager {
                 }
             }
 
-            if ((DependencyScopes.SYSTEM.equals(scope))
-                    || (scope == null && 
DependencyScopes.SYSTEM.equals(dependency.getScope()))) {
+            if ((systemScopePredicate.test(scope))
+                    || (scope == null && 
systemScopePredicate.test(dependency.getScope()))) {
                 String localPath = managedLocalPaths.get(key);
                 if (localPath != null) {
                     if (management == null) {
diff --git 
a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManager.java
 
b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManager.java
index d850fe80..726b99c4 100644
--- 
a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManager.java
+++ 
b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/ClassicDependencyManager.java
@@ -24,6 +24,7 @@ import java.util.Map;
 import org.eclipse.aether.collection.DependencyCollectionContext;
 import org.eclipse.aether.collection.DependencyManager;
 import org.eclipse.aether.graph.Exclusion;
+import org.eclipse.aether.util.graph.SystemScopePredicate;
 
 /**
  * A dependency manager that mimics the way Maven 2.x works. This manager was 
used throughout all Maven 3.x versions.
@@ -33,9 +34,16 @@ import org.eclipse.aether.graph.Exclusion;
 public final class ClassicDependencyManager extends AbstractDependencyManager {
     /**
      * Creates a new dependency manager without any management information.
+     *
+     * @deprecated Use constructor that provides consumer application specific 
predicate.
      */
+    @Deprecated
     public ClassicDependencyManager() {
-        this(false);
+        this(SYSTEM_PREDICATE);
+    }
+
+    public ClassicDependencyManager(SystemScopePredicate systemScopePredicate) 
{
+        this(false, systemScopePredicate);
     }
 
     /**
@@ -47,8 +55,8 @@ public final class ClassicDependencyManager extends 
AbstractDependencyManager {
      *
      * @since 2.0.0
      */
-    public ClassicDependencyManager(boolean transitive) {
-        super(transitive ? Integer.MAX_VALUE : 2, 2);
+    public ClassicDependencyManager(boolean transitive, SystemScopePredicate 
systemScopePredicate) {
+        super(transitive ? Integer.MAX_VALUE : 2, 2, systemScopePredicate);
     }
 
     @SuppressWarnings("checkstyle:ParameterNumber")
@@ -60,7 +68,8 @@ public final class ClassicDependencyManager extends 
AbstractDependencyManager {
             Map<Object, String> managedScopes,
             Map<Object, Boolean> managedOptionals,
             Map<Object, String> managedLocalPaths,
-            Map<Object, Collection<Exclusion>> managedExclusions) {
+            Map<Object, Collection<Exclusion>> managedExclusions,
+            SystemScopePredicate systemScopePredicate) {
         super(
                 depth,
                 deriveUntil,
@@ -69,7 +78,8 @@ public final class ClassicDependencyManager extends 
AbstractDependencyManager {
                 managedScopes,
                 managedOptionals,
                 managedLocalPaths,
-                managedExclusions);
+                managedExclusions,
+                systemScopePredicate);
     }
 
     @Override
@@ -98,6 +108,7 @@ public final class ClassicDependencyManager extends 
AbstractDependencyManager {
                 managedScopes,
                 managedOptionals,
                 managedLocalPaths,
-                managedExclusions);
+                managedExclusions,
+                systemScopePredicate);
     }
 }
diff --git 
a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/DefaultDependencyManager.java
 
b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/DefaultDependencyManager.java
index f76b2a44..4581f708 100644
--- 
a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/DefaultDependencyManager.java
+++ 
b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/DefaultDependencyManager.java
@@ -23,6 +23,7 @@ import java.util.Map;
 
 import org.eclipse.aether.collection.DependencyManager;
 import org.eclipse.aether.graph.Exclusion;
+import org.eclipse.aether.util.graph.SystemScopePredicate;
 
 /**
  * A dependency manager managing dependencies on all levels supporting 
transitive dependency management.
@@ -39,9 +40,16 @@ import org.eclipse.aether.graph.Exclusion;
 public final class DefaultDependencyManager extends AbstractDependencyManager {
     /**
      * Creates a new dependency manager without any management information.
+     *
+     * @deprecated Use constructor that provides consumer application specific 
predicate.
      */
+    @Deprecated
     public DefaultDependencyManager() {
-        super(Integer.MAX_VALUE, 0);
+        this(SYSTEM_PREDICATE);
+    }
+
+    public DefaultDependencyManager(SystemScopePredicate systemScopePredicate) 
{
+        super(Integer.MAX_VALUE, 0, systemScopePredicate);
     }
 
     @SuppressWarnings("checkstyle:ParameterNumber")
@@ -53,7 +61,8 @@ public final class DefaultDependencyManager extends 
AbstractDependencyManager {
             Map<Object, String> managedScopes,
             Map<Object, Boolean> managedOptionals,
             Map<Object, String> managedLocalPaths,
-            Map<Object, Collection<Exclusion>> managedExclusions) {
+            Map<Object, Collection<Exclusion>> managedExclusions,
+            SystemScopePredicate systemScopePredicate) {
         super(
                 depth,
                 deriveUntil,
@@ -62,7 +71,8 @@ public final class DefaultDependencyManager extends 
AbstractDependencyManager {
                 managedScopes,
                 managedOptionals,
                 managedLocalPaths,
-                managedExclusions);
+                managedExclusions,
+                systemScopePredicate);
     }
 
     @Override
@@ -80,6 +90,7 @@ public final class DefaultDependencyManager extends 
AbstractDependencyManager {
                 managedScopes,
                 managedOptionals,
                 managedLocalPaths,
-                managedExclusions);
+                managedExclusions,
+                systemScopePredicate);
     }
 }
diff --git 
a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java
 
b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java
index e1ec3304..e7ab6332 100644
--- 
a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java
+++ 
b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java
@@ -23,6 +23,7 @@ import java.util.Map;
 
 import org.eclipse.aether.collection.DependencyManager;
 import org.eclipse.aether.graph.Exclusion;
+import org.eclipse.aether.util.graph.SystemScopePredicate;
 
 /**
  * A dependency manager managing transitive dependencies supporting transitive 
dependency management.
@@ -36,9 +37,16 @@ import org.eclipse.aether.graph.Exclusion;
 public final class TransitiveDependencyManager extends 
AbstractDependencyManager {
     /**
      * Creates a new dependency manager without any management information.
+     *
+     * @deprecated Use constructor that provides consumer application specific 
predicate.
      */
+    @Deprecated
     public TransitiveDependencyManager() {
-        super(Integer.MAX_VALUE, 2);
+        this(SYSTEM_PREDICATE);
+    }
+
+    public TransitiveDependencyManager(SystemScopePredicate 
systemScopePredicate) {
+        super(Integer.MAX_VALUE, 2, systemScopePredicate);
     }
 
     @SuppressWarnings("checkstyle:ParameterNumber")
@@ -50,7 +58,8 @@ public final class TransitiveDependencyManager extends 
AbstractDependencyManager
             Map<Object, String> managedScopes,
             Map<Object, Boolean> managedOptionals,
             Map<Object, String> managedLocalPaths,
-            Map<Object, Collection<Exclusion>> managedExclusions) {
+            Map<Object, Collection<Exclusion>> managedExclusions,
+            SystemScopePredicate systemScopePredicate) {
         super(
                 depth,
                 deriveUntil,
@@ -59,7 +68,8 @@ public final class TransitiveDependencyManager extends 
AbstractDependencyManager
                 managedScopes,
                 managedOptionals,
                 managedLocalPaths,
-                managedExclusions);
+                managedExclusions,
+                systemScopePredicate);
     }
 
     @Override
@@ -77,6 +87,7 @@ public final class TransitiveDependencyManager extends 
AbstractDependencyManager
                 managedScopes,
                 managedOptionals,
                 managedLocalPaths,
-                managedExclusions);
+                managedExclusions,
+                systemScopePredicate);
     }
 }
diff --git 
a/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/manager/DependencyManagerTest.java
 
b/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/manager/DependencyManagerTest.java
index b715a7d0..080a6bfe 100644
--- 
a/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/manager/DependencyManagerTest.java
+++ 
b/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/manager/DependencyManagerTest.java
@@ -30,6 +30,7 @@ import org.eclipse.aether.collection.DependencyManager;
 import org.eclipse.aether.graph.Dependency;
 import org.eclipse.aether.graph.Exclusion;
 import org.eclipse.aether.internal.test.util.TestUtils;
+import org.eclipse.aether.util.graph.SystemScopePredicate;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -40,6 +41,9 @@ import static org.junit.jupiter.api.Assertions.*;
  */
 public class DependencyManagerTest {
 
+    @SuppressWarnings("deprecation")
+    private static final SystemScopePredicate SYSTEM_PREDICATE = 
AbstractDependencyManager.SYSTEM_PREDICATE;
+
     private final Artifact A1 = new DefaultArtifact("test", "a", "", "1");
 
     private final Artifact A2 = new DefaultArtifact("test", "a", "", "2");
@@ -73,7 +77,7 @@ public class DependencyManagerTest {
 
     @Test
     void testClassic() {
-        DependencyManager manager = new ClassicDependencyManager();
+        DependencyManager manager = new 
ClassicDependencyManager(SYSTEM_PREDICATE);
         DependencyManagement mngt;
 
         // depth=1: only exclusion applied, nothing more
@@ -132,7 +136,7 @@ public class DependencyManagerTest {
 
     @Test
     void testClassicTransitive() {
-        DependencyManager manager = new ClassicDependencyManager(true);
+        DependencyManager manager = new ClassicDependencyManager(true, 
SYSTEM_PREDICATE);
         DependencyManagement mngt;
 
         // depth=1: only exclusion applied, nothing more
@@ -192,7 +196,7 @@ public class DependencyManagerTest {
 
     @Test
     void testTransitive() {
-        DependencyManager manager = new TransitiveDependencyManager();
+        DependencyManager manager = new 
TransitiveDependencyManager(SYSTEM_PREDICATE);
         DependencyManagement mngt;
 
         // depth=1: only exclusion applied, nothing more
@@ -252,7 +256,7 @@ public class DependencyManagerTest {
 
     @Test
     void testDefault() {
-        DependencyManager manager = new DefaultDependencyManager();
+        DependencyManager manager = new 
DefaultDependencyManager(SYSTEM_PREDICATE);
         DependencyManagement mngt;
 
         // depth=1: all applied

Reply via email to