package org.codehaus.mojo.repositorytools.validation;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.codehaus.mojo.repositorytools.components.RepositoryToolsException;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.context.Context;
import org.codehaus.plexus.context.ContextException;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
/**
* @plexus.component role="org.codehaus.mojo.repositorytools.validation.ArtifactValidationManager"
* role-hint="default"
*/
public class DefaultArtifactValidationManager extends AbstractLogEnabled
implements ArtifactValidationManager, Contextualizable
{
private PlexusContainer container;
public Map validateArtifact(
Artifact artifact, List remoteRepositories,
ArtifactRepository localRepository) throws RepositoryToolsException
{
Map result = new HashMap();
Map validators = getValidators();
for (Iterator iterator = validators.entrySet().iterator(); iterator
.hasNext();) {
Map.Entry entry = (Map.Entry) iterator.next();
ArtifactValidator validator = (ArtifactValidator) entry.getValue();
if (validator.canValidate(artifact))
{
List messages = validator.validateArtifact(
artifact, remoteRepositories, localRepository);
result.put(validator, messages);
}
}
return result;
}
public void contextualize(Context context) throws ContextException
{
container = (PlexusContainer) context.get(PlexusConstants.PLEXUS_KEY);
}
public String getDescription()
{
return "Aggegate validator";
}
public Map getValidators()
throws RepositoryToolsException
{
try
{
return Collections
.unmodifiableMap((Map) container
.lookupMap(ArtifactValidator.ROLE));
}
catch (ComponentLookupException e)
{
throw new RepositoryToolsException("Could not find any validators",
e);
}
}
}