org.eclipse.aether.resolution.ArtifactDescriptorResult Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 2010, 2012 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.resolution;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.repository.ArtifactRepository;
import org.eclipse.aether.repository.RemoteRepository;
/**
* The result from reading an artifact descriptor.
*
* @see RepositorySystem#readArtifactDescriptor(RepositorySystemSession, ArtifactDescriptorRequest)
*/
public final class ArtifactDescriptorResult
{
private final ArtifactDescriptorRequest request;
private List exceptions;
private List relocations;
private Collection aliases;
private Artifact artifact;
private ArtifactRepository repository;
private List dependencies;
private List managedDependencies;
private List repositories;
private Map properties;
/**
* Creates a new result for the specified request.
*
* @param request The descriptor request, must not be {@code null}.
*/
public ArtifactDescriptorResult( ArtifactDescriptorRequest request )
{
if ( request == null )
{
throw new IllegalArgumentException( "artifact descriptor request has not been specified" );
}
this.request = request;
artifact = request.getArtifact();
exceptions = Collections.emptyList();
relocations = Collections.emptyList();
aliases = Collections.emptyList();
dependencies = managedDependencies = Collections.emptyList();
repositories = Collections.emptyList();
properties = Collections.emptyMap();
}
/**
* Gets the descriptor request that was made.
*
* @return The descriptor request, never {@code null}.
*/
public ArtifactDescriptorRequest getRequest()
{
return request;
}
/**
* Gets the exceptions that occurred while reading the artifact descriptor.
*
* @return The exceptions that occurred, never {@code null}.
*/
public List getExceptions()
{
return exceptions;
}
/**
* Sets the exceptions that occurred while reading the artifact descriptor.
*
* @param exceptions The exceptions that occurred, may be {@code null}.
* @return This result for chaining, never {@code null}.
*/
public ArtifactDescriptorResult setExceptions( List exceptions )
{
if ( exceptions == null )
{
this.exceptions = Collections.emptyList();
}
else
{
this.exceptions = exceptions;
}
return this;
}
/**
* Records the specified exception while reading the artifact descriptor.
*
* @param exception The exception to record, may be {@code null}.
* @return This result for chaining, never {@code null}.
*/
public ArtifactDescriptorResult addException( Exception exception )
{
if ( exception != null )
{
if ( exceptions.isEmpty() )
{
exceptions = new ArrayList();
}
exceptions.add( exception );
}
return this;
}
/**
* Gets the relocations that were processed to read the artifact descriptor. The returned list denotes the hops that
* lead to the final artifact coordinates as given by {@link #getArtifact()}.
*
* @return The relocations that were processed, never {@code null}.
*/
public List getRelocations()
{
return relocations;
}
/**
* Sets the relocations that were processed to read the artifact descriptor.
*
* @param relocations The relocations that were processed, may be {@code null}.
* @return This result for chaining, never {@code null}.
*/
public ArtifactDescriptorResult setRelocations( List relocations )
{
if ( relocations == null )
{
this.relocations = Collections.emptyList();
}
else
{
this.relocations = relocations;
}
return this;
}
/**
* Records the specified relocation hop while locating the artifact descriptor.
*
* @param artifact The artifact that got relocated, may be {@code null}.
* @return This result for chaining, never {@code null}.
*/
public ArtifactDescriptorResult addRelocation( Artifact artifact )
{
if ( artifact != null )
{
if ( relocations.isEmpty() )
{
relocations = new ArrayList();
}
relocations.add( artifact );
}
return this;
}
/**
* Gets the known aliases for this artifact. An alias denotes a different artifact with (almost) the same contents
* and can be used to mark a patched rebuild of some other artifact as such, thereby allowing conflict resolution to
* consider the patched and the original artifact as a conflict.
*
* @return The aliases of the artifact, never {@code null}.
*/
public Collection getAliases()
{
return aliases;
}
/**
* Sets the aliases of the artifact.
*
* @param aliases The aliases of the artifact, may be {@code null}.
* @return This result for chaining, never {@code null}.
*/
public ArtifactDescriptorResult setAliases( Collection aliases )
{
if ( aliases == null )
{
this.aliases = Collections.emptyList();
}
else
{
this.aliases = aliases;
}
return this;
}
/**
* Records the specified alias.
*
* @param alias The alias for the artifact, may be {@code null}.
* @return This result for chaining, never {@code null}.
*/
public ArtifactDescriptorResult addAlias( Artifact alias )
{
if ( alias != null )
{
if ( aliases.isEmpty() )
{
aliases = new ArrayList();
}
aliases.add( alias );
}
return this;
}
/**
* Gets the artifact whose descriptor was read. This can be a different artifact than originally requested in case
* relocations were encountered.
*
* @return The artifact after following any relocations, never {@code null}.
*/
public Artifact getArtifact()
{
return artifact;
}
/**
* Sets the artifact whose descriptor was read.
*
* @param artifact The artifact whose descriptor was read, may be {@code null}.
* @return This result for chaining, never {@code null}.
*/
public ArtifactDescriptorResult setArtifact( Artifact artifact )
{
this.artifact = artifact;
return this;
}
/**
* Gets the repository from which the descriptor was eventually resolved.
*
* @return The repository from which the descriptor was resolved or {@code null} if unknown.
*/
public ArtifactRepository getRepository()
{
return repository;
}
/**
* Sets the repository from which the descriptor was resolved.
*
* @param repository The repository from which the descriptor was resolved, may be {@code null}.
* @return This result for chaining, never {@code null}.
*/
public ArtifactDescriptorResult setRepository( ArtifactRepository repository )
{
this.repository = repository;
return this;
}
/**
* Gets the list of direct dependencies of the artifact.
*
* @return The list of direct dependencies, never {@code null}
*/
public List getDependencies()
{
return dependencies;
}
/**
* Sets the list of direct dependencies of the artifact.
*
* @param dependencies The list of direct dependencies, may be {@code null}
* @return This result for chaining, never {@code null}.
*/
public ArtifactDescriptorResult setDependencies( List dependencies )
{
if ( dependencies == null )
{
this.dependencies = Collections.emptyList();
}
else
{
this.dependencies = dependencies;
}
return this;
}
/**
* Adds the specified direct dependency.
*
* @param dependency The direct dependency to add, may be {@code null}.
* @return This result for chaining, never {@code null}.
*/
public ArtifactDescriptorResult addDependency( Dependency dependency )
{
if ( dependency != null )
{
if ( dependencies.isEmpty() )
{
dependencies = new ArrayList();
}
dependencies.add( dependency );
}
return this;
}
/**
* Gets the dependency management information.
*
* @return The dependency management information.
*/
public List getManagedDependencies()
{
return managedDependencies;
}
/**
* Sets the dependency management information.
*
* @param dependencies The dependency management information, may be {@code null}.
* @return This result for chaining, never {@code null}.
*/
public ArtifactDescriptorResult setManagedDependencies( List dependencies )
{
if ( dependencies == null )
{
this.managedDependencies = Collections.emptyList();
}
else
{
this.managedDependencies = dependencies;
}
return this;
}
/**
* Adds the specified managed dependency.
*
* @param dependency The managed dependency to add, may be {@code null}.
* @return This result for chaining, never {@code null}.
*/
public ArtifactDescriptorResult addManagedDependency( Dependency dependency )
{
if ( dependency != null )
{
if ( managedDependencies.isEmpty() )
{
managedDependencies = new ArrayList();
}
managedDependencies.add( dependency );
}
return this;
}
/**
* Gets the remote repositories listed in the artifact descriptor.
*
* @return The remote repositories listed in the artifact descriptor, never {@code null}.
*/
public List getRepositories()
{
return repositories;
}
/**
* Sets the remote repositories listed in the artifact descriptor.
*
* @param repositories The remote repositories listed in the artifact descriptor, may be {@code null}.
* @return This result for chaining, never {@code null}.
*/
public ArtifactDescriptorResult setRepositories( List repositories )
{
if ( repositories == null )
{
this.repositories = Collections.emptyList();
}
else
{
this.repositories = repositories;
}
return this;
}
/**
* Adds the specified remote repository.
*
* @param repository The remote repository to add, may be {@code null}.
* @return This result for chaining, never {@code null}.
*/
public ArtifactDescriptorResult addRepository( RemoteRepository repository )
{
if ( repository != null )
{
if ( repositories.isEmpty() )
{
repositories = new ArrayList();
}
repositories.add( repository );
}
return this;
}
/**
* Gets any additional information about the artifact in form of key-value pairs. Note: Regardless of their
* actual type, all property values must be treated as being read-only.
*
* @return The additional information about the artifact, never {@code null}.
*/
public Map getProperties()
{
return properties;
}
/**
* Sets any additional information about the artifact in form of key-value pairs.
*
* @param properties The additional information about the artifact, may be {@code null}.
* @return This result for chaining, never {@code null}.
*/
public ArtifactDescriptorResult setProperties( Map properties )
{
if ( properties == null )
{
this.properties = Collections.emptyMap();
}
else
{
this.properties = properties;
}
return this;
}
@Override
public String toString()
{
return getArtifact() + " -> " + getDependencies();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy