All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.htfv.maven.plugins.testing.internal.ProjectWorkspaceReader Maven / Gradle / Ivy

package com.github.htfv.maven.plugins.testing.internal;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.ObjectUtils;
import org.sonatype.aether.artifact.Artifact;
import org.sonatype.aether.repository.WorkspaceReader;
import org.sonatype.aether.repository.WorkspaceRepository;

/**
 * {@link WorkspaceReader} implementation with works over a list of workspace
 * {@link Artifact}s.
 *
 * @author htfv (Aliaksei Lahachou)
 */
public class ProjectWorkspaceReader implements WorkspaceReader
{
    /**
     * The list of workspace {@link Artifact}s.
     */
    private List workspaceArtifacts;

    /**
     * The default {@link WorkspaceRepository}.
     */
    private WorkspaceRepository workspaceRepository = new WorkspaceRepository();

    /**
     * Constructs a new instance of {@link ProjectWorkspaceReader}.
     *
     * @param workspaceArtifacts
     *            the list of workspace {@link Artifact}s.
     */
    public ProjectWorkspaceReader(final List workspaceArtifacts)
    {
        this.workspaceArtifacts = workspaceArtifacts;
    }

    @Override
    public File findArtifact(final Artifact artifact)
    {
        String groupId    = artifact.getGroupId();
        String artifactId = artifact.getArtifactId();
        String extension  = artifact.getExtension();

        //
        // We cannot reliably determine extension of a workspace artifact, so we
        // always assume that everything that is not a pom is a jar.
        //

        if (!"pom".equals(extension))
        {
            extension = "jar";
        }

        for (Artifact workspaceArtifact : workspaceArtifacts)
        {
            if (ObjectUtils.equals(groupId, workspaceArtifact.getGroupId())
                    && ObjectUtils.equals(artifactId, workspaceArtifact.getArtifactId())
                    && ObjectUtils.equals(extension, workspaceArtifact.getExtension()))
            {
                return workspaceArtifact.getFile();
            }
        }

        return null;
    }

    @Override
    public List findVersions(final Artifact artifact)
    {
        String groupId    = artifact.getGroupId();
        String artifactId = artifact.getArtifactId();
        String extension  = artifact.getExtension();

        //
        // We cannot reliably determine extension of a workspace artifact, so we
        // always assume that everything that is not a pom is a jar.
        //

        if (!"pom".equals(extension))
        {
            extension = "jar";
        }

        List versions = new ArrayList();

        for (Artifact workspaceArtifact : workspaceArtifacts)
        {
            if (ObjectUtils.equals(groupId, workspaceArtifact.getGroupId())
                    && ObjectUtils.equals(artifactId, workspaceArtifact.getArtifactId())
                    && ObjectUtils.equals(extension, workspaceArtifact.getExtension()))
            {
                versions.add(workspaceArtifact.getVersion());
            }
        }

        return versions;
    }

    @Override
    public WorkspaceRepository getRepository()
    {
        return workspaceRepository;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy