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 a766e429 Simplify filters (#1544)
a766e429 is described below

commit a766e4290eed95730ea383b25633c349b54f4ffb
Author: Tamas Cservenak <[email protected]>
AuthorDate: Tue Aug 12 13:58:50 2025 +0200

    Simplify filters (#1544)
    
    Also provide a "bridge" to allow generic supplier injection instead of 
Guice specific Provider.
---
 .../GroupIdRemoteRepositoryFilterSource.java       |  7 +--
 .../impl/filter/MetadataResolverSupplier.java      | 51 ++++++++++++++++++++++
 .../PrefixesRemoteRepositoryFilterSource.java      | 36 ++++++++-------
 3 files changed, 70 insertions(+), 24 deletions(-)

diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/GroupIdRemoteRepositoryFilterSource.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/GroupIdRemoteRepositoryFilterSource.java
index 06c2c747..ca7cd098 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/GroupIdRemoteRepositoryFilterSource.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/GroupIdRemoteRepositoryFilterSource.java
@@ -159,8 +159,7 @@ public final class GroupIdRemoteRepositoryFilterSource 
extends RemoteRepositoryF
             for (ArtifactResult artifactResult : artifactResults) {
                 if (artifactResult.isResolved() && 
artifactResult.getRepository() instanceof RemoteRepository) {
                     RemoteRepository remoteRepository = (RemoteRepository) 
artifactResult.getRepository();
-                    boolean repositoryFilteringEnabled = 
isRepositoryFilteringEnabled(session, remoteRepository);
-                    if (repositoryFilteringEnabled) {
+                    if (isRepositoryFilteringEnabled(session, 
remoteRepository)) {
                         ruleFile(session, remoteRepository); // populate it; 
needed for save
                         String line = "=" + 
artifactResult.getArtifact().getGroupId();
                         recordedRules
@@ -190,10 +189,8 @@ public final class GroupIdRemoteRepositoryFilterSource 
extends RemoteRepositoryF
     }
 
     private GroupTree loadRepositoryRules(RepositorySystemSession session, 
RemoteRepository remoteRepository) {
-        boolean repositoryFilteringEnabled =
-                ConfigUtils.getBoolean(session, true, CONFIG_PROP_ENABLED + 
"." + remoteRepository.getId());
         Path filePath = ruleFile(session, remoteRepository);
-        if (repositoryFilteringEnabled && Files.isReadable(filePath)) {
+        if (isRepositoryFilteringEnabled(session, remoteRepository) && 
Files.isReadable(filePath)) {
             try (Stream<String> lines = Files.lines(filePath, 
StandardCharsets.UTF_8)) {
                 GroupTree groupTree = new GroupTree("");
                 int rules = groupTree.loadNodes(lines);
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/MetadataResolverSupplier.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/MetadataResolverSupplier.java
new file mode 100644
index 00000000..3a45fa83
--- /dev/null
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/MetadataResolverSupplier.java
@@ -0,0 +1,51 @@
+/*
+ * 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.internal.impl.filter;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Provider;
+import javax.inject.Singleton;
+
+import java.util.function.Supplier;
+
+import org.eclipse.aether.impl.MetadataResolver;
+
+import static java.util.Objects.requireNonNull;
+
+/**
+ * A bridge to allow injecting plain suppliers, but while in Guice use this 
one.
+ *
+ * @since 2.0.11
+ */
+@Singleton
+@Named
+public final class MetadataResolverSupplier implements 
Supplier<MetadataResolver> {
+    private final Provider<MetadataResolver> metadataResolverProvider;
+
+    @Inject
+    public MetadataResolverSupplier(Provider<MetadataResolver> 
metadataResolverProvider) {
+        this.metadataResolverProvider = 
requireNonNull(metadataResolverProvider);
+    }
+
+    @Override
+    public MetadataResolver get() {
+        return metadataResolverProvider.get();
+    }
+}
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/PrefixesRemoteRepositoryFilterSource.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/PrefixesRemoteRepositoryFilterSource.java
index a10fd352..fc0a8782 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/PrefixesRemoteRepositoryFilterSource.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/PrefixesRemoteRepositoryFilterSource.java
@@ -20,7 +20,6 @@ package org.eclipse.aether.internal.impl.filter;
 
 import javax.inject.Inject;
 import javax.inject.Named;
-import javax.inject.Provider;
 import javax.inject.Singleton;
 
 import java.io.FileNotFoundException;
@@ -31,6 +30,7 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.Collections;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Supplier;
 import java.util.stream.Stream;
 
 import org.eclipse.aether.RepositorySystemSession;
@@ -111,7 +111,7 @@ public final class PrefixesRemoteRepositoryFilterSource 
extends RemoteRepository
 
     private final Logger logger = 
LoggerFactory.getLogger(PrefixesRemoteRepositoryFilterSource.class);
 
-    private final Provider<MetadataResolver> metadataResolver;
+    private final Supplier<MetadataResolver> metadataResolver;
 
     private final RepositoryLayoutProvider repositoryLayoutProvider;
 
@@ -123,7 +123,7 @@ public final class PrefixesRemoteRepositoryFilterSource 
extends RemoteRepository
 
     @Inject
     public PrefixesRemoteRepositoryFilterSource(
-            Provider<MetadataResolver> metadataResolver, 
RepositoryLayoutProvider repositoryLayoutProvider) {
+            Supplier<MetadataResolver> metadataResolver, 
RepositoryLayoutProvider repositoryLayoutProvider) {
         this.metadataResolver = requireNonNull(metadataResolver);
         this.repositoryLayoutProvider = 
requireNonNull(repositoryLayoutProvider);
         this.prefixes = new ConcurrentHashMap<>();
@@ -178,9 +178,7 @@ public final class PrefixesRemoteRepositoryFilterSource 
extends RemoteRepository
 
     private PrefixTree loadPrefixTree(
             RepositorySystemSession session, Path baseDir, RemoteRepository 
remoteRepository) {
-        boolean repositoryFilteringEnabled =
-                ConfigUtils.getBoolean(session, true, CONFIG_PROP_ENABLED + 
"." + remoteRepository.getId());
-        if (repositoryFilteringEnabled) {
+        if (isRepositoryFilteringEnabled(session, remoteRepository)) {
             Path filePath = resolvePrefixesFromLocalConfiguration(session, 
baseDir, remoteRepository);
             if (filePath == null) {
                 filePath = resolvePrefixesFromRemoteRepository(session, 
remoteRepository);
@@ -218,20 +216,20 @@ public final class PrefixesRemoteRepositoryFilterSource 
extends RemoteRepository
 
     private Path resolvePrefixesFromRemoteRepository(
             RepositorySystemSession session, RemoteRepository 
remoteRepository) {
-        MetadataRequest request =
-                new MetadataRequest(new DefaultMetadata(PREFIX_FILE_PATH, 
Metadata.Nature.RELEASE_OR_SNAPSHOT));
-        request.setRepository(remoteRepository);
-        request.setDeleteLocalCopyIfMissing(true);
-        request.setFavorLocalRepository(true);
-        MetadataResult result = metadataResolver
-                .get()
-                .resolveMetadata(session, Collections.singleton(request))
-                .get(0);
-        if (result.isResolved()) {
-            return result.getMetadata().getPath();
-        } else {
-            return null;
+        MetadataResolver mr = metadataResolver.get();
+        if (mr != null) {
+            MetadataRequest request =
+                    new MetadataRequest(new DefaultMetadata(PREFIX_FILE_PATH, 
Metadata.Nature.RELEASE_OR_SNAPSHOT));
+            request.setRepository(remoteRepository);
+            request.setDeleteLocalCopyIfMissing(true);
+            request.setFavorLocalRepository(true);
+            MetadataResult result =
+                    mr.resolveMetadata(session, 
Collections.singleton(request)).get(0);
+            if (result.isResolved()) {
+                return result.getMetadata().getPath();
+            }
         }
+        return null;
     }
 
     private class PrefixesFilter implements RemoteRepositoryFilter {

Reply via email to