aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java32
1 files changed, 30 insertions, 2 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 86cd131a49..9f295ba832 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
@@ -32,6 +32,7 @@ import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import java.util.function.Consumer;
/**
@@ -62,6 +63,8 @@ public final class DataBinding {
public static final String DATABINDING_ANNOTATION_PROCESSOR_ATTR =
"$databinding_annotation_processor";
+ public static final String ENABLE_DATA_BINDING_ATTR = "enable_data_binding";
+
/** Contains Android Databinding configuration and resource generation information. */
public interface DataBindingContext {
void supplyLayoutInfo(Consumer<Artifact> consumer);
@@ -79,6 +82,23 @@ public final class DataBinding {
public void supplyLayoutInfo(Consumer<Artifact> consumer) {
consumer.accept(getLayoutInfoFile(actionConstructionContext));
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ EnabledDataBindingContext that = (EnabledDataBindingContext) o;
+ return Objects.equals(actionConstructionContext, that.actionConstructionContext);
+ }
+
+ @Override
+ public int hashCode() {
+ return actionConstructionContext.hashCode();
+ }
}
private static final class DisabledDataBindingContext implements DataBindingContext {
@@ -97,6 +117,14 @@ public final class DataBinding {
return asDisabledDataBindingContext();
}
+ /** Supplies a databinding context from a rulecontext. */
+ public static DataBindingContext contextFrom(boolean enabled, ActionConstructionContext context) {
+ if (enabled) {
+ return asEnabledDataBindingContextFrom(context);
+ }
+ return asDisabledDataBindingContext();
+ }
+
/** Supplies an enabled DataBindingContext from the action context. */
public static DataBindingContext asEnabledDataBindingContextFrom(
ActionConstructionContext actionContext) {
@@ -129,8 +157,8 @@ public final class DataBinding {
* binding expressions appear in their layout resources.
*/
public static boolean isEnabled(RuleContext ruleContext) {
- return ruleContext.attributes().has("enable_data_binding", Type.BOOLEAN)
- && ruleContext.attributes().get("enable_data_binding", Type.BOOLEAN);
+ return ruleContext.attributes().has(ENABLE_DATA_BINDING_ATTR, Type.BOOLEAN)
+ && ruleContext.attributes().get(ENABLE_DATA_BINDING_ATTR, Type.BOOLEAN);
}
/** Returns this rule's data binding base output dir (as an execroot-relative path). */