package alien4cloud.component.repository; import java.util.Map; import alien4cloud.repository.model.ValidationResult; /** * A configurable resolver, in general it contains in its configuration information to connect to repository * * @param <T> the type of configuration for this resolver */ public interface IConfigurableArtifactResolver<T> { /** * Check if the resolver can handle the particular artifact * * @param artifactReference reference of the artifact * @param repositoryURL url of the repository * @param repositoryType type of the repository, it corresponds to the resolver type, normally the plugin will resolve artifact only of type defined in * getResolverType * @param credentials the credentials to connect to the repository * @return the validation result */ ValidationResult canHandleArtifact(String artifactReference, String repositoryURL, String repositoryType, Map<String, Object> credentials); /** * Resolve an artifact, try to download the artifact if possible and return the path to the downloaded artifact * * @param artifactReference reference of the artifact * @param repositoryURL url of the repository * @param repositoryType type of the repository, it corresponds to the resolver type, normally the plugin will resolve artifact only of type defined in * getResolverType * @param credentials the credentials to connect to the repository * @return the path to the downloaded artifact */ String resolveArtifact(String artifactReference, String repositoryURL, String repositoryType, Map<String, Object> credentials); /** * Get the configuration of the artifact resolver * * @return the configuration of the resolver */ T getConfiguration(); String getConfigurationUrl(); /** * Set the configuration of the artifact resolver * * @param configuration the configuration of the resolver */ void setConfiguration(T configuration); }