aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java63
1 files changed, 49 insertions, 14 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java b/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java
index e1b2d4c6c6..240dce0b11 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java
@@ -13,11 +13,15 @@
// limitations under the License.
package com.google.devtools.build.lib.rules.android;
+import com.android.annotations.VisibleForTesting;
+import com.google.common.base.MoreObjects;
import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.packages.RuleErrorConsumer;
import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
+import com.google.devtools.build.lib.rules.android.DataBinding.DataBindingContext;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;
@@ -29,25 +33,28 @@ public class ParsedAndroidResources extends AndroidResources
@Nullable private final Artifact compiledSymbols;
private final Label label;
private final StampedAndroidManifest manifest;
+ private final DataBindingContext dataBindingContext;
public static ParsedAndroidResources parseFrom(
AndroidDataContext dataContext,
AndroidResources resources,
StampedAndroidManifest manifest,
- boolean enableDataBinding,
- AndroidAaptVersion aaptVersion)
+ AndroidAaptVersion aaptVersion,
+ DataBindingContext dataBindingContext)
throws InterruptedException {
boolean isAapt2 = aaptVersion == AndroidAaptVersion.AAPT2;
AndroidResourceParsingActionBuilder builder = new AndroidResourceParsingActionBuilder();
- if (enableDataBinding && isAapt2) {
+ if (isAapt2) {
// TODO(corysmith): Centralize the data binding processing and zipping into a single
// action. Data binding processing needs to be triggered here as well as the merger to
// avoid aapt2 from throwing an error during compilation.
- builder.setDataBindingInfoZip(
- DataBinding.getSuffixedInfoFile(dataContext.getActionConstructionContext(), "_unused"));
+ dataBindingContext.supplyLayoutInfo(
+ layoutInfo ->
+ builder.setDataBindingInfoZip(
+ getDummyDataBindingArtifact(dataContext.getActionConstructionContext())));
}
return builder
@@ -56,7 +63,12 @@ public class ParsedAndroidResources extends AndroidResources
isAapt2
? dataContext.createOutputArtifact(AndroidRuleClasses.ANDROID_COMPILED_SYMBOLS)
: null)
- .build(dataContext, resources, manifest);
+ .build(dataContext, resources, manifest, dataBindingContext);
+ }
+
+ @VisibleForTesting
+ static Artifact getDummyDataBindingArtifact(ActionConstructionContext dataContext) {
+ return dataContext.getUniqueDirectoryArtifact("dummydatabinding", "unused.zip");
}
public static ParsedAndroidResources of(
@@ -64,12 +76,20 @@ public class ParsedAndroidResources extends AndroidResources
Artifact symbols,
@Nullable Artifact compiledSymbols,
Label label,
- StampedAndroidManifest manifest) {
- return new ParsedAndroidResources(resources, symbols, compiledSymbols, label, manifest);
+ StampedAndroidManifest manifest,
+ DataBindingContext dataBindingContext) {
+ return new ParsedAndroidResources(
+ resources, symbols, compiledSymbols, label, manifest, dataBindingContext);
}
ParsedAndroidResources(ParsedAndroidResources other, StampedAndroidManifest manifest) {
- this(other, other.symbols, other.compiledSymbols, other.label, manifest);
+ this(
+ other,
+ other.symbols,
+ other.compiledSymbols,
+ other.label,
+ manifest,
+ other.dataBindingContext);
}
protected ParsedAndroidResources(
@@ -77,12 +97,14 @@ public class ParsedAndroidResources extends AndroidResources
Artifact symbols,
@Nullable Artifact compiledSymbols,
Label label,
- StampedAndroidManifest manifest) {
+ StampedAndroidManifest manifest,
+ DataBindingContext dataBindingContext) {
super(resources);
this.symbols = symbols;
this.compiledSymbols = compiledSymbols;
this.label = label;
this.manifest = manifest;
+ this.dataBindingContext = dataBindingContext;
}
@Override
@@ -128,11 +150,9 @@ public class ParsedAndroidResources extends AndroidResources
MergedAndroidResources merge(
AndroidDataContext dataContext,
ResourceDependencies resourceDeps,
- boolean enableDataBinding,
AndroidAaptVersion aaptVersion)
throws InterruptedException {
- return MergedAndroidResources.mergeFrom(
- dataContext, this, resourceDeps, enableDataBinding, aaptVersion);
+ return MergedAndroidResources.mergeFrom(dataContext, this, resourceDeps, aaptVersion);
}
@Override
@@ -142,7 +162,8 @@ public class ParsedAndroidResources extends AndroidResources
return super.maybeFilter(errorConsumer, resourceFilter, isDependency)
.map(
resources ->
- ParsedAndroidResources.of(resources, symbols, compiledSymbols, label, manifest));
+ ParsedAndroidResources.of(
+ resources, symbols, compiledSymbols, label, manifest, dataBindingContext));
}
@Override
@@ -162,4 +183,18 @@ public class ParsedAndroidResources extends AndroidResources
public int hashCode() {
return Objects.hash(super.hashCode(), symbols, compiledSymbols, label, manifest);
}
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("symbols", symbols)
+ .add("compiledSymbols", compiledSymbols)
+ .add("label", label)
+ .add("manifest", manifest)
+ .toString();
+ }
+
+ public DataBindingContext asDataBindingContext() {
+ return dataBindingContext;
+ }
}