Skip to content

Commit

Permalink
Handle serialization for shadowed capabilities in the GMM case (#11179)
Browse files Browse the repository at this point in the history
This is now done in the same way as it is done in the
AbstractRealisedModuleResolveMetadataSerializationHelper
for cases without GMM

Follow up to: #11118
  • Loading branch information
jjohannes committed Oct 30, 2019
1 parent 80fd859 commit 9907107
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public enum CacheLayout {
.changedTo(69, "5.0-rc-1")
.changedTo(71, "5.3-rc-1")
.changedTo(79, "6.0-rc-1")
.changedTo(81, "6.0-rc-2")
.changedTo(82, "6.0-rc-2")
),

RESOURCES(ROOT, "resources", introducedIn("1.9-rc-1")),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,16 @@
import org.gradle.internal.component.external.descriptor.Configuration;
import org.gradle.internal.component.external.descriptor.DefaultExclude;
import org.gradle.internal.component.external.descriptor.MavenScope;
import org.gradle.internal.component.external.model.CapabilityInternal;
import org.gradle.internal.component.external.model.ComponentVariant;
import org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier;
import org.gradle.internal.component.external.model.DefaultShadowedCapability;
import org.gradle.internal.component.external.model.ExternalDependencyDescriptor;
import org.gradle.internal.component.external.model.ImmutableCapability;
import org.gradle.internal.component.external.model.ModuleComponentResolveMetadata;
import org.gradle.internal.component.external.model.MutableComponentVariant;
import org.gradle.internal.component.external.model.MutableModuleComponentResolveMetadata;
import org.gradle.internal.component.external.model.ShadowedCapability;
import org.gradle.internal.component.external.model.ivy.IvyDependencyDescriptor;
import org.gradle.internal.component.external.model.ivy.IvyModuleResolveMetadata;
import org.gradle.internal.component.external.model.ivy.MutableIvyModuleResolveMetadata;
Expand Down Expand Up @@ -178,7 +182,15 @@ private void writeVariantFiles(List<? extends ComponentVariant.File> files) thro

private void writeVariantCapabilities(List<? extends Capability> capabilities) throws IOException {
encoder.writeSmallInt(capabilities.size());
for (Capability capability : capabilities) {
for (Capability capability: capabilities) {
boolean shadowed = capability instanceof ShadowedCapability;
if (shadowed) {
ShadowedCapability shadowedCapability = (ShadowedCapability) capability;
encoder.writeNullableString(shadowedCapability.getAppendix());
capability = shadowedCapability.getShadowedCapability();
} else {
encoder.writeNullableString(null);
}
encoder.writeString(capability.getGroup());
encoder.writeString(capability.getName());
encoder.writeString(capability.getVersion());
Expand Down Expand Up @@ -494,9 +506,14 @@ private void readVariantFiles(MutableComponentVariant variant) throws IOExceptio
}

private void readVariantCapabilities(MutableComponentVariant variant) throws IOException {
int count = decoder.readSmallInt();
for (int i = 0; i < count; i++) {
variant.addCapability(decoder.readString(), decoder.readString(), decoder.readString());
int capabilitiesCount = decoder.readSmallInt();
for (int j = 0; j < capabilitiesCount; j++) {
String appendix = decoder.readNullableString();
CapabilityInternal capability = new ImmutableCapability(decoder.readString(), decoder.readString(), decoder.readString());
if (appendix != null) {
capability = new DefaultShadowedCapability(capability, appendix);
}
variant.addCapability(capability);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,11 @@ public void addCapability(String group, String name, String version) {
capabilities.add(new ImmutableCapability(group, name, version));
}

@Override
public void addCapability(Capability capability) {
capabilities.add(capability);
}

@Override
public List<? extends ComponentVariant.File> getFiles() {
return files;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ public interface MutableComponentVariant {

void addCapability(String group, String name, String version);

void addCapability(Capability capability);

ImmutableAttributes getAttributes();

void setAttributes(ImmutableAttributes updatedAttributes);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class CacheLayoutTest extends Specification {
cacheLayout.versionMapping.getVersionUsedBy(GradleVersion.version("1.9-rc-2")).get() == CacheVersion.of(2, 1)

where:
expectedVersion = 81
expectedVersion = 82
}

def "use transforms layout"() {
Expand Down

0 comments on commit 9907107

Please sign in to comment.