Package com.github.ferstl.maven.pomenforcers.model.functions

Source Code of com.github.ferstl.maven.pomenforcers.model.functions.DependencyMatcher

package com.github.ferstl.maven.pomenforcers.model.functions;

import static com.github.ferstl.maven.pomenforcers.util.EnforcerRuleUtils.evaluateProperties;

import java.util.Objects;

import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
import org.apache.maven.model.Dependency;

import com.github.ferstl.maven.pomenforcers.model.DependencyModel;
import com.github.ferstl.maven.pomenforcers.model.DependencyScope;
import com.google.common.collect.ImmutableBiMap.Builder;

/**
* Matches Maven {@link Dependency} objects with {@link DependencyModel} objects.
*/
public class DependencyMatcher extends AbstractOneToOneMatcher<Dependency, DependencyModel> {

  public DependencyMatcher(EnforcerRuleHelper helper) {
    super(helper);
  }

  @Override
  protected DependencyModel transform(Dependency mavenDependency) {
    return new DependencyModel(
        mavenDependency.getGroupId(),
        mavenDependency.getArtifactId(),
        mavenDependency.getVersion(),
        mavenDependency.getScope(),
        mavenDependency.getClassifier(),
        mavenDependency.getType());
  }

  @Override
  protected boolean matches(DependencyModel supersetItem, DependencyModel subsetItem) {
    String groupId = evaluateProperties(subsetItem.getGroupId(), getHelper());
    String artifactId = evaluateProperties(subsetItem.getArtifactId(), getHelper());
    String classifier = evaluateProperties(subsetItem.getClassifier(), getHelper());
    String type = evaluateProperties(subsetItem.getType(), getHelper());

    return Objects.equals(supersetItem.getGroupId(), groupId)
        && Objects.equals(supersetItem.getArtifactId(), artifactId)
        && Objects.equals(supersetItem.getClassifier(), classifier)
        && Objects.equals(supersetItem.getType(), type);
  }

  @Override
  protected void handleUnmatchedItem(
      Builder<DependencyModel, DependencyModel> mapBuilder,
      DependencyModel subsetItem) {
    String type = evaluateProperties(subsetItem.getType(), getHelper());
    if ("pom".equals(type) && DependencyScope.IMPORT.equals(subsetItem.getScope())) {
      mapBuilder.put(subsetItem, subsetItem);
    } else {
      super.handleUnmatchedItem(mapBuilder, subsetItem);
    }
  }
}
TOP

Related Classes of com.github.ferstl.maven.pomenforcers.model.functions.DependencyMatcher

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.