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

tastymima.intf.Config Maven / Gradle / Ivy

package tastymima.intf;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public final class Config {
  private final List problemFilters;
  private final List artifactPrivatePackages;

  private Config(List problemFilters, List artifactPrivatePackages) {
    this.problemFilters = problemFilters;
    this.artifactPrivatePackages = artifactPrivatePackages;
  }

  public Config() {
    this(Collections.emptyList(), Collections.emptyList());
  }

  public List getProblemFilters() {
    return problemFilters;
  }

  public Config withMoreProblemFilters(List additionalFilters) {
    List newFilters = new ArrayList(problemFilters.size() + additionalFilters.size());
    newFilters.addAll(problemFilters);
    newFilters.addAll(additionalFilters);
    return withReplacedProblemFiltersInternal(newFilters);
  }

  public Config withReplacedProblemFilters(List problemFilters) {
    return withReplacedProblemFiltersInternal(new ArrayList<>(problemFilters));
  }

  private Config withReplacedProblemFiltersInternal(List problemFilters) {
    return new Config(Collections.unmodifiableList(problemFilters), artifactPrivatePackages);
  }

  /**
   * List of packages that are considered private to the library being analyzed.
   *
   * Symbols that are private to any of those packages will not be checked for changes by tasty-mima.
   */
  public List getArtifactPrivatePackages() {
    return artifactPrivatePackages;
  }

  public Config withMoreArtifactPrivatePackages(List additionalPackages) {
    List newPackages = new ArrayList(artifactPrivatePackages.size() + additionalPackages.size());
    newPackages.addAll(artifactPrivatePackages);
    newPackages.addAll(additionalPackages);
    return withReplacedArtifactPrivatePackagesInternal(newPackages);
  }

  public Config withReplacedArtifactPrivatePackages(List artifactPrivatePackages) {
    return withReplacedArtifactPrivatePackagesInternal(new ArrayList<>(artifactPrivatePackages));
  }

  private Config withReplacedArtifactPrivatePackagesInternal(List artifactPrivatePackages) {
    return new Config(problemFilters, Collections.unmodifiableList(artifactPrivatePackages));
  }

  @Override
  public boolean equals(Object that) {
    if (!(that instanceof Config))
      return false;
    Config thatConfig = (Config) that;
    return this.getProblemFilters().equals(thatConfig.getProblemFilters())
      && this.getArtifactPrivatePackages().equals(thatConfig.getArtifactPrivatePackages());
  }

  @Override
  public int hashCode() {
    int h = 2026047686;
    h = 31 * h + problemFilters.hashCode();
    h = 31 * h + artifactPrivatePackages.hashCode();
    return h;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy