1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 package org.eclipse.aether;
20
21 /**
22 * A listener being notified of events from the repository system. In general, the system sends events upon termination
23 * of an operation like {@link #artifactResolved(RepositoryEvent)} regardless whether it succeeded or failed so
24 * listeners need to inspect the event details carefully. Also, the listener may be called from an arbitrary thread.
25 * <em>Note:</em> Implementors are strongly advised to inherit from {@link AbstractRepositoryListener} instead of
26 * directly implementing this interface.
27 *
28 * @see org.eclipse.aether.RepositorySystemSession#getRepositoryListener()
29 * @see org.eclipse.aether.transfer.TransferListener
30 * @noimplement This interface is not intended to be implemented by clients.
31 * @noextend This interface is not intended to be extended by clients.
32 */
33 public interface RepositoryListener {
34
35 /**
36 * Notifies the listener of a syntactically or semantically invalid artifact descriptor.
37 * {@link RepositoryEvent#getArtifact()} indicates the artifact whose descriptor is invalid and
38 * {@link RepositoryEvent#getExceptions()} carries the encountered errors. Depending on the session's
39 * {@link org.eclipse.aether.resolution.ArtifactDescriptorPolicy}, the underlying repository operation might abort
40 * with an exception or ignore the invalid descriptor.
41 *
42 * @param event The event details, must not be {@code null}.
43 */
44 void artifactDescriptorInvalid(RepositoryEvent event);
45
46 /**
47 * Notifies the listener of a missing artifact descriptor. {@link RepositoryEvent#getArtifact()} indicates the
48 * artifact whose descriptor is missing. Depending on the session's
49 * {@link org.eclipse.aether.resolution.ArtifactDescriptorPolicy}, the underlying repository operation might abort
50 * with an exception or ignore the missing descriptor.
51 *
52 * @param event The event details, must not be {@code null}.
53 */
54 void artifactDescriptorMissing(RepositoryEvent event);
55
56 /**
57 * Notifies the listener of syntactically or semantically invalid metadata. {@link RepositoryEvent#getMetadata()}
58 * indicates the invalid metadata and {@link RepositoryEvent#getExceptions()} carries the encountered errors. The
59 * underlying repository operation might still succeed, depending on whether the metadata in question is actually
60 * needed to carry out the resolution process.
61 *
62 * @param event The event details, must not be {@code null}.
63 */
64 void metadataInvalid(RepositoryEvent event);
65
66 /**
67 * Notifies the listener of an artifact that is about to be resolved. {@link RepositoryEvent#getArtifact()} denotes
68 * the artifact in question. Unlike the {@link #artifactDownloading(RepositoryEvent)} event, this event is fired
69 * regardless whether the artifact already exists locally or not.
70 *
71 * @param event The event details, must not be {@code null}.
72 */
73 void artifactResolving(RepositoryEvent event);
74
75 /**
76 * Notifies the listener of an artifact whose resolution has been completed, either successfully or not.
77 * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
78 * {@link RepositoryEvent#getExceptions()} indicates whether the resolution succeeded or failed. Unlike the
79 * {@link #artifactDownloaded(RepositoryEvent)} event, this event is fired regardless whether the artifact already
80 * exists locally or not.
81 *
82 * @param event The event details, must not be {@code null}.
83 */
84 void artifactResolved(RepositoryEvent event);
85
86 /**
87 * Notifies the listener of some metadata that is about to be resolved. {@link RepositoryEvent#getMetadata()}
88 * denotes the metadata in question. Unlike the {@link #metadataDownloading(RepositoryEvent)} event, this event is
89 * fired regardless whether the metadata already exists locally or not.
90 *
91 * @param event The event details, must not be {@code null}.
92 */
93 void metadataResolving(RepositoryEvent event);
94
95 /**
96 * Notifies the listener of some metadata whose resolution has been completed, either successfully or not.
97 * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
98 * {@link RepositoryEvent#getExceptions()} indicates whether the resolution succeeded or failed. Unlike the
99 * {@link #metadataDownloaded(RepositoryEvent)} event, this event is fired regardless whether the metadata already
100 * exists locally or not.
101 *
102 * @param event The event details, must not be {@code null}.
103 */
104 void metadataResolved(RepositoryEvent event);
105
106 /**
107 * Notifies the listener of an artifact that is about to be downloaded from a remote repository.
108 * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
109 * {@link RepositoryEvent#getRepository()} the source repository. Unlike the
110 * {@link #artifactResolving(RepositoryEvent)} event, this event is only fired when the artifact does not already
111 * exist locally.
112 *
113 * @param event The event details, must not be {@code null}.
114 */
115 void artifactDownloading(RepositoryEvent event);
116
117 /**
118 * Notifies the listener of an artifact whose download has been completed, either successfully or not.
119 * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
120 * {@link RepositoryEvent#getExceptions()} indicates whether the download succeeded or failed. Unlike the
121 * {@link #artifactResolved(RepositoryEvent)} event, this event is only fired when the artifact does not already
122 * exist locally.
123 *
124 * @param event The event details, must not be {@code null}.
125 */
126 void artifactDownloaded(RepositoryEvent event);
127
128 /**
129 * Notifies the listener of some metadata that is about to be downloaded from a remote repository.
130 * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
131 * {@link RepositoryEvent#getRepository()} the source repository. Unlike the
132 * {@link #metadataResolving(RepositoryEvent)} event, this event is only fired when the metadata does not already
133 * exist locally.
134 *
135 * @param event The event details, must not be {@code null}.
136 */
137 void metadataDownloading(RepositoryEvent event);
138
139 /**
140 * Notifies the listener of some metadata whose download has been completed, either successfully or not.
141 * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
142 * {@link RepositoryEvent#getExceptions()} indicates whether the download succeeded or failed. Unlike the
143 * {@link #metadataResolved(RepositoryEvent)} event, this event is only fired when the metadata does not already
144 * exist locally.
145 *
146 * @param event The event details, must not be {@code null}.
147 */
148 void metadataDownloaded(RepositoryEvent event);
149
150 /**
151 * Notifies the listener of an artifact that is about to be installed to the local repository.
152 * {@link RepositoryEvent#getArtifact()} denotes the artifact in question.
153 *
154 * @param event The event details, must not be {@code null}.
155 */
156 void artifactInstalling(RepositoryEvent event);
157
158 /**
159 * Notifies the listener of an artifact whose installation to the local repository has been completed, either
160 * successfully or not. {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
161 * {@link RepositoryEvent#getExceptions()} indicates whether the installation succeeded or failed.
162 *
163 * @param event The event details, must not be {@code null}.
164 */
165 void artifactInstalled(RepositoryEvent event);
166
167 /**
168 * Notifies the listener of some metadata that is about to be installed to the local repository.
169 * {@link RepositoryEvent#getMetadata()} denotes the metadata in question.
170 *
171 * @param event The event details, must not be {@code null}.
172 */
173 void metadataInstalling(RepositoryEvent event);
174
175 /**
176 * Notifies the listener of some metadata whose installation to the local repository has been completed, either
177 * successfully or not. {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
178 * {@link RepositoryEvent#getExceptions()} indicates whether the installation succeeded or failed.
179 *
180 * @param event The event details, must not be {@code null}.
181 */
182 void metadataInstalled(RepositoryEvent event);
183
184 /**
185 * Notifies the listener of an artifact that is about to be uploaded to a remote repository.
186 * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
187 * {@link RepositoryEvent#getRepository()} the destination repository.
188 *
189 * @param event The event details, must not be {@code null}.
190 */
191 void artifactDeploying(RepositoryEvent event);
192
193 /**
194 * Notifies the listener of an artifact whose upload to a remote repository has been completed, either successfully
195 * or not. {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
196 * {@link RepositoryEvent#getExceptions()} indicates whether the upload succeeded or failed.
197 *
198 * @param event The event details, must not be {@code null}.
199 */
200 void artifactDeployed(RepositoryEvent event);
201
202 /**
203 * Notifies the listener of some metadata that is about to be uploaded to a remote repository.
204 * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
205 * {@link RepositoryEvent#getRepository()} the destination repository.
206 *
207 * @param event The event details, must not be {@code null}.
208 */
209 void metadataDeploying(RepositoryEvent event);
210
211 /**
212 * Notifies the listener of some metadata whose upload to a remote repository has been completed, either
213 * successfully or not. {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
214 * {@link RepositoryEvent#getExceptions()} indicates whether the upload succeeded or failed.
215 *
216 * @param event The event details, must not be {@code null}.
217 */
218 void metadataDeployed(RepositoryEvent event);
219 }