diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java | 5 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/ProguardMappingProvider.java | 39 |
2 files changed, 33 insertions, 11 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java index cd4833c4be..7af49f7d76 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java @@ -610,9 +610,8 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory { /* isLibrary = */ false); if (dexPostprocessingOutput.proguardMap() != null) { - builder.addProvider( - ProguardMappingProvider.class, - ProguardMappingProvider.create(dexPostprocessingOutput.proguardMap())); + builder.addNativeDeclaredProvider( + new ProguardMappingProvider(dexPostprocessingOutput.proguardMap())); } if (oneVersionEnforcementArtifact != null) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ProguardMappingProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/ProguardMappingProvider.java index f767c40aac..f5dc285095 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/ProguardMappingProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/ProguardMappingProvider.java @@ -13,21 +13,44 @@ // limitations under the License. package com.google.devtools.build.lib.rules.android; -import com.google.auto.value.AutoValue; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import com.google.devtools.build.lib.packages.BuiltinProvider; +import com.google.devtools.build.lib.packages.NativeInfo; +import com.google.devtools.build.lib.skylarkbuildapi.android.ProguardMappingProviderApi; +import com.google.devtools.build.lib.syntax.EvalException; /** A target that can provide a proguard obfuscation mapping to Android binaries or tests. */ -@AutoValue @Immutable -public abstract class ProguardMappingProvider implements TransitiveInfoProvider { +public final class ProguardMappingProvider extends NativeInfo + implements ProguardMappingProviderApi<Artifact> { - public static ProguardMappingProvider create(Artifact proguardMapping) { - return new AutoValue_ProguardMappingProvider(proguardMapping); + public static final String PROVIDER_NAME = "ProguardMappingInfo"; + public static final Provider PROVIDER = new Provider(); + + private final Artifact proguardMapping; + + public ProguardMappingProvider(Artifact proguardMapping) { + super(PROVIDER); + this.proguardMapping = proguardMapping; + } + + @Override + public Artifact getProguardMapping() { + return proguardMapping; } - public abstract Artifact getProguardMapping(); + /** The provider can construct the ProguardMappingProvider provider. */ + public static class Provider extends BuiltinProvider<ProguardMappingProvider> + implements ProguardMappingProviderApi.Provider<Artifact> { + + private Provider() { + super(PROVIDER_NAME, ProguardMappingProvider.class); + } - ProguardMappingProvider() {} + @Override + public ProguardMappingProvider createInfo(Artifact proguardMapping) throws EvalException { + return new ProguardMappingProvider(proguardMapping); + } + } } |