aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules
diff options
context:
space:
mode:
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.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ProguardMappingProvider.java39
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);
+ }
+ }
}