blob: eb8f5eae549dc1d9713565b0e3c80c859cfa0e9f [file] [log] [blame]
package org.apache.maven.repository;
/*
* 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.
*/
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
import org.apache.maven.artifact.repository.MavenArtifactRepository;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
/**
* Delegating local artifact repository chains the reactor, IDE workspace
* and user local repository.
*/
@Deprecated
public class DelegatingLocalArtifactRepository
extends MavenArtifactRepository
{
private LocalArtifactRepository buildReactor;
private LocalArtifactRepository ideWorkspace;
private ArtifactRepository userLocalArtifactRepository;
public DelegatingLocalArtifactRepository( ArtifactRepository artifactRepository )
{
this.userLocalArtifactRepository = artifactRepository;
}
public void setBuildReactor( LocalArtifactRepository localRepository )
{
this.buildReactor = localRepository;
}
public void setIdeWorkspace( LocalArtifactRepository localRepository )
{
this.ideWorkspace = localRepository;
}
/**
* @deprecated instead use {@link #getIdeWorkspace()}
*/
@Deprecated
public LocalArtifactRepository getIdeWorspace()
{
return ideWorkspace;
}
public LocalArtifactRepository getIdeWorkspace()
{
return getIdeWorspace();
}
@Override
public Artifact find( Artifact artifact )
{
if ( !artifact.isRelease() && buildReactor != null )
{
artifact = buildReactor.find( artifact );
}
if ( !artifact.isResolved() && ideWorkspace != null )
{
artifact = ideWorkspace.find( artifact );
}
if ( !artifact.isResolved() )
{
artifact = userLocalArtifactRepository.find( artifact );
}
return artifact;
}
@Override
public List<String> findVersions( Artifact artifact )
{
Collection<String> versions = new LinkedHashSet<>();
if ( buildReactor != null )
{
versions.addAll( buildReactor.findVersions( artifact ) );
}
if ( ideWorkspace != null )
{
versions.addAll( ideWorkspace.findVersions( artifact ) );
}
versions.addAll( userLocalArtifactRepository.findVersions( artifact ) );
return Collections.unmodifiableList( new ArrayList<>( versions ) );
}
public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository )
{
return userLocalArtifactRepository.pathOfLocalRepositoryMetadata( metadata, repository );
}
public String getId()
{
return userLocalArtifactRepository.getId();
}
@Override
public String pathOf( Artifact artifact )
{
return userLocalArtifactRepository.pathOf( artifact );
}
@Override
public String getBasedir()
{
return ( userLocalArtifactRepository != null ) ? userLocalArtifactRepository.getBasedir() : null;
}
@Override
public ArtifactRepositoryLayout getLayout()
{
return userLocalArtifactRepository.getLayout();
}
@Override
public ArtifactRepositoryPolicy getReleases()
{
return userLocalArtifactRepository.getReleases();
}
@Override
public ArtifactRepositoryPolicy getSnapshots()
{
return userLocalArtifactRepository.getSnapshots();
}
@Override
public String getKey()
{
return userLocalArtifactRepository.getKey();
}
@Override
public String getUrl()
{
return userLocalArtifactRepository.getUrl();
}
@Override
public int hashCode()
{
int hash = 17;
hash = hash * 31 + ( buildReactor == null ? 0 : buildReactor.hashCode() );
hash = hash * 31 + ( ideWorkspace == null ? 0 : ideWorkspace.hashCode() );
hash = hash * 31 + ( userLocalArtifactRepository == null ? 0 : userLocalArtifactRepository.hashCode() );
return hash;
}
@Override
public boolean equals( Object obj )
{
if ( this == obj )
{
return true;
}
if ( obj == null )
{
return false;
}
if ( getClass() != obj.getClass() )
{
return false;
}
DelegatingLocalArtifactRepository other = (DelegatingLocalArtifactRepository) obj;
return eq( buildReactor, other.buildReactor )
&& eq( ideWorkspace, other.ideWorkspace )
&& eq( userLocalArtifactRepository, other.userLocalArtifactRepository );
}
}