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

scala_maven_dependency.Context4ScalaHome Maven / Gradle / Ivy

/*
 * This is free and unencumbered software released into the public domain.
 * See UNLICENSE.
 */
package scala_maven_dependency;

import java.io.File;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
import org.apache.maven.artifact.versioning.VersionRange;
import scala_maven.MavenArtifactResolver;
import scala_maven.VersionNumber;

public class Context4ScalaHome extends ContextBase implements Context {
  private final File scalaHome;

  public Context4ScalaHome(
      VersionNumber scalaVersion,
      VersionNumber scalaCompatVersion,
      ArtifactIds aids,
      File scalaHome) {
    super(scalaVersion, scalaCompatVersion, aids);
    this.scalaHome = scalaHome;
  }

  @Override
  public boolean hasInDistro(Artifact artifact) throws Exception {
    return false;
  }

  @Override
  public Set findLibraryAndDependencies() throws Exception {
    File lib = new File(scalaHome, "lib");
    File f = new File(lib, aids.scalaLibraryArtifactId() + ".jar");
    Set d = new TreeSet<>();
    d.add(
        new LocalFileArtifact("local", aids.scalaLibraryArtifactId(), scalaVersion.toString(), f));
    return d;
  }

  @Override
  public Set findCompilerAndDependencies() throws Exception {
    //        String compiler = aids.scalaCompilerArtifactId();
    Set d = new TreeSet<>();
    for (File f : new File(scalaHome, "lib").listFiles()) {
      String name = f.getName();
      if (name.endsWith(".jar")) {
        d.add(
            new LocalFileArtifact(
                "local", name.substring(0, name.length() - 4), scalaVersion.toString(), f));
      }
    }
    return d;
  }
}

class LocalFileArtifact implements Artifact {
  private String groupId;
  private String artifactId;
  private String version;
  private File file;

  public LocalFileArtifact(String groupId, String artifactId, String version, File file) {
    this.groupId = groupId;
    this.artifactId = artifactId;
    this.version = version;
    this.file = file;
  }

  @Override
  public String getGroupId() {
    return groupId;
  }

  @Override
  public String getArtifactId() {
    return artifactId;
  }

  @Override
  public String getVersion() {
    return version;
  }

  @Override
  public void setVersion(String version) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public String getScope() {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public String getType() {
    return MavenArtifactResolver.JAR;
  }

  @Override
  public String getClassifier() {
    return null;
  }

  @Override
  public boolean hasClassifier() {
    return false;
  }

  @Override
  public File getFile() {
    return file;
  }

  @Override
  public void setFile(File destination) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public String getBaseVersion() {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public void setBaseVersion(String baseVersion) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public String getId() {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public String getDependencyConflictId() {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public void addMetadata(ArtifactMetadata metadata) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public Collection getMetadataList() {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public void setRepository(ArtifactRepository remoteRepository) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public ArtifactRepository getRepository() {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public void updateVersion(String version, ArtifactRepository localRepository) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public String getDownloadUrl() {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public void setDownloadUrl(String downloadUrl) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public ArtifactFilter getDependencyFilter() {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public void setDependencyFilter(ArtifactFilter artifactFilter) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public ArtifactHandler getArtifactHandler() {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public List getDependencyTrail() {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public void setDependencyTrail(List dependencyTrail) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public void setScope(String scope) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public VersionRange getVersionRange() {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public void setVersionRange(VersionRange newRange) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public void selectVersion(String version) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public void setGroupId(String groupId) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public void setArtifactId(String artifactId) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public boolean isSnapshot() {
    return false;
  }

  @Override
  public void setResolved(boolean resolved) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public boolean isResolved() {
    return true;
  }

  @Override
  public void setResolvedVersion(String version) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public void setArtifactHandler(ArtifactHandler handler) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public boolean isRelease() {
    return false;
  }

  @Override
  public void setRelease(boolean release) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public List getAvailableVersions() {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public void setAvailableVersions(List versions) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public boolean isOptional() {
    return false;
  }

  @Override
  public void setOptional(boolean optional) {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public ArtifactVersion getSelectedVersion() throws OverConstrainedVersionException {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public boolean isSelectedVersionKnown() throws OverConstrainedVersionException {
    throw new UnsupportedOperationException("not implemented");
  }

  @Override
  public int compareTo(Artifact o) {
    int c = groupId.compareTo(o.getGroupId());
    if (c != 0) return c;
    c = artifactId.compareTo(o.getArtifactId());
    if (c != 0) return c;
    // TODO compare on classifier ?
    return version.compareTo(o.getVersion());
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy