X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.repo%2Fsrc%2Forg%2Feclipse%2Faether%2FRepositoryListener.java;fp=org.argeo.slc.repo%2Fsrc%2Forg%2Feclipse%2Faether%2FRepositoryListener.java;h=5f83923683023698d5606ab3a6d6adf153e3d339;hb=825d60c5348dbe3f5be25b0bccf7bdebfe694219;hp=0000000000000000000000000000000000000000;hpb=5e991fff5cba01858dcc5747a27e637325bc5c8e;p=gpl%2Fargeo-jcr.git diff --git a/org.argeo.slc.repo/src/org/eclipse/aether/RepositoryListener.java b/org.argeo.slc.repo/src/org/eclipse/aether/RepositoryListener.java new file mode 100644 index 0000000..5f83923 --- /dev/null +++ b/org.argeo.slc.repo/src/org/eclipse/aether/RepositoryListener.java @@ -0,0 +1,213 @@ +/******************************************************************************* + * Copyright (c) 2010, 2014 Sonatype, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Sonatype, Inc. - initial API and implementation + *******************************************************************************/ +package org.eclipse.aether; + +/** + * 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. + * Note: 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 ); + +}