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