aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java
diff options
context:
space:
mode:
authorGravatar tomlu <tomlu@google.com>2017-08-13 17:15:37 +0200
committerGravatar Irina Iancu <elenairina@google.com>2017-08-14 14:16:14 +0200
commit695320a3cd925b99bf0a95df4452023c6cfa5005 (patch)
treee526aa44040cdaa1041c9306ac98d7577d0e30e2 /src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java
parent45d195e74ddc3326a660bfde5b55e2183071e86c (diff)
Lazily construct AndroidDeployInfo proto.
RELNOTES: None PiperOrigin-RevId: 165116857
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java34
1 files changed, 22 insertions, 12 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java
index ba4b09dcaf..91d6fcb21c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java
@@ -54,17 +54,28 @@ public final class AndroidDeployInfoAction extends AbstractFileWriteAction {
}
private static final String GUID = "eda283ba-9000-4b80-8dc4-7939101c44ba";
- private final ByteString byteString;
+
+ private final Artifact mergedManifest;
+ private final ImmutableList<Artifact> additionalMergedManifests;
+ private final ImmutableList<Artifact> apksToDeploy;
+ private final ImmutableList<Artifact> dataDeps;
AndroidDeployInfoAction(
ActionOwner owner,
Artifact outputFile,
Artifact mergedManifest,
- Iterable<Artifact> additionalMergedManifests,
- Iterable<Artifact> apksToDeploy,
- Iterable<Artifact> dataDeps) {
+ ImmutableList<Artifact> additionalMergedManifests,
+ ImmutableList<Artifact> apksToDeploy,
+ ImmutableList<Artifact> dataDeps) {
super(owner, makeInputs(mergedManifest, additionalMergedManifests, apksToDeploy, dataDeps),
outputFile, false);
+ this.mergedManifest = mergedManifest;
+ this.additionalMergedManifests = additionalMergedManifests;
+ this.apksToDeploy = apksToDeploy;
+ this.dataDeps = dataDeps;
+ }
+
+ private ByteString getByteString() {
AndroidDeployInfoOuterClass.AndroidDeployInfo.Builder builder =
AndroidDeployInfoOuterClass.AndroidDeployInfo.newBuilder();
builder.setMergedManifest(makeArtifactProto(mergedManifest));
@@ -77,16 +88,16 @@ public final class AndroidDeployInfoAction extends AbstractFileWriteAction {
for (Artifact dataDep : dataDeps) {
builder.addDataToDeploy(makeArtifactProto(dataDep));
}
- this.byteString = builder.build().toByteString();
+ return builder.build().toByteString();
}
static void createDeployInfoAction(
RuleContext ruleContext,
Artifact deployInfo,
Artifact mergedManifest,
- Iterable<Artifact> additionalMergedManifests,
- Iterable<Artifact> apksToDeploy,
- Iterable<Artifact> dataDeps) {
+ ImmutableList<Artifact> additionalMergedManifests,
+ ImmutableList<Artifact> apksToDeploy,
+ ImmutableList<Artifact> dataDeps) {
Action action = new AndroidDeployInfoAction(ruleContext.getActionOwner(),
deployInfo, mergedManifest, additionalMergedManifests, apksToDeploy, dataDeps);
ruleContext.registerAction(action);
@@ -94,12 +105,12 @@ public final class AndroidDeployInfoAction extends AbstractFileWriteAction {
@Override
public DeterministicWriter newDeterministicWriter(ActionExecutionContext ctx) throws IOException {
- return new ByteStringDeterministicWriter(byteString);
+ return new ByteStringDeterministicWriter(getByteString());
}
@VisibleForTesting
public AndroidDeployInfo getDeployInfo() throws InvalidProtocolBufferException {
- return AndroidDeployInfo.parseFrom(byteString);
+ return AndroidDeployInfo.parseFrom(getByteString());
}
@Override
@@ -107,7 +118,7 @@ public final class AndroidDeployInfoAction extends AbstractFileWriteAction {
Fingerprint f = new Fingerprint()
.addString(GUID);
- try (InputStream in = byteString.newInput()) {
+ try (InputStream in = getByteString().newInput()) {
byte[] buffer = new byte[512];
int amountRead;
while ((amountRead = in.read(buffer)) != -1) {
@@ -116,7 +127,6 @@ public final class AndroidDeployInfoAction extends AbstractFileWriteAction {
} catch (IOException e) {
throw new RuntimeException(e);
}
-
return f.hexDigestAndReset();
}