aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android
diff options
context:
space:
mode:
authorGravatar Greg Estren <gregce@google.com>2016-12-01 21:38:25 +0000
committerGravatar Irina Iancu <elenairina@google.com>2016-12-02 07:44:08 +0000
commit7f534231c3fcf652f34d45ff2ee59b60220e3433 (patch)
tree6c82b2ad22dac0db8c4a83c6e8d020b739ebaf22 /src/main/java/com/google/devtools/build/lib/rules/android
parent9d837844c7651a8de6323f5efab41e86e096fea8 (diff)
Clean up RuleContext's attribute access API.
All calls now go through RuleContext.attributes(), which guarantees both native and aspect-supplied attributes are checked. For aspect attributes, only type queries are supported (e.g. "does this attribute exist?", "what is its type?"). Not value queries. This is because the code this is cleaning up accesses aspect attributes through a String->Attribute map, which doesn't include values. If ever needed we could further extend with something more robust. -- MOS_MIGRATED_REVID=140771242
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java8
4 files changed, 11 insertions, 7 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 e77b66a3ca..f43fa830e4 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
@@ -532,7 +532,7 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
NestedSet<Artifact> filesToBuild = filesBuilder.build();
Iterable<Artifact> dataDeps = ImmutableList.of();
- if (ruleContext.getAttribute("data") != null
+ if (ruleContext.attributes().has("data", BuildType.LABEL_LIST)
&& ruleContext.getAttributeMode("data") == Mode.DATA) {
dataDeps = ruleContext.getPrerequisiteArtifacts("data", Mode.DATA).list();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
index 31ac2bedb1..8dfe771c21 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
@@ -95,8 +95,9 @@ public class AndroidCommon {
public static final <T extends TransitiveInfoProvider> Iterable<T> getTransitivePrerequisites(
RuleContext ruleContext, Mode mode, final Class<T> classType) {
IterablesChain.Builder<T> builder = IterablesChain.builder();
+ AttributeMap attributes = ruleContext.attributes();
for (String attr : TRANSITIVE_ATTRIBUTES) {
- if (ruleContext.getAttribute(attr) != null) {
+ if (ruleContext.attributes().has(attr, BuildType.LABEL_LIST)) {
builder.add(ruleContext.getPrerequisites(attr, mode, classType));
}
}
@@ -107,7 +108,7 @@ public class AndroidCommon {
RuleContext ruleContext, Mode mode) {
ImmutableList.Builder<TransitiveInfoCollection> builder = ImmutableList.builder();
for (String attr : TRANSITIVE_ATTRIBUTES) {
- if (ruleContext.getAttribute(attr) != null) {
+ if (ruleContext.attributes().has(attr, BuildType.LABEL_LIST)) {
builder.addAll(ruleContext.getPrerequisites(attr, mode));
}
}
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 7290259437..4d13e039ff 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
@@ -24,6 +24,7 @@ import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction;
import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction.Substitution;
import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction.Template;
import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.rules.java.JavaPluginInfoProvider;
import com.google.devtools.build.lib.rules.java.JavaTargetAttributes;
import com.google.devtools.build.lib.syntax.Type;
@@ -204,7 +205,7 @@ public final class DataBinding {
if (DataBinding.isEnabled(ruleContext)) {
dataBindingMetadataOutputs.addAll(getMetadataOutputs(ruleContext));
}
- if (ruleContext.getAttribute("exports") != null) {
+ if (ruleContext.attributes().has("exports", BuildType.LABEL_LIST)) {
for (UsesDataBindingProvider provider : ruleContext.getPrerequisites("exports",
RuleConfiguredTarget.Mode.TARGET, UsesDataBindingProvider.class)) {
dataBindingMetadataOutputs.addAll(provider.getMetadataOutputs());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java
index 0c4b56fd37..269769a6b1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java
@@ -21,6 +21,7 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
+import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.rules.android.AndroidResourcesProvider.ResourceContainer;
@@ -98,11 +99,12 @@ public final class ResourceDependencies {
transitiveDependencies.build(), directDependencies.build());
}
- private static void extractFromAttributes(Iterable<String> attributes,
+ private static void extractFromAttributes(Iterable<String> attributeNames,
RuleContext ruleContext, NestedSetBuilder<ResourceContainer> builderForTransitive,
NestedSetBuilder<ResourceContainer> builderForDirect) {
- for (String attr : attributes) {
- if (ruleContext.getAttribute(attr) == null) {
+ AttributeMap attributes = ruleContext.attributes();
+ for (String attr : attributeNames) {
+ if (!attributes.has(attr, BuildType.LABEL_LIST) && !attributes.has(attr, BuildType.LABEL)) {
continue;
}
for (AndroidResourcesProvider resources :