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 {