aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2018-07-17 23:44:25 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-17 23:45:28 -0700
commitf09a7f5f70280d8fb3a85a4d292f31a876dfb8ac (patch)
tree451c8b5f954a243eed7a258cf350923f249bf407 /src/main/java/com/google/devtools/build/lib/rules
parent61a6bea12cf785f605c84af6c85844b0bb8c1775 (diff)
Expose the UsesDataBindingProvider to Skylark (as UsesDataBindingInfo).
RELNOTES: none. PiperOrigin-RevId: 205032841
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/DataBinding.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/UsesDataBindingProvider.java36
2 files changed, 31 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java b/src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java
index c589342614..4991600d1b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java
@@ -254,8 +254,7 @@ public final class DataBinding {
dataBindingMetadataOutputs.addAll(getTransitiveMetadata(ruleContext, "deps"));
}
if (!dataBindingMetadataOutputs.isEmpty()) {
- builder.addProvider(
- UsesDataBindingProvider.class, new UsesDataBindingProvider(dataBindingMetadataOutputs));
+ builder.addNativeDeclaredProvider(new UsesDataBindingProvider(dataBindingMetadataOutputs));
}
}
@@ -265,7 +264,7 @@ public final class DataBinding {
if (ruleContext.attributes().has(attr, BuildType.LABEL_LIST)) {
for (UsesDataBindingProvider provider :
ruleContext.getPrerequisites(
- attr, RuleConfiguredTarget.Mode.TARGET, UsesDataBindingProvider.class)) {
+ attr, RuleConfiguredTarget.Mode.TARGET, UsesDataBindingProvider.PROVIDER)) {
dataBindingMetadataOutputs.addAll(provider.getMetadataOutputs());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/UsesDataBindingProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/UsesDataBindingProvider.java
index 2f6ddd3c03..87cd49a26c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/UsesDataBindingProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/UsesDataBindingProvider.java
@@ -15,26 +15,48 @@ package com.google.devtools.build.lib.rules.android;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
+import com.google.devtools.build.lib.packages.BuiltinProvider;
+import com.google.devtools.build.lib.packages.NativeInfo;
+import com.google.devtools.build.lib.skylarkbuildapi.android.UsesDataBindingProviderApi;
+import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.SkylarkList;
import java.util.Collection;
/**
- * An Android rule that exposes this enables <a
+ * A provider that exposes this enables <a
* href="https://developer.android.com/topic/libraries/data-binding/index.html">data binding</a> on
* its resource processing and Java compilation.
*/
-public final class UsesDataBindingProvider implements TransitiveInfoProvider {
+public final class UsesDataBindingProvider extends NativeInfo
+ implements UsesDataBindingProviderApi<Artifact> {
+
+ public static final String PROVIDER_NAME = "UsesDataBindingInfo";
+ public static final Provider PROVIDER = new Provider();
+
private final ImmutableList<Artifact> metadataOutputs;
public UsesDataBindingProvider(Collection<Artifact> metadataOutputs) {
+ super(PROVIDER);
this.metadataOutputs = ImmutableList.copyOf(metadataOutputs);
}
- /**
- * Returns the metadata outputs from this rule's annotation processing that describe how it
- * applies data binding. See {@link DataBinding#getMetadataOutputs} for details.
- */
+ @Override
public ImmutableList<Artifact> getMetadataOutputs() {
return metadataOutputs;
}
+
+ /** The provider can construct the UsesDataBindingInfo provider. */
+ public static class Provider extends BuiltinProvider<UsesDataBindingProvider>
+ implements UsesDataBindingProviderApi.Provider<Artifact> {
+
+ private Provider() {
+ super(PROVIDER_NAME, UsesDataBindingProvider.class);
+ }
+
+ @Override
+ public UsesDataBindingProvider createInfo(SkylarkList<Artifact> metadataOutputs)
+ throws EvalException {
+ return new UsesDataBindingProvider(metadataOutputs.getImmutableList());
+ }
+ }
}