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 org.apache.maven.api.DependencyCoordinates;
22 import org.apache.maven.api.Exclusion;
23 import org.apache.maven.api.annotations.Nonnull;
24 import org.apache.maven.api.di.Named;
25 import org.apache.maven.api.di.Singleton;
26 import org.apache.maven.api.services.DependencyCoordinatesFactory;
27 import org.apache.maven.api.services.DependencyCoordinatesFactoryRequest;
28 import org.eclipse.aether.artifact.ArtifactType;
29
30 import static org.apache.maven.internal.impl.Utils.map;
31 import static org.apache.maven.internal.impl.Utils.nonNull;
32
33 @Named
34 @Singleton
35 public class DefaultDependencyCoordinatesFactory implements DependencyCoordinatesFactory {
36
37 @Nonnull
38 @Override
39 public DependencyCoordinates create(@Nonnull DependencyCoordinatesFactoryRequest request) {
40 nonNull(request, "request");
41 InternalSession session = InternalSession.from(request.getSession());
42
43 ArtifactType type = null;
44 if (request.getType() != null) {
45 type = session.getSession().getArtifactTypeRegistry().get(request.getType());
46 }
47 if (request.getCoordinatesString() != null) {
48 return new DefaultDependencyCoordinates(
49 session,
50 new org.eclipse.aether.graph.Dependency(
51 new org.eclipse.aether.artifact.DefaultArtifact(request.getCoordinatesString()),
52 request.getScope(),
53 request.isOptional(),
54 map(request.getExclusions(), this::toExclusion)));
55 } else {
56 return new DefaultDependencyCoordinates(
57 session,
58 new org.eclipse.aether.graph.Dependency(
59 new org.eclipse.aether.artifact.DefaultArtifact(
60 request.getGroupId(),
61 request.getArtifactId(),
62 request.getClassifier(),
63 request.getExtension(),
64 request.getVersion(),
65 type),
66 request.getScope(),
67 request.isOptional(),
68 map(request.getExclusions(), this::toExclusion)));
69 }
70 }
71
72 private org.eclipse.aether.graph.Exclusion toExclusion(Exclusion exclusion) {
73 return new org.eclipse.aether.graph.Exclusion(exclusion.getGroupId(), exclusion.getArtifactId(), "*", "*");
74 }
75 }