diff options
author | tomlu <tomlu@google.com> | 2017-08-13 17:15:37 +0200 |
---|---|---|
committer | Irina Iancu <elenairina@google.com> | 2017-08-14 14:16:14 +0200 |
commit | 695320a3cd925b99bf0a95df4452023c6cfa5005 (patch) | |
tree | e526aa44040cdaa1041c9306ac98d7577d0e30e2 /src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java | |
parent | 45d195e74ddc3326a660bfde5b55e2183071e86c (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.java | 34 |
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(); } |