aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar asteinb <asteinb@google.com>2018-05-29 08:52:56 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-29 08:54:21 -0700
commit072cf92c7d83b89362584bfbbefae76a37c1dcef (patch)
tree502931ffcdb50ea57abdd324b4f44a50e81b2da4 /src/main/java
parentf90ed652e223fffdf3f64cf1d9f49663be540b18 (diff)
Properly expose asset provider for targets without explicit manifest
RELNOTES: none PiperOrigin-RevId: 198402335
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ResourceApk.java37
2 files changed, 16 insertions, 30 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
index b4b5ff51ca..3d2bc56f2c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
@@ -1195,7 +1195,7 @@ public abstract class AndroidSkylarkData {
resourceApk.getArtifact(),
resourceApk.getResourceProguardConfig(),
resourceApk.toResourceInfo(ctx.getLabel()),
- resourceApk.toAssetsInfo(ctx.getLabel()).get(),
+ resourceApk.toAssetsInfo(ctx.getLabel()),
resourceApk.toManifestInfo().get());
} catch (RuleErrorException e) {
@@ -1313,11 +1313,10 @@ public abstract class AndroidSkylarkData {
ResourceApk resourceApk, Label label) {
ImmutableMap.Builder<Provider, NativeInfo> builder = ImmutableMap.builder();
- builder.put(AndroidResourcesInfo.PROVIDER, resourceApk.toResourceInfo(label));
+ builder
+ .put(AndroidResourcesInfo.PROVIDER, resourceApk.toResourceInfo(label))
+ .put(AndroidAssetsInfo.PROVIDER, resourceApk.toAssetsInfo(label));
- resourceApk
- .toAssetsInfo(label)
- .ifPresent(info -> builder.put(AndroidAssetsInfo.PROVIDER, info));
resourceApk.toManifestInfo().ifPresent(info -> builder.put(AndroidManifestInfo.PROVIDER, info));
builder.put(JavaInfo.PROVIDER, getJavaInfoForRClassJar(resourceApk.getResourceJavaClassJar()));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceApk.java b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceApk.java
index 99d545d097..bda6e3108e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceApk.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceApk.java
@@ -227,18 +227,12 @@ public final class ResourceApk {
return resourceDeps.toInfo(validatedResources);
}
- // TODO(b/77574966): Stop returning an Optional once we get rid of ResourceContainer and can
- // guarantee that only properly merged assets are passed into this object.
- Optional<AndroidAssetsInfo> toAssetsInfo(Label label) {
+ AndroidAssetsInfo toAssetsInfo(Label label) {
if (primaryAssets instanceof MergedAndroidAssets) {
MergedAndroidAssets merged = (MergedAndroidAssets) primaryAssets;
- AndroidAssetsInfo assetsInfo = merged.toProvider();
- return Optional.of(assetsInfo);
- } else if (primaryAssets == null) {
- return Optional.of(assetDeps.toInfo(label));
- } else {
- return Optional.empty();
+ return merged.toProvider();
}
+ return assetDeps.toInfo(label);
}
// TODO(b/77574966): Remove this cast once we get rid of ResourceContainer and can guarantee
@@ -264,26 +258,19 @@ public final class ResourceApk {
Optional<AndroidManifestInfo> manifestInfo = toManifestInfo();
manifestInfo.ifPresent(builder::addNativeDeclaredProvider);
- Optional<AndroidAssetsInfo> assetsInfo = toAssetsInfo(label);
- if (assetsInfo.isPresent()) {
- builder.addNativeDeclaredProvider(assetsInfo.get());
- if (assetsInfo.get().getValidationResult() != null) {
- // Asset merging output isn't consumed by anything. Require it to be run by top-level
- // targets
- // so we can validate there are no asset merging conflicts.
- builder.addOutputGroup(
- OutputGroupInfo.HIDDEN_TOP_LEVEL, assetsInfo.get().getValidationResult());
+ AndroidAssetsInfo assetsInfo = toAssetsInfo(label);
+ builder.addNativeDeclaredProvider(assetsInfo);
+ if (assetsInfo.getValidationResult() != null) {
+ // Asset merging output isn't consumed by anything. Require it to be run by top-level
+ // targets
+ // so we can validate there are no asset merging conflicts.
+ builder.addOutputGroup(OutputGroupInfo.HIDDEN_TOP_LEVEL, assetsInfo.getValidationResult());
}
- }
- if (manifestInfo.isPresent() && assetsInfo.isPresent() && !isLibrary) {
+ if (manifestInfo.isPresent() && !isLibrary) {
builder.addNativeDeclaredProvider(
AndroidBinaryDataInfo.of(
- resourceApk,
- resourceProguardConfig,
- resourceInfo,
- assetsInfo.get(),
- manifestInfo.get()));
+ resourceApk, resourceProguardConfig, resourceInfo, assetsInfo, manifestInfo.get()));
}
if (includeSkylarkApiProvider) {