blob: d65463059e800e0c99a08174e39921bf8a047872 [file] [log] [blame]
package org.eclipse.aether;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* A listener being notified of events from the repository system. In general, the system sends events upon termination
* of an operation like {@link #artifactResolved(RepositoryEvent)} regardless whether it succeeded or failed so
* listeners need to inspect the event details carefully. Also, the listener may be called from an arbitrary thread.
* <em>Note:</em> Implementors are strongly advised to inherit from {@link AbstractRepositoryListener} instead of
* directly implementing this interface.
*
* @see org.eclipse.aether.RepositorySystemSession#getRepositoryListener()
* @see org.eclipse.aether.transfer.TransferListener
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This interface is not intended to be extended by clients.
*/
public interface RepositoryListener
{
/**
* Notifies the listener of a syntactically or semantically invalid artifact descriptor.
* {@link RepositoryEvent#getArtifact()} indicates the artifact whose descriptor is invalid and
* {@link RepositoryEvent#getExceptions()} carries the encountered errors. Depending on the session's
* {@link org.eclipse.aether.resolution.ArtifactDescriptorPolicy}, the underlying repository operation might abort
* with an exception or ignore the invalid descriptor.
*
* @param event The event details, must not be {@code null}.
*/
void artifactDescriptorInvalid( RepositoryEvent event );
/**
* Notifies the listener of a missing artifact descriptor. {@link RepositoryEvent#getArtifact()} indicates the
* artifact whose descriptor is missing. Depending on the session's
* {@link org.eclipse.aether.resolution.ArtifactDescriptorPolicy}, the underlying repository operation might abort
* with an exception or ignore the missing descriptor.
*
* @param event The event details, must not be {@code null}.
*/
void artifactDescriptorMissing( RepositoryEvent event );
/**
* Notifies the listener of syntactically or semantically invalid metadata. {@link RepositoryEvent#getMetadata()}
* indicates the invalid metadata and {@link RepositoryEvent#getExceptions()} carries the encountered errors. The
* underlying repository operation might still succeed, depending on whether the metadata in question is actually
* needed to carry out the resolution process.
*
* @param event The event details, must not be {@code null}.
*/
void metadataInvalid( RepositoryEvent event );
/**
* Notifies the listener of an artifact that is about to be resolved. {@link RepositoryEvent#getArtifact()} denotes
* the artifact in question. Unlike the {@link #artifactDownloading(RepositoryEvent)} event, this event is fired
* regardless whether the artifact already exists locally or not.
*
* @param event The event details, must not be {@code null}.
*/
void artifactResolving( RepositoryEvent event );
/**
* Notifies the listener of an artifact whose resolution has been completed, either successfully or not.
* {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
* {@link RepositoryEvent#getExceptions()} indicates whether the resolution succeeded or failed. Unlike the
* {@link #artifactDownloaded(RepositoryEvent)} event, this event is fired regardless whether the artifact already
* exists locally or not.
*
* @param event The event details, must not be {@code null}.
*/
void artifactResolved( RepositoryEvent event );
/**
* Notifies the listener of some metadata that is about to be resolved. {@link RepositoryEvent#getMetadata()}
* denotes the metadata in question. Unlike the {@link #metadataDownloading(RepositoryEvent)} event, this event is
* fired regardless whether the metadata already exists locally or not.
*
* @param event The event details, must not be {@code null}.
*/
void metadataResolving( RepositoryEvent event );
/**
* Notifies the listener of some metadata whose resolution has been completed, either successfully or not.
* {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
* {@link RepositoryEvent#getExceptions()} indicates whether the resolution succeeded or failed. Unlike the
* {@link #metadataDownloaded(RepositoryEvent)} event, this event is fired regardless whether the metadata already
* exists locally or not.
*
* @param event The event details, must not be {@code null}.
*/
void metadataResolved( RepositoryEvent event );
/**
* Notifies the listener of an artifact that is about to be downloaded from a remote repository.
* {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
* {@link RepositoryEvent#getRepository()} the source repository. Unlike the
* {@link #artifactResolving(RepositoryEvent)} event, this event is only fired when the artifact does not already
* exist locally.
*
* @param event The event details, must not be {@code null}.
*/
void artifactDownloading( RepositoryEvent event );
/**
* Notifies the listener of an artifact whose download has been completed, either successfully or not.
* {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
* {@link RepositoryEvent#getExceptions()} indicates whether the download succeeded or failed. Unlike the
* {@link #artifactResolved(RepositoryEvent)} event, this event is only fired when the artifact does not already
* exist locally.
*
* @param event The event details, must not be {@code null}.
*/
void artifactDownloaded( RepositoryEvent event );
/**
* Notifies the listener of some metadata that is about to be downloaded from a remote repository.
* {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
* {@link RepositoryEvent#getRepository()} the source repository. Unlike the
* {@link #metadataResolving(RepositoryEvent)} event, this event is only fired when the metadata does not already
* exist locally.
*
* @param event The event details, must not be {@code null}.
*/
void metadataDownloading( RepositoryEvent event );
/**
* Notifies the listener of some metadata whose download has been completed, either successfully or not.
* {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
* {@link RepositoryEvent#getExceptions()} indicates whether the download succeeded or failed. Unlike the
* {@link #metadataResolved(RepositoryEvent)} event, this event is only fired when the metadata does not already
* exist locally.
*
* @param event The event details, must not be {@code null}.
*/
void metadataDownloaded( RepositoryEvent event );
/**
* Notifies the listener of an artifact that is about to be installed to the local repository.
* {@link RepositoryEvent#getArtifact()} denotes the artifact in question.
*
* @param event The event details, must not be {@code null}.
*/
void artifactInstalling( RepositoryEvent event );
/**
* Notifies the listener of an artifact whose installation to the local repository has been completed, either
* successfully or not. {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
* {@link RepositoryEvent#getExceptions()} indicates whether the installation succeeded or failed.
*
* @param event The event details, must not be {@code null}.
*/
void artifactInstalled( RepositoryEvent event );
/**
* Notifies the listener of some metadata that is about to be installed to the local repository.
* {@link RepositoryEvent#getMetadata()} denotes the metadata in question.
*
* @param event The event details, must not be {@code null}.
*/
void metadataInstalling( RepositoryEvent event );
/**
* Notifies the listener of some metadata whose installation to the local repository has been completed, either
* successfully or not. {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
* {@link RepositoryEvent#getExceptions()} indicates whether the installation succeeded or failed.
*
* @param event The event details, must not be {@code null}.
*/
void metadataInstalled( RepositoryEvent event );
/**
* Notifies the listener of an artifact that is about to be uploaded to a remote repository.
* {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
* {@link RepositoryEvent#getRepository()} the destination repository.
*
* @param event The event details, must not be {@code null}.
*/
void artifactDeploying( RepositoryEvent event );
/**
* Notifies the listener of an artifact whose upload to a remote repository has been completed, either successfully
* or not. {@link RepositoryEvent#getArtifact()} denotes the artifact in question and
* {@link RepositoryEvent#getExceptions()} indicates whether the upload succeeded or failed.
*
* @param event The event details, must not be {@code null}.
*/
void artifactDeployed( RepositoryEvent event );
/**
* Notifies the listener of some metadata that is about to be uploaded to a remote repository.
* {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
* {@link RepositoryEvent#getRepository()} the destination repository.
*
* @param event The event details, must not be {@code null}.
*/
void metadataDeploying( RepositoryEvent event );
/**
* Notifies the listener of some metadata whose upload to a remote repository has been completed, either
* successfully or not. {@link RepositoryEvent#getMetadata()} denotes the metadata in question and
* {@link RepositoryEvent#getExceptions()} indicates whether the upload succeeded or failed.
*
* @param event The event details, must not be {@code null}.
*/
void metadataDeployed( RepositoryEvent event );
}