Search in sources :

Example 1 with ComponentMetadata

use of org.gradle.api.artifacts.ComponentMetadata in project gradle by gradle.

the class DefaultComponentMetadataProcessor method processMetadata.

@Override
public ComponentMetadata processMetadata(ComponentMetadata metadata) {
    ComponentMetadata updatedMetadata;
    if (metadataRuleContainer.isEmpty()) {
        updatedMetadata = metadata;
    } else {
        ShallowComponentMetadataAdapter details = new ShallowComponentMetadataAdapter(componentIdentifierNotationParser, metadata, attributesFactory);
        processAllRules(null, details, metadata.getId());
        updatedMetadata = details.asImmutable();
    }
    if (!updatedMetadata.getStatusScheme().contains(updatedMetadata.getStatus())) {
        throw new ModuleVersionResolveException(updatedMetadata.getId(), () -> String.format("Unexpected status '%s' specified for %s. Expected one of: %s", updatedMetadata.getStatus(), updatedMetadata.getId().toString(), updatedMetadata.getStatusScheme()));
    }
    return updatedMetadata;
}
Also used : ModuleVersionResolveException(org.gradle.internal.resolve.ModuleVersionResolveException) ComponentMetadata(org.gradle.api.artifacts.ComponentMetadata)

Example 2 with ComponentMetadata

use of org.gradle.api.artifacts.ComponentMetadata in project gradle by gradle.

the class DefaultMetadataProvider method getComponentMetadataFromSupplier.

private ComponentMetadata getComponentMetadataFromSupplier(InstantiatingAction<ComponentMetadataSupplierDetails> componentMetadataSupplier) {
    ComponentMetadata metadata;
    ModuleVersionIdentifier id = DefaultModuleVersionIdentifier.newId(resolveState.getId());
    metadata = resolveState.getComponentMetadataSupplierExecutor().execute(id, componentMetadataSupplier, TO_COMPONENT_METADATA, id1 -> {
        final SimpleComponentMetadataBuilder builder = new SimpleComponentMetadataBuilder(id1, resolveState.getAttributesFactory());
        return new BuildableComponentMetadataSupplierDetails(builder);
    }, resolveState.getCachePolicy());
    return metadata;
}
Also used : ModuleVersionIdentifier(org.gradle.api.artifacts.ModuleVersionIdentifier) DefaultModuleVersionIdentifier(org.gradle.api.internal.artifacts.DefaultModuleVersionIdentifier) DefaultIvyModuleDescriptor(org.gradle.api.internal.artifacts.ivyservice.DefaultIvyModuleDescriptor) IvyModuleDescriptor(org.gradle.api.artifacts.ivy.IvyModuleDescriptor) ComponentMetadataSupplierDetails(org.gradle.api.artifacts.ComponentMetadataSupplierDetails) CachePolicy(org.gradle.api.internal.artifacts.configurations.dynamicversion.CachePolicy) MavenVersionUtils(org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.MavenVersionUtils) Lists(com.google.common.collect.Lists) ComponentMetadataAdapter(org.gradle.api.internal.artifacts.repositories.resolver.ComponentMetadataAdapter) ModuleVersionIdentifier(org.gradle.api.artifacts.ModuleVersionIdentifier) AttributeContainer(org.gradle.api.attributes.AttributeContainer) Attribute(org.gradle.api.attributes.Attribute) ComponentResolveMetadata(org.gradle.internal.component.model.ComponentResolveMetadata) ModuleComponentResolveMetadata(org.gradle.internal.component.external.model.ModuleComponentResolveMetadata) ProjectInternal(org.gradle.api.internal.project.ProjectInternal) IvyModuleResolveMetadata(org.gradle.internal.component.external.model.ivy.IvyModuleResolveMetadata) DefaultModuleVersionIdentifier(org.gradle.api.internal.artifacts.DefaultModuleVersionIdentifier) ComponentMetadataBuilder(org.gradle.api.artifacts.ComponentMetadataBuilder) ImmutableAttributes(org.gradle.api.internal.attributes.ImmutableAttributes) Nullable(javax.annotation.Nullable) Transformer(org.gradle.api.Transformer) ImmutableAttributesFactory(org.gradle.api.internal.attributes.ImmutableAttributesFactory) MetadataResolutionContext(org.gradle.api.internal.artifacts.MetadataResolutionContext) Action(org.gradle.api.Action) ModuleComponentIdentifier(org.gradle.api.artifacts.component.ModuleComponentIdentifier) Instantiator(org.gradle.internal.reflect.Instantiator) List(java.util.List) ComponentMetadata(org.gradle.api.artifacts.ComponentMetadata) TreeFormatter(org.gradle.internal.logging.text.TreeFormatter) InstantiatingAction(org.gradle.internal.action.InstantiatingAction) BuildableModuleComponentMetaDataResolveResult(org.gradle.internal.resolve.result.BuildableModuleComponentMetaDataResolveResult) InvalidUserDataException(org.gradle.api.InvalidUserDataException) AttributeContainerInternal(org.gradle.api.internal.attributes.AttributeContainerInternal) ComponentMetadata(org.gradle.api.artifacts.ComponentMetadata)

Example 3 with ComponentMetadata

use of org.gradle.api.artifacts.ComponentMetadata in project gradle by gradle.

the class DefaultMetadataProvider method computeMetadata.

@Nullable
private ComponentMetadata computeMetadata() {
    ComponentMetadata metadata = null;
    InstantiatingAction<ComponentMetadataSupplierDetails> componentMetadataSupplier = resolveState.getComponentMetadataSupplier();
    if (componentMetadataSupplier != null) {
        metadata = getComponentMetadataFromSupplier(componentMetadataSupplier);
    }
    if (metadata != null) {
        metadata = transformThroughComponentMetadataRules(componentMetadataSupplier, metadata);
    } else if (resolve()) {
        metadata = new ComponentMetadataAdapter(cachedResult.getMetaData());
    }
    return metadata;
}
Also used : ComponentMetadataSupplierDetails(org.gradle.api.artifacts.ComponentMetadataSupplierDetails) ComponentMetadata(org.gradle.api.artifacts.ComponentMetadata) ComponentMetadataAdapter(org.gradle.api.internal.artifacts.repositories.resolver.ComponentMetadataAdapter) Nullable(javax.annotation.Nullable)

Example 4 with ComponentMetadata

use of org.gradle.api.artifacts.ComponentMetadata in project gradle by gradle.

the class DefaultVersionedComponentChooser method tryRejectByAttributes.

@Nullable
private RejectedByAttributesVersion tryRejectByAttributes(ModuleComponentIdentifier id, MetadataProvider provider, ImmutableAttributes consumerAttributes) {
    if (consumerAttributes.isEmpty()) {
        return null;
    }
    // At this point, we need the component metadata, because it may declare attributes that are needed for matching
    // Component metadata may not necessarily hit the network if there is a custom component metadata supplier
    ComponentMetadata componentMetadata = provider.getComponentMetadata();
    if (componentMetadata != null) {
        AttributeContainerInternal attributes = (AttributeContainerInternal) componentMetadata.getAttributes();
        boolean matching = attributesSchema.matcher().isMatching(attributes, consumerAttributes);
        if (!matching) {
            return new RejectedByAttributesVersion(id, attributesSchema.matcher().describeMatching(attributes, consumerAttributes));
        }
    }
    return null;
}
Also used : RejectedByAttributesVersion(org.gradle.internal.resolve.RejectedByAttributesVersion) ComponentMetadata(org.gradle.api.artifacts.ComponentMetadata) AttributeContainerInternal(org.gradle.api.internal.attributes.AttributeContainerInternal) Nullable(javax.annotation.Nullable)

Aggregations

ComponentMetadata (org.gradle.api.artifacts.ComponentMetadata)4 Nullable (javax.annotation.Nullable)3 ComponentMetadataSupplierDetails (org.gradle.api.artifacts.ComponentMetadataSupplierDetails)2 ComponentMetadataAdapter (org.gradle.api.internal.artifacts.repositories.resolver.ComponentMetadataAdapter)2 AttributeContainerInternal (org.gradle.api.internal.attributes.AttributeContainerInternal)2 Lists (com.google.common.collect.Lists)1 List (java.util.List)1 Action (org.gradle.api.Action)1 InvalidUserDataException (org.gradle.api.InvalidUserDataException)1 Transformer (org.gradle.api.Transformer)1 ComponentMetadataBuilder (org.gradle.api.artifacts.ComponentMetadataBuilder)1 ModuleVersionIdentifier (org.gradle.api.artifacts.ModuleVersionIdentifier)1 ModuleComponentIdentifier (org.gradle.api.artifacts.component.ModuleComponentIdentifier)1 IvyModuleDescriptor (org.gradle.api.artifacts.ivy.IvyModuleDescriptor)1 Attribute (org.gradle.api.attributes.Attribute)1 AttributeContainer (org.gradle.api.attributes.AttributeContainer)1 DefaultModuleVersionIdentifier (org.gradle.api.internal.artifacts.DefaultModuleVersionIdentifier)1 MetadataResolutionContext (org.gradle.api.internal.artifacts.MetadataResolutionContext)1 CachePolicy (org.gradle.api.internal.artifacts.configurations.dynamicversion.CachePolicy)1 DefaultIvyModuleDescriptor (org.gradle.api.internal.artifacts.ivyservice.DefaultIvyModuleDescriptor)1