Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.ArtifactType;
import org.eclipse.aether.repository.ArtifactRepository;
import org.eclipse.aether.resolution.ArtifactResult;
import org.eclipse.aether.transfer.TransferResource;

import static java.util.Objects.requireNonNull;
Expand Down Expand Up @@ -220,13 +221,15 @@ public String getType() {
}

@Override
public org.apache.maven.api.Repository getRepository(ArtifactRepository repository) {
public Optional<org.apache.maven.api.Repository> getRepository(ArtifactRepository repository) {
if (repository instanceof org.eclipse.aether.repository.RemoteRepository remote) {
return getRemoteRepository(remote);
return Optional.of(getRemoteRepository(remote));
} else if (repository instanceof org.eclipse.aether.repository.LocalRepository local) {
return getLocalRepository(local);
return Optional.of(getLocalRepository(local));
} else if (repository instanceof org.eclipse.aether.repository.WorkspaceRepository workspace) {
return getWorkspaceRepository(workspace);
return Optional.of(getWorkspaceRepository(workspace));
} else if (repository == ArtifactResult.NO_REPOSITORY) {
return Optional.empty();
} else {
throw new IllegalArgumentException("Unsupported repository type: " + repository.getClass());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,11 +159,17 @@ ArtifactResolverResult toResult(ArtifactResolverRequest request, Stream<Resolver
ArtifactCoordinates coordinates = session.getArtifact(
result.getRequest().getArtifact())
.toCoordinates();
Repository repository =
result.getRepository() != null ? session.getRepository(result.getRepository()) : null;
// null repository (ArtifactResult.NO_REPOSITORY); can come ONLY in error exceptions
// when no local/remote/workspace repository was involved in error
// (usually resolving when every involved repo "abstained" for some reason)
Repository repository = result.getRepository() != null
? session.getRepository(result.getRepository()).orElse(null)
: null;
Map<Repository, List<Exception>> mappedExceptions = result.getMappedExceptions().entrySet().stream()
.collect(Collectors.toMap(
entry -> session.getRepository(entry.getKey()), Map.Entry::getValue));
entry -> session.getRepository(entry.getKey())
.orElse(null),
Map.Entry::getValue));
return new DefaultArtifactResolverResultItem(
coordinates,
artifact,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
import java.util.function.Supplier;

Expand Down Expand Up @@ -84,7 +85,14 @@ <REQ extends Request<?>, REP extends Result<REQ>> List<REP> requests(

WorkspaceRepository getWorkspaceRepository(org.eclipse.aether.repository.WorkspaceRepository repository);

Repository getRepository(org.eclipse.aether.repository.ArtifactRepository repository);
/**
* Converts Resolver repository instance to Maven API repository.
* <p>
* Resolver may throw exception that carries "no repository" sentinel instance from Resolver, denoting no repository
* was involved with error. In this case, the {@link Optional} will be empty. This case may happen only when
* processing exceptions coming from resolver. Users cannot and should not create such sentinel repositories.
*/
Optional<Repository> getRepository(org.eclipse.aether.repository.ArtifactRepository repository);

Node getNode(org.eclipse.aether.graph.DependencyNode node);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.eclipse.aether.repository.LocalRepository;
import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.spi.validator.Validator;
import org.eclipse.aether.util.PathUtils;

/**
* Simplest Maven specific validator that is meant to prevent un-interpolated
Expand All @@ -43,6 +44,7 @@ public void validateArtifact(Artifact artifact) throws IllegalArgumentException
|| containsPlaceholder(artifact.getExtension())) {
throw new IllegalArgumentException("Not fully interpolated artifact " + artifact);
}
PathUtils.validateArtifactComponents(artifact);
}

@Override
Expand All @@ -53,6 +55,7 @@ public void validateMetadata(Metadata metadata) throws IllegalArgumentException
|| containsPlaceholder(metadata.getType())) {
throw new IllegalArgumentException("Not fully interpolated metadata " + metadata);
}
PathUtils.validateMetadataComponents(metadata);
}

@Override
Expand All @@ -71,6 +74,7 @@ public void validateDependency(Dependency dependency) throws IllegalArgumentExce
|| containsPlaceholder(e.getExtension()))) {
throw new IllegalArgumentException("Not fully interpolated dependency " + dependency);
}
PathUtils.validateArtifactComponents(artifact);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -295,12 +295,14 @@ static PrefixesRemoteRepositoryFilterSource newPrefixesRemoteRepositoryFilterSou
RepositoryKeyFunctionFactory repositoryKeyFunctionFactory,
MetadataResolver metadataResolver,
RemoteRepositoryManager remoteRepositoryManager,
RepositoryLayoutProvider repositoryLayoutProvider) {
RepositoryLayoutProvider repositoryLayoutProvider,
TransporterProvider transporterProvider) {
return new PrefixesRemoteRepositoryFilterSource(
repositoryKeyFunctionFactory,
() -> metadataResolver,
() -> remoteRepositoryManager,
repositoryLayoutProvider);
repositoryLayoutProvider,
transporterProvider);
}

@Singleton
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -608,7 +608,8 @@ protected Map<String, RemoteRepositoryFilterSource> createRemoteRepositoryFilter
getRepositoryKeyFunctionFactory(),
this::getMetadataResolver,
this::getRemoteRepositoryManager,
getRepositoryLayoutProvider()));
getRepositoryLayoutProvider(),
getTransporterProvider()));
return result;
}

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ under the License.
<plexusInterpolationVersion>1.29</plexusInterpolationVersion>
<plexusTestingVersion>2.1.0</plexusTestingVersion>
<plexusXmlVersion>4.1.1</plexusXmlVersion>
<resolverVersion>2.0.20</resolverVersion>
<resolverVersion>2.0.21-SNAPSHOT</resolverVersion>
<securityDispatcherVersion>4.1.0</securityDispatcherVersion>
<sisuVersion>1.0.1</sisuVersion>
<slf4jVersion>2.0.18</slf4jVersion>
Expand Down
Loading