diff options
author | Ulf Adams <ulfjack@google.com> | 2016-04-19 12:55:12 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2016-04-19 13:52:07 +0000 |
commit | 10993fe27a62d5a4e683a206291c1bd44a492daf (patch) | |
tree | 7d0926a88d1f40524a6d597f0685c7b9cca3dbc2 /src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java | |
parent | c31f4c544cf26424375dbd579338ef9680b97012 (diff) |
Review a number of action subclasses and update them according to the spec.
Consists of adding @Immutable annotations, adding final modifiers, and changing
the types of fields to immutable types.
--
MOS_MIGRATED_REVID=120221067
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java | 50 |
1 files changed, 30 insertions, 20 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java b/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java index b61d6ac59b..3f2cd64703 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java +++ b/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java @@ -22,6 +22,7 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.google.devtools.build.lib.actions.ActionExecutionContext; +import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; @@ -37,6 +38,7 @@ import com.google.devtools.build.lib.cmdline.TargetPattern; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; +import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.packages.BuildType; import com.google.devtools.build.lib.packages.NoSuchPackageException; @@ -82,7 +84,6 @@ import java.io.OutputStream; import java.io.PrintStream; import java.nio.channels.ClosedByInterruptException; import java.util.Collection; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -150,25 +151,7 @@ public class GenQuery implements RuleConfiguredTargetFactory { } ruleContext.registerAction( - new AbstractFileWriteAction( - ruleContext.getActionOwner(), Collections.<Artifact>emptySet(), outputArtifact, false) { - @Override - public DeterministicWriter newDeterministicWriter(ActionExecutionContext ctx) { - return new DeterministicWriter() { - @Override - public void writeOutputFile(OutputStream out) throws IOException { - out.write(result); - } - }; - } - - @Override - protected String computeKey() { - Fingerprint f = new Fingerprint(); - f.addBytes(result); - return f.hexDigestAndReset(); - } - }); + new QueryResultAction(ruleContext.getActionOwner(), outputArtifact, result)); NestedSet<Artifact> filesToBuild = NestedSetBuilder.create(Order.STABLE_ORDER, outputArtifact); return new RuleConfiguredTargetBuilder(ruleContext) @@ -329,6 +312,33 @@ public class GenQuery implements RuleConfiguredTargetFactory { return outputStream.toByteArray(); } + @Immutable // assuming no other reference to result + private static final class QueryResultAction extends AbstractFileWriteAction { + private final byte[] result; + + private QueryResultAction(ActionOwner owner, Artifact output, byte[] result) { + super(owner, ImmutableList.<Artifact>of(), output, /*makeExecutable=*/false); + this.result = result; + } + + @Override + public DeterministicWriter newDeterministicWriter(ActionExecutionContext ctx) { + return new DeterministicWriter() { + @Override + public void writeOutputFile(OutputStream out) throws IOException { + out.write(result); + } + }; + } + + @Override + protected String computeKey() { + Fingerprint f = new Fingerprint(); + f.addBytes(result); + return f.hexDigestAndReset(); + } + } + /** * Provide target pattern evaluation to the query operations using Skyframe dep lookup. For thread * safety, we must synchronize access to the SkyFunction.Environment. |