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 implements Request<Session> {
90 @Nonnull
91 @Override
92 public Session getSession() {
93 return session;
94 }
95
96 @Nullable
97 @Override
98 public RequestTrace getTrace() {
99 return trace;
100 }
101
102 @Override
103 public boolean equals(Object o) {
104 return o instanceof ModelResolverRequest that
105 && repositories == that.repositories
106 && Objects.equals(groupId, that.groupId)
107 && Objects.equals(artifactId, that.artifactId)
108 && Objects.equals(version, that.version)
109 && Objects.equals(classifier, that.classifier);
110 }
111
112 @Override
113 public int hashCode() {
114 return Objects.hash(repositories, groupId, artifactId, version, classifier);
115 }
116
117 @Override
118 @Nonnull
119 public String toString() {
120 return getClass().getSimpleName() + "[" + "repositories="
121 + repositories + ", groupId="
122 + groupId
123 + ", artifactId=" + artifactId
124 + ", version=" + version
125 + ", classifier=" + classifier
126 + ']';
127 }
128 }
129
130 record ModelResolverResult(ModelResolverRequest request, ModelSource source, String version)
131 implements Result<ModelResolverRequest> {
132 @Nonnull
133 @Override
134 public ModelResolverRequest getRequest() {
135 return request;
136 }
137 }
138 }