Skip to content

Commit

Permalink
Combine external and module components (gradle#31909)
Browse files Browse the repository at this point in the history
  • Loading branch information
jvandort authored Dec 31, 2024
2 parents 9af5276 + 11a0572 commit 066c3a0
Show file tree
Hide file tree
Showing 48 changed files with 242 additions and 304 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@
import org.gradle.api.internal.attributes.ImmutableAttributes;
import org.gradle.api.internal.attributes.immutable.ImmutableAttributesSchema;
import org.gradle.internal.component.external.model.DefaultConfigurationMetadata;
import org.gradle.internal.component.external.model.ExternalComponentGraphResolveMetadata;
import org.gradle.internal.component.external.model.ExternalComponentResolveMetadata;
import org.gradle.internal.component.external.model.ExternalVariantGraphResolveMetadata;
import org.gradle.internal.component.external.model.ExternalModuleVariantGraphResolveMetadata;
import org.gradle.internal.component.external.model.ModuleComponentArtifactMetadata;
import org.gradle.internal.component.external.model.ExternalModuleComponentGraphResolveMetadata;
import org.gradle.internal.component.external.model.ModuleComponentGraphResolveStateFactory;
import org.gradle.internal.component.external.model.ModuleComponentResolveMetadata;
import org.gradle.internal.component.external.model.ModuleDependencyMetadata;
Expand Down Expand Up @@ -110,7 +110,7 @@ private ModuleDependencyMetadata createDependencyMetadata(ModuleDependency modul
return new ModuleDependencyMetadataWrapper(dependencyMetadata);
}

private static class ClientModuleComponentResolveMetadata implements ExternalComponentResolveMetadata, ExternalComponentGraphResolveMetadata {
private static class ClientModuleComponentResolveMetadata implements ExternalComponentResolveMetadata, ExternalModuleComponentGraphResolveMetadata {
private final ModuleComponentResolveMetadata delegate;
private final ModuleComponentArtifactMetadata clientModuleArtifact;
private final List<ModuleDependencyMetadata> clientModuleDependencies;
Expand Down Expand Up @@ -153,7 +153,7 @@ public ModuleConfigurationMetadata getConfiguration(String name) {
}

@Override
public List<? extends ExternalVariantGraphResolveMetadata> getVariantsForGraphTraversal() {
public List<? extends ExternalModuleVariantGraphResolveMetadata> getVariantsForGraphTraversal() {
return Collections.emptyList();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,16 @@
import org.gradle.api.internal.artifacts.ivyservice.DefaultIvyModuleDescriptor;
import org.gradle.api.internal.artifacts.repositories.resolver.ComponentMetadataAdapter;
import org.gradle.internal.component.external.model.ExternalComponentResolveMetadata;
import org.gradle.internal.component.external.model.ModuleComponentGraphResolveState;
import org.gradle.internal.component.external.model.ExternalModuleComponentGraphResolveState;
import org.gradle.internal.component.external.model.ivy.IvyModuleResolveMetadata;
import org.gradle.internal.resolve.result.BuildableModuleComponentMetaDataResolveResult;

class CachedMetadataProvider implements MetadataProvider {
private final BuildableModuleComponentMetaDataResolveResult<ModuleComponentGraphResolveState> cachedResult;
private final BuildableModuleComponentMetaDataResolveResult<ExternalModuleComponentGraphResolveState> cachedResult;
private final ComponentMetadata cachedComponentMetadata;
private final boolean usable;

CachedMetadataProvider(BuildableModuleComponentMetaDataResolveResult<ModuleComponentGraphResolveState> result) {
CachedMetadataProvider(BuildableModuleComponentMetaDataResolveResult<ExternalModuleComponentGraphResolveState> result) {
cachedResult = result;
usable = cachedResult.getState() == BuildableModuleComponentMetaDataResolveResult.State.Resolved;
if (usable) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
import org.gradle.api.internal.component.ArtifactType;
import org.gradle.internal.action.InstantiatingAction;
import org.gradle.internal.component.external.model.ModuleComponentArtifactMetadata;
import org.gradle.internal.component.external.model.ModuleComponentGraphResolveState;
import org.gradle.internal.component.external.model.ExternalModuleComponentGraphResolveState;
import org.gradle.internal.component.external.model.ModuleComponentGraphResolveStateFactory;
import org.gradle.internal.component.external.model.ModuleComponentResolveMetadata;
import org.gradle.internal.component.model.ComponentArtifactMetadata;
Expand Down Expand Up @@ -73,7 +73,7 @@
* The `ResolveAndCacheRepositoryAccess` provided by {@link #getRemoteAccess()} will first delegate any resolution request,
* and then store the result in the dependency resolution cache.
*/
public class CachingModuleComponentRepository implements ModuleComponentRepository<ModuleComponentGraphResolveState> {
public class CachingModuleComponentRepository implements ModuleComponentRepository<ExternalModuleComponentGraphResolveState> {
private static final Logger LOGGER = LoggerFactory.getLogger(CachingModuleComponentRepository.class);

private final ModuleVersionsCache moduleVersionsCache;
Expand Down Expand Up @@ -127,12 +127,12 @@ public String toString() {
}

@Override
public ModuleComponentRepositoryAccess<ModuleComponentGraphResolveState> getLocalAccess() {
public ModuleComponentRepositoryAccess<ExternalModuleComponentGraphResolveState> getLocalAccess() {
return locateInCacheRepositoryAccess;
}

@Override
public ModuleComponentRepositoryAccess<ModuleComponentGraphResolveState> getRemoteAccess() {
public ModuleComponentRepositoryAccess<ExternalModuleComponentGraphResolveState> getRemoteAccess() {
return resolveAndCacheRepositoryAccess;
}

Expand All @@ -146,7 +146,7 @@ public InstantiatingAction<ComponentMetadataSupplierDetails> getComponentMetadat
return delegate.getComponentMetadataSupplier();
}

private class LocateInCacheRepositoryAccess implements ModuleComponentRepositoryAccess<ModuleComponentGraphResolveState> {
private class LocateInCacheRepositoryAccess implements ModuleComponentRepositoryAccess<ExternalModuleComponentGraphResolveState> {
@Override
public String toString() {
return "cache lookup for " + delegate;
Expand Down Expand Up @@ -186,7 +186,7 @@ private void listModuleVersionsFromCache(ModuleComponentSelector selector, Build
}

@Override
public void resolveComponentMetaData(ModuleComponentIdentifier moduleComponentIdentifier, ComponentOverrideMetadata requestMetaData, BuildableModuleComponentMetaDataResolveResult<ModuleComponentGraphResolveState> result) {
public void resolveComponentMetaData(ModuleComponentIdentifier moduleComponentIdentifier, ComponentOverrideMetadata requestMetaData, BuildableModuleComponentMetaDataResolveResult<ExternalModuleComponentGraphResolveState> result) {
// First try to determine the metadata in-memory: don't use the cache in this case
DefaultBuildableModuleComponentMetaDataResolveResult<ModuleComponentResolveMetadata> localResult = new DefaultBuildableModuleComponentMetaDataResolveResult<>();
delegate.getLocalAccess().resolveComponentMetaData(moduleComponentIdentifier, requestMetaData, localResult);
Expand All @@ -199,7 +199,7 @@ public void resolveComponentMetaData(ModuleComponentIdentifier moduleComponentId
resolveComponentMetaDataFromCache(moduleComponentIdentifier, requestMetaData, result);
}

private void resolveComponentMetaDataFromCache(ModuleComponentIdentifier moduleComponentIdentifier, ComponentOverrideMetadata requestMetaData, BuildableModuleComponentMetaDataResolveResult<ModuleComponentGraphResolveState> result) {
private void resolveComponentMetaDataFromCache(ModuleComponentIdentifier moduleComponentIdentifier, ComponentOverrideMetadata requestMetaData, BuildableModuleComponentMetaDataResolveResult<ExternalModuleComponentGraphResolveState> result) {
ModuleMetadataCache.CachedMetadata cachedMetadata = moduleMetadataCache.getCachedModuleDescriptor(delegate, moduleComponentIdentifier);
if (cachedMetadata == null) {
return;
Expand All @@ -215,7 +215,7 @@ private void resolveComponentMetaDataFromCache(ModuleComponentIdentifier moduleC
result.setAuthoritative(cachedMetadata.getAge().toMillis() == 0);
return;
}
ModuleComponentGraphResolveState state = getProcessedMetadata(metadataProcessor.getRulesHash(), cachedMetadata);
ExternalModuleComponentGraphResolveState state = getProcessedMetadata(metadataProcessor.getRulesHash(), cachedMetadata);
if (requestMetaData.isChanging() || state.getMetadata().isChanging()) {
CacheExpirationControl.Expiry expiry = cacheExpirationControl.changingModuleExpiry(moduleComponentIdentifier, cachedMetadata.getModuleVersion(), cachedMetadata.getAge());
if (expiry.isMustCheck()) {
Expand All @@ -237,8 +237,8 @@ private void resolveComponentMetaDataFromCache(ModuleComponentIdentifier moduleC
result.setAuthoritative(cachedMetadata.getAge().toMillis() == 0);
}

private ModuleComponentGraphResolveState getProcessedMetadata(int key, ModuleMetadataCache.CachedMetadata cachedMetadata) {
ModuleComponentGraphResolveState state = cachedMetadata.getProcessedMetadata(key);
private ExternalModuleComponentGraphResolveState getProcessedMetadata(int key, ModuleMetadataCache.CachedMetadata cachedMetadata) {
ExternalModuleComponentGraphResolveState state = cachedMetadata.getProcessedMetadata(key);
if (state == null) {
ModuleComponentResolveMetadata metadata = metadataProcessor.processMetadata(cachedMetadata.getMetadata());
metadata = attachRepositorySource(metadata);
Expand Down Expand Up @@ -300,7 +300,7 @@ public MetadataFetchingCost estimateMetadataFetchingCost(ModuleComponentIdentifi
}
return MetadataFetchingCost.CHEAP;
}
ModuleComponentGraphResolveState state = getProcessedMetadata(metadataProcessor.getRulesHash(), cachedMetadata);
ExternalModuleComponentGraphResolveState state = getProcessedMetadata(metadataProcessor.getRulesHash(), cachedMetadata);
if (state.getMetadata().isChanging()) {
if (cacheExpirationControl.changingModuleExpiry(moduleComponentIdentifier, cachedMetadata.getModuleVersion(), cachedMetadata.getAge()).isMustCheck()) {
return estimateCostViaRemoteAccess(moduleComponentIdentifier);
Expand Down Expand Up @@ -351,7 +351,7 @@ private static ModuleDescriptorHashModuleSource findCachingModuleSource(ModuleSo
.orElseThrow(() -> new RuntimeException("Cannot find expected module source " + ModuleDescriptorHashModuleSource.class.getSimpleName() + " in " + sources));
}

private class ResolveAndCacheRepositoryAccess implements ModuleComponentRepositoryAccess<ModuleComponentGraphResolveState> {
private class ResolveAndCacheRepositoryAccess implements ModuleComponentRepositoryAccess<ExternalModuleComponentGraphResolveState> {
@Override
public String toString() {
return "cache > " + delegate.getRemoteAccess();
Expand Down Expand Up @@ -383,11 +383,11 @@ public void listModuleVersions(ModuleComponentSelector selector, ComponentOverri
}

@Override
public void resolveComponentMetaData(ModuleComponentIdentifier moduleComponentIdentifier, ComponentOverrideMetadata requestMetaData, BuildableModuleComponentMetaDataResolveResult<ModuleComponentGraphResolveState> result) {
public void resolveComponentMetaData(ModuleComponentIdentifier moduleComponentIdentifier, ComponentOverrideMetadata requestMetaData, BuildableModuleComponentMetaDataResolveResult<ExternalModuleComponentGraphResolveState> result) {
resolveComponentMetaDataAndCache(moduleComponentIdentifier, requestMetaData, result);
}

private void resolveComponentMetaDataAndCache(ModuleComponentIdentifier moduleComponentIdentifier, ComponentOverrideMetadata requestMetaData, BuildableModuleComponentMetaDataResolveResult<ModuleComponentGraphResolveState> result) {
private void resolveComponentMetaDataAndCache(ModuleComponentIdentifier moduleComponentIdentifier, ComponentOverrideMetadata requestMetaData, BuildableModuleComponentMetaDataResolveResult<ExternalModuleComponentGraphResolveState> result) {
ComponentOverrideMetadata forced = requestMetaData.withChanging();
DefaultBuildableModuleComponentMetaDataResolveResult<ModuleComponentResolveMetadata> localResult = new DefaultBuildableModuleComponentMetaDataResolveResult<>();
delegate.getRemoteAccess().resolveComponentMetaData(moduleComponentIdentifier, forced, localResult);
Expand All @@ -412,7 +412,7 @@ private void resolveComponentMetaDataAndCache(ModuleComponentIdentifier moduleCo
CacheExpirationControl.Expiry expiry = cacheExpirationControl.changingModuleExpiry(moduleComponentIdentifier, cachedMetadata.getModuleVersion(), Duration.ZERO);
listener.onChangingModuleResolve(moduleComponentIdentifier, expiry);
}
ModuleComponentGraphResolveState state = resolveStateFactory.stateFor(processedMetadata);
ExternalModuleComponentGraphResolveState state = resolveStateFactory.stateFor(processedMetadata);
cachedMetadata.putProcessedMetadata(metadataProcessor.getRulesHash(), state);
localResult.applyTo(result);
result.resolved(state);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,33 +17,33 @@
package org.gradle.api.internal.artifacts.ivyservice.ivyresolve;

import org.gradle.api.artifacts.component.ModuleComponentIdentifier;
import org.gradle.internal.component.external.model.ModuleComponentGraphResolveState;
import org.gradle.internal.component.external.model.ExternalModuleComponentGraphResolveState;
import org.gradle.internal.component.model.ComponentOverrideMetadata;
import org.gradle.internal.resolve.RejectedByRuleVersion;
import org.gradle.internal.resolve.result.BuildableModuleComponentMetaDataResolveResult;
import org.gradle.internal.resolve.result.DefaultBuildableModuleComponentMetaDataResolveResult;
import org.gradle.internal.resolve.result.ResourceAwareResolveResult;

class ComponentMetaDataResolveState {
private final DefaultBuildableModuleComponentMetaDataResolveResult<ModuleComponentGraphResolveState> resolveResult;
private final DefaultBuildableModuleComponentMetaDataResolveResult<ExternalModuleComponentGraphResolveState> resolveResult;
private final VersionedComponentChooser versionedComponentChooser;
private final ComponentOverrideMetadata componentOverrideMetadata;
private final ModuleComponentIdentifier componentIdentifier;

final ModuleComponentRepository<ModuleComponentGraphResolveState> repository;
final ModuleComponentRepository<ExternalModuleComponentGraphResolveState> repository;

private boolean searchedLocally;
private boolean searchedRemotely;

public ComponentMetaDataResolveState(ModuleComponentIdentifier componentIdentifier, ComponentOverrideMetadata componentOverrideMetadata, ModuleComponentRepository<ModuleComponentGraphResolveState> repository, VersionedComponentChooser versionedComponentChooser) {
public ComponentMetaDataResolveState(ModuleComponentIdentifier componentIdentifier, ComponentOverrideMetadata componentOverrideMetadata, ModuleComponentRepository<ExternalModuleComponentGraphResolveState> repository, VersionedComponentChooser versionedComponentChooser) {
this.componentOverrideMetadata = componentOverrideMetadata;
this.componentIdentifier = componentIdentifier;
this.repository = repository;
this.versionedComponentChooser = versionedComponentChooser;
this.resolveResult = new DefaultBuildableModuleComponentMetaDataResolveResult<>();
}

BuildableModuleComponentMetaDataResolveResult<ModuleComponentGraphResolveState> resolve() {
BuildableModuleComponentMetaDataResolveResult<ExternalModuleComponentGraphResolveState> resolve() {
if (!searchedLocally) {
searchedLocally = true;
process(repository.getLocalAccess());
Expand All @@ -66,7 +66,7 @@ BuildableModuleComponentMetaDataResolveResult<ModuleComponentGraphResolveState>
throw new IllegalStateException();
}

protected void process(ModuleComponentRepositoryAccess<ModuleComponentGraphResolveState> moduleAccess) {
protected void process(ModuleComponentRepositoryAccess<ExternalModuleComponentGraphResolveState> moduleAccess) {
moduleAccess.resolveComponentMetaData(componentIdentifier, componentOverrideMetadata, resolveResult);
if (resolveResult.getState() == BuildableModuleComponentMetaDataResolveResult.State.Resolved) {
RejectedByRuleVersion rejectedComponent = versionedComponentChooser.isRejectedComponent(componentIdentifier, new CachedMetadataProvider(resolveResult));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
import org.gradle.api.internal.project.ProjectInternal;
import org.gradle.internal.action.InstantiatingAction;
import org.gradle.internal.component.external.model.ExternalComponentResolveMetadata;
import org.gradle.internal.component.external.model.ModuleComponentGraphResolveState;
import org.gradle.internal.component.external.model.ExternalModuleComponentGraphResolveState;
import org.gradle.internal.component.external.model.ivy.IvyModuleResolveMetadata;
import org.gradle.internal.logging.text.TreeFormatter;
import org.gradle.internal.reflect.Instantiator;
Expand All @@ -52,7 +52,7 @@
class DefaultMetadataProvider implements MetadataProvider {
private final static Transformer<ComponentMetadata, BuildableComponentMetadataSupplierDetails> TO_COMPONENT_METADATA = BuildableComponentMetadataSupplierDetails::getExecutionResult;
private final ModuleComponentResolveState resolveState;
private BuildableModuleComponentMetaDataResolveResult<ModuleComponentGraphResolveState> cachedResult;
private BuildableModuleComponentMetaDataResolveResult<ExternalModuleComponentGraphResolveState> cachedResult;
private ComponentMetadata cachedComponentMetadata;
private boolean computedMetadata;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
import org.gradle.api.internal.attributes.ImmutableAttributes;
import org.gradle.api.internal.attributes.immutable.ImmutableAttributesSchema;
import org.gradle.api.internal.attributes.matching.AttributeMatcher;
import org.gradle.internal.component.external.model.ModuleComponentGraphResolveMetadata;
import org.gradle.internal.component.external.model.ExternalModuleComponentGraphResolveMetadata;
import org.gradle.internal.component.model.ComponentGraphResolveMetadata;
import org.gradle.internal.resolve.RejectedByAttributesVersion;
import org.gradle.internal.resolve.RejectedByRuleVersion;
Expand Down Expand Up @@ -69,7 +69,7 @@ class DefaultVersionedComponentChooser implements VersionedComponentChooser {
}

@Override
public ComponentGraphResolveMetadata selectNewestComponent(@Nullable ModuleComponentGraphResolveMetadata one, @Nullable ModuleComponentGraphResolveMetadata two) {
public ComponentGraphResolveMetadata selectNewestComponent(@Nullable ExternalModuleComponentGraphResolveMetadata one, @Nullable ExternalModuleComponentGraphResolveMetadata two) {
if (one == null || two == null) {
return two == null ? one : two;
}
Expand All @@ -86,7 +86,7 @@ public ComponentGraphResolveMetadata selectNewestComponent(@Nullable ModuleCompo
return comparison < 0 ? two : one;
}

private boolean isMissingModuleDescriptor(ModuleComponentGraphResolveMetadata metadata) {
private boolean isMissingModuleDescriptor(ExternalModuleComponentGraphResolveMetadata metadata) {
return metadata.isMissing();
}

Expand Down
Loading

0 comments on commit 066c3a0

Please sign in to comment.