package org.codehaus.mojo.repositorytools.validation; import java.util.ArrayList; import java.util.List; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.project.MavenProject; import org.apache.maven.project.ProjectBuildingException; import org.codehaus.mojo.repositorytools.components.RepositoryToolsException; import org.codehaus.plexus.util.StringUtils; /** * @plexus.component role="org.codehaus.mojo.repositorytools.validation.ArtifactValidator" * role-hint="contents" * @author tom * */ public class PomContentsValidator extends AbstractValidator { public List validateArtifact(Artifact artifact, List remoteRepositories, ArtifactRepository localRepository) throws RepositoryToolsException { try { List result = new ArrayList(); MavenProject project = createProject(artifact, remoteRepositories, localRepository); if (StringUtils.isEmpty(project.getDescription())) { result.add(new ValidationMessage(ValidationMessage.ERROR, "Project description is missing")); } if (StringUtils.isEmpty(project.getModel().getName())) { result.add(new ValidationMessage(ValidationMessage.ERROR, "Project name is missing")); } if (StringUtils.isEmpty(project.getUrl())) { result.add(new ValidationMessage(ValidationMessage.WARNING, "Project URL is missing")); } if (project.getScm() == null) { result.add(new ValidationMessage(ValidationMessage.WARNING, "Project SCM information is missing")); } else { if (StringUtils.isEmpty(project.getScm().getConnection())) { result.add(new ValidationMessage(ValidationMessage.WARNING, "Project SCM connection is missing")); } if (StringUtils.isEmpty(project.getScm().getUrl())) { result.add(new ValidationMessage(ValidationMessage.WARNING, "Project SCM url is missing")); } } if (project.getOrganization() == null) { result.add(new ValidationMessage(ValidationMessage.INFO, "Project organization is missing")); } else { if (StringUtils.isEmpty(project.getOrganization().getName())) { result.add(new ValidationMessage(ValidationMessage.INFO, "Project organization name is missing")); } } return result; } catch (ProjectBuildingException e) { throw new RepositoryToolsException("Could not build project", e); } } public String getDescription() { return "Validation of required POM elements"; } public boolean canValidate(Artifact artifact) { return artifact.getType().equals("pom"); } }