1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.internal.impl;
20
21 import javax.inject.Named;
22 import javax.inject.Singleton;
23
24 import java.util.stream.Collectors;
25
26 import org.apache.maven.api.DependencyCoordinate;
27 import org.apache.maven.api.Exclusion;
28 import org.apache.maven.api.annotations.Nonnull;
29 import org.apache.maven.api.services.DependencyCoordinateFactory;
30 import org.apache.maven.api.services.DependencyCoordinateFactoryRequest;
31 import org.eclipse.aether.artifact.ArtifactType;
32
33 import static org.apache.maven.internal.impl.Utils.cast;
34 import static org.apache.maven.internal.impl.Utils.nonNull;
35
36 @Named
37 @Singleton
38 public class DefaultDependencyCoordinateFactory implements DependencyCoordinateFactory {
39
40 @Nonnull
41 @Override
42 public DependencyCoordinate create(@Nonnull DependencyCoordinateFactoryRequest request) {
43 nonNull(request, "request can not be null");
44 DefaultSession session =
45 cast(DefaultSession.class, request.getSession(), "request.session should be a " + DefaultSession.class);
46
47 ArtifactType type = null;
48 if (request.getType() != null) {
49 type = session.getSession().getArtifactTypeRegistry().get(request.getType());
50 }
51 return new DefaultDependencyCoordinate(
52 session,
53 new org.eclipse.aether.graph.Dependency(
54 new org.eclipse.aether.artifact.DefaultArtifact(
55 request.getGroupId(),
56 request.getArtifactId(),
57 request.getClassifier(),
58 request.getExtension(),
59 request.getVersion(),
60 type),
61 request.getScope(),
62 request.isOptional(),
63 request.getExclusions().stream().map(this::toExclusion).collect(Collectors.toList())));
64 }
65
66 private org.eclipse.aether.graph.Exclusion toExclusion(Exclusion exclusion) {
67 return new org.eclipse.aether.graph.Exclusion(exclusion.getGroupId(), exclusion.getArtifactId(), "*", "*");
68 }
69 }