1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.api.services.model;
20
21 import java.util.List;
22 import java.util.Objects;
23 import java.util.concurrent.atomic.AtomicReference;
24
25 import org.apache.maven.api.RemoteRepository;
26 import org.apache.maven.api.Service;
27 import org.apache.maven.api.Session;
28 import org.apache.maven.api.annotations.Nonnull;
29 import org.apache.maven.api.annotations.Nullable;
30 import org.apache.maven.api.model.Dependency;
31 import org.apache.maven.api.model.Parent;
32 import org.apache.maven.api.services.ModelSource;
33 import org.apache.maven.api.services.Request;
34 import org.apache.maven.api.services.RequestTrace;
35 import org.apache.maven.api.services.Result;
36
37
38
39
40 public interface ModelResolver extends Service {
41
42
43
44
45
46
47
48
49
50
51
52 @Nonnull
53 ModelSource resolveModel(
54 @Nonnull Session session,
55 @Nullable List<RemoteRepository> repositories,
56 @Nonnull Parent parent,
57 @Nonnull AtomicReference<Parent> modified)
58 throws ModelResolverException;
59
60
61
62
63
64
65
66
67
68
69
70 @Nonnull
71 ModelSource resolveModel(
72 @Nonnull Session session,
73 @Nullable List<RemoteRepository> repositories,
74 @Nonnull Dependency dependency,
75 @Nonnull AtomicReference<Dependency> modified)
76 throws ModelResolverException;
77
78 @Nonnull
79 ModelResolverResult resolveModel(@Nonnull ModelResolverRequest request) throws ModelResolverException;
80
81 record ModelResolverRequest(
82 @Nonnull Session session,
83 @Nullable RequestTrace trace,
84 @Nullable List<RemoteRepository> repositories,
85 @Nonnull String groupId,
86 @Nonnull String artifactId,
87 @Nonnull String version,
88 @Nullable String classifier,
89 @Nullable String extension)
90 implements Request<Session> {
91 public ModelResolverRequest {
92 Objects.requireNonNull(session, "session cannot be null");
93 Objects.requireNonNull(groupId, "groupId cannot be null");
94 Objects.requireNonNull(artifactId, "artifactId cannot be null");
95 Objects.requireNonNull(version, "version cannot be null");
96 }
97
98 @Nonnull
99 @Override
100 public Session getSession() {
101 return session;
102 }
103
104 @Nullable
105 @Override
106 public RequestTrace getTrace() {
107 return trace;
108 }
109
110 @Override
111 public boolean equals(Object o) {
112 return o instanceof ModelResolverRequest that
113 && repositories == that.repositories
114 && Objects.equals(groupId, that.groupId)
115 && Objects.equals(artifactId, that.artifactId)
116 && Objects.equals(version, that.version)
117 && Objects.equals(classifier, that.classifier)
118 && Objects.equals(extension, that.extension);
119 }
120
121 @Override
122 public int hashCode() {
123 return Objects.hash(repositories, groupId, artifactId, version, classifier, extension);
124 }
125
126 @Override
127 @Nonnull
128 public String toString() {
129 return getClass().getSimpleName() + "[" + "repositories="
130 + repositories + ", groupId="
131 + groupId
132 + ", artifactId=" + artifactId
133 + ", version=" + version
134 + ", classifier=" + classifier
135 + ", extension=" + extension
136 + ']';
137 }
138 }
139
140 record ModelResolverResult(ModelResolverRequest request, ModelSource source, String version)
141 implements Result<ModelResolverRequest> {
142 @Nonnull
143 @Override
144 public ModelResolverRequest getRequest() {
145 return request;
146 }
147 }
148 }