aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Ulf Adams <ulfjack@google.com>2016-04-19 11:32:24 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-04-19 13:51:07 +0000
commit83fce40e69ef35c90e69a57387b1f95b387ad453 (patch)
tree6a0acfb404629d0d8423217b89ca7b38ea9da2bb
parent0dbe07f017d391aba0613b4e6ca1503b62382ccd (diff)
Review a number of action subclasses and update them according to the spec.
Second pass. Consists of adding @Immutable annotations, adding final modifiers, and changing the types of fields to immutable types. -- MOS_MIGRATED_REVID=120216592
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/FailAction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/SymlinkTreeAction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/CreateIncSymlinkAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/FdoStubAction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java9
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java4
12 files changed, 32 insertions, 22 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/FailAction.java b/src/main/java/com/google/devtools/build/lib/actions/FailAction.java
index da6f599d37..15d01bd7cd 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/FailAction.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/FailAction.java
@@ -15,13 +15,13 @@
package com.google.devtools.build.lib.actions;
import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
+import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
/**
* FailAction is an Action that always fails to execute. (Used as scaffolding
* for rules we haven't yet implemented. Also useful for testing.)
*/
-@ThreadSafe
+@Immutable
public final class FailAction extends AbstractAction {
private static final String GUID = "626cb78a-810f-4af3-979c-ee194955f04c";
diff --git a/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java b/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java
index 8c25e4d223..a8a91f6803 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java
@@ -15,6 +15,7 @@ package com.google.devtools.build.lib.actions;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.util.Preconditions;
/**
@@ -22,7 +23,8 @@ import com.google.devtools.build.lib.util.Preconditions;
* runs. This is useful for bundling up a bunch of dependencies that are shared
* between individual targets in the action graph; for example generated header files.
*/
-public class MiddlemanAction extends AbstractAction {
+@Immutable
+public final class MiddlemanAction extends AbstractAction {
public static final String MIDDLEMAN_MNEMONIC = "Middleman";
private final String description;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java b/src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java
index c482f2e615..e0eb712597 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java
@@ -35,7 +35,6 @@ import java.util.UUID;
* about rules to extra_actions.
*/
public class PseudoAction<InfoType extends MessageLite> extends AbstractAction {
-
private final UUID uuid;
private final String mnemonic;
private final GeneratedExtension<ExtraActionInfo, InfoType> infoExtension;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/SymlinkTreeAction.java b/src/main/java/com/google/devtools/build/lib/analysis/SymlinkTreeAction.java
index 0e98408a15..5ebe26f0eb 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/SymlinkTreeAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/SymlinkTreeAction.java
@@ -22,6 +22,7 @@ import com.google.devtools.build.lib.actions.ActionOwner;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Executor;
import com.google.devtools.build.lib.actions.ResourceSet;
+import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -32,7 +33,8 @@ import javax.annotation.Nullable;
* Action responsible for the symlink tree creation.
* Used to generate runfiles and fileset symlink farms.
*/
-public class SymlinkTreeAction extends AbstractAction {
+@Immutable
+public final class SymlinkTreeAction extends AbstractAction {
private static final String GUID = "63412bda-4026-4c8e-a3ad-7deb397728d4";
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/CreateIncSymlinkAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/CreateIncSymlinkAction.java
index f374dfff9d..06d353dfc1 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/CreateIncSymlinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/CreateIncSymlinkAction.java
@@ -25,6 +25,7 @@ import com.google.devtools.build.lib.actions.ActionOwner;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Executor;
import com.google.devtools.build.lib.actions.ResourceSet;
+import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.vfs.Path;
@@ -35,9 +36,9 @@ import java.util.SortedMap;
/**
* This action creates a set of symbolic links.
*/
+@Immutable
public final class CreateIncSymlinkAction extends AbstractAction {
-
- private final SortedMap<Artifact, Artifact> symlinks;
+ private final ImmutableSortedMap<Artifact, Artifact> symlinks;
/**
* Creates a new instance. The symlinks map maps symlinks to their targets, i.e. the symlink paths
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java
index 82a3a16f69..0a3d428bb8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java
@@ -23,6 +23,7 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ExecException;
import com.google.devtools.build.lib.actions.Executor;
import com.google.devtools.build.lib.actions.ResourceSet;
+import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import java.io.IOException;
@@ -38,6 +39,7 @@ import java.io.IOException;
* library depends on it, and only references one of the headers, the other
* grep-includes will have been wasted.
*/
+@Immutable
final class ExtractInclusionAction extends AbstractAction {
private static final String GUID = "45b43e5a-4734-43bb-a05e-012313808142";
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoStubAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoStubAction.java
index bee74f7092..6897aab084 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoStubAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoStubAction.java
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.actions.ActionOwner;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Executor;
import com.google.devtools.build.lib.actions.ResourceSet;
+import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.vfs.Path;
/**
@@ -30,7 +31,8 @@ import com.google.devtools.build.lib.vfs.Path;
* would complain that these files have no generating action if we did not set it to an instance of
* this class.
*/
-public class FdoStubAction extends AbstractAction {
+@Immutable
+public final class FdoStubAction extends AbstractAction {
public FdoStubAction(ActionOwner owner, Artifact output) {
// TODO(bazel-team): Make extracting the zip file a honest-to-God action so that we can do away
// with this ugliness.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java
index c5f766b427..e3250cabc2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.actions.ResourceSet;
import com.google.devtools.build.lib.actions.Root;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink;
import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.util.Preconditions;
@@ -44,8 +45,8 @@ import java.io.IOException;
* Such symlinks are used by the linker to ensure that all rpath entries can be
* specified relative to the $ORIGIN.
*/
+@Immutable
public final class SolibSymlinkAction extends AbstractAction {
-
private final Artifact library;
private final Path target;
private final Artifact symlink;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
index 65a300ce66..8d5324ff79 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
@@ -52,6 +52,7 @@ import com.google.devtools.build.lib.collect.ImmutableIterable;
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.concurrent.ThreadSafety.ThreadCompatible;
import com.google.devtools.build.lib.rules.java.JavaConfiguration.JavaClasspathMode;
import com.google.devtools.build.lib.util.Fingerprint;
@@ -71,8 +72,8 @@ import java.util.Map;
/**
* Action that represents a Java compilation.
*/
-@ThreadCompatible
-public class JavaCompileAction extends AbstractAction {
+@ThreadCompatible @Immutable
+public final class JavaCompileAction extends AbstractAction {
private static final String GUID = "786e174d-ed97-4e79-9f61-ae74430714cf";
private static final ResourceSet LOCAL_RESOURCES =
@@ -100,7 +101,7 @@ public class JavaCompileAction extends AbstractAction {
/**
* The path to the extdir to specify to javac.
*/
- private final Collection<Artifact> extdirInputs;
+ private final ImmutableList<Artifact> extdirInputs;
/**
* The list of classpath entries to search for annotation processors.
@@ -181,7 +182,7 @@ public class JavaCompileAction extends AbstractAction {
Artifact outputJar,
NestedSet<Artifact> classpathEntries,
ImmutableList<Artifact> bootclasspathEntries,
- Collection<Artifact> extdirInputs,
+ ImmutableList<Artifact> extdirInputs,
List<Artifact> processorPath,
List<String> processorNames,
Collection<Artifact> messages,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
index d974deb37e..7661970157 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
@@ -71,6 +71,7 @@ import com.google.devtools.build.lib.analysis.actions.SpawnAction;
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.packages.BuildType;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.TargetUtils;
@@ -1069,8 +1070,8 @@ public final class CompilationSupport {
* <p>Required as a hack to the link command line because that may contain two commands, which are
* then passed to {@code /bin/bash -c}, and accordingly need to be a single argument.
*/
- private static class SingleArgCommandLine extends CommandLine {
-
+ @Immutable // if original is immutable
+ private static final class SingleArgCommandLine extends CommandLine {
private final CommandLine original;
private SingleArgCommandLine(CommandLine original) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java
index 2b01aec41a..c375701f14 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java
@@ -40,6 +40,7 @@ import com.google.devtools.build.lib.cmdline.PackageIdentifier;
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.packages.BuildType;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.rules.cpp.CppFileTypes;
@@ -560,7 +561,8 @@ public final class PyCommon {
}
// Used purely to set the legacy ActionType of the ExtraActionInfo.
- private static class PyPseudoAction extends PseudoAction<PythonInfo> {
+ @Immutable
+ private static final class PyPseudoAction extends PseudoAction<PythonInfo> {
private static final UUID ACTION_UUID = UUID.fromString("8d720129-bc1a-481f-8c4c-dbe11dcef319");
public PyPseudoAction(ActionOwner owner,
@@ -569,10 +571,5 @@ public final class PyCommon {
PythonInfo info) {
super(ACTION_UUID, owner, inputs, outputs, mnemonic, infoExtension, info);
}
-
- @Override
- public ExtraActionInfo.Builder getExtraActionInfo() {
- return super.getExtraActionInfo();
- }
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java
index 3d4e0b2ad4..bdc79f892f 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java
@@ -44,6 +44,7 @@ import com.google.devtools.build.lib.analysis.WorkspaceStatusAction.Key;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory.BuildInfoKey;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection;
+import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -185,7 +186,8 @@ public final class AnalysisTestUtil {
}
}
- public static class DummyWorkspaceStatusAction extends WorkspaceStatusAction {
+ @Immutable
+ public static final class DummyWorkspaceStatusAction extends WorkspaceStatusAction {
private final String key;
private final Artifact stableStatus;
private final Artifact volatileStatus;