org.gradle.api.internaldependencies.DefaultDependencyConstraint Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gradle-api Show documentation
Show all versions of gradle-api Show documentation
Gradle 6.9.1 API redistribution.
/*
* Copyright 2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.gradle.api.internal.artifacts.dependencies;
import com.google.common.base.Objects;
import com.google.common.base.Strings;
import org.gradle.api.Action;
import org.gradle.api.artifacts.DependencyConstraint;
import org.gradle.api.artifacts.ModuleIdentifier;
import org.gradle.api.artifacts.ModuleVersionIdentifier;
import org.gradle.api.artifacts.MutableVersionConstraint;
import org.gradle.api.artifacts.VersionConstraint;
import org.gradle.api.attributes.AttributeContainer;
import org.gradle.api.internal.artifacts.DefaultModuleIdentifier;
import org.gradle.api.internal.artifacts.ModuleVersionSelectorStrictSpec;
import org.gradle.api.internal.attributes.AttributeContainerInternal;
import org.gradle.api.internal.attributes.ImmutableAttributes;
import org.gradle.api.internal.attributes.ImmutableAttributesFactory;
import org.gradle.api.logging.Logger;
import org.gradle.api.logging.Logging;
import javax.annotation.Nullable;
public class DefaultDependencyConstraint implements DependencyConstraintInternal {
private final static Logger LOG = Logging.getLogger(DefaultDependencyConstraint.class);
private final ModuleIdentifier moduleIdentifier;
private final MutableVersionConstraint versionConstraint;
private String reason;
private ImmutableAttributesFactory attributesFactory;
private AttributeContainerInternal attributes;
private boolean force;
public DefaultDependencyConstraint(String group, String name, String version) {
this.moduleIdentifier = DefaultModuleIdentifier.newId(group, name);
this.versionConstraint = new DefaultMutableVersionConstraint(version);
}
private DefaultDependencyConstraint(ModuleIdentifier module, MutableVersionConstraint versionConstraint) {
this.moduleIdentifier = module;
this.versionConstraint = versionConstraint;
}
@Nullable
@Override
public String getGroup() {
return moduleIdentifier.getGroup();
}
@Override
public String getName() {
return moduleIdentifier.getName();
}
@Override
public String getVersion() {
return Strings.emptyToNull(versionConstraint.getRequiredVersion());
}
@Override
public AttributeContainer getAttributes() {
return attributes == null ? ImmutableAttributes.EMPTY : attributes.asImmutable();
}
@Override
public DependencyConstraint attributes(Action super AttributeContainer> configureAction) {
if (attributesFactory == null) {
warnAboutInternalApiUse();
return this;
}
if (attributes == null) {
attributes = attributesFactory.mutable();
}
configureAction.execute(attributes);
return this;
}
private void warnAboutInternalApiUse() {
LOG.warn("Cannot set attributes for constraint \"" + this.getGroup() + ":" + this.getName() + ":" + this.getVersion() + "\": it was probably created by a plugin using internal APIs");
}
public void setAttributesFactory(ImmutableAttributesFactory attributesFactory) {
this.attributesFactory = attributesFactory;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
DefaultDependencyConstraint that = (DefaultDependencyConstraint) o;
return Objects.equal(moduleIdentifier, that.moduleIdentifier) &&
Objects.equal(versionConstraint, that.versionConstraint) &&
Objects.equal(attributes, that.attributes) &&
force == that.force;
}
@Override
public int hashCode() {
return Objects.hashCode(moduleIdentifier, versionConstraint, attributes);
}
@Override
public void version(Action super MutableVersionConstraint> configureAction) {
configureAction.execute(versionConstraint);
}
@Override
public VersionConstraint getVersionConstraint() {
return versionConstraint;
}
@Override
public boolean matchesStrictly(ModuleVersionIdentifier identifier) {
return new ModuleVersionSelectorStrictSpec(this).isSatisfiedBy(identifier);
}
@Override
public ModuleIdentifier getModule() {
return moduleIdentifier;
}
@Override
public String getReason() {
return reason;
}
@Override
public void because(String reason) {
this.reason = reason;
}
public DependencyConstraint copy() {
DefaultDependencyConstraint constraint = new DefaultDependencyConstraint(moduleIdentifier, versionConstraint);
constraint.reason = reason;
constraint.attributes = attributes;
constraint.attributesFactory = attributesFactory;
constraint.force = force;
return constraint;
}
@Override
public String toString() {
return "constraint " +
moduleIdentifier + ":" + versionConstraint +
", attributes=" + attributes;
}
@Override
public void setForce(boolean force) {
this.force = force;
}
@Override
public boolean isForce() {
return force;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy