aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Philipp Wollermann <philwo@google.com>2016-02-26 21:55:31 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-02-28 17:04:30 +0000
commit1ecdc51abf8a52d7e312be6cdad16c7ead68e75a (patch)
treed7d9cfe39939e78785263be2c1001ea237c4b754 /src/main/java/com/google/devtools
parent64e7a3f3c2de2cd32433fc85f9db754bd473210a (diff)
Let ActionContextConsumer#getActionContexts() return a Multimap instead of a Map.
This makes it possible to request multiple implementations of the same ActionContext to be available via Executor#getContext(). Currently, specialized SpawnActionContexts like the sandbox or the worker strategy that might have to do a fallback each instantiate their own private copy of e.g. the StandaloneSpawnStrategy. With this change, they can instead get a global instance from the Executor. -- MOS_MIGRATED_REVID=115705811
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ActionContextConsumer.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/BlazeExecutor.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextConsumer.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/worker/WorkerActionContextConsumer.java8
6 files changed, 22 insertions, 12 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionContextConsumer.java b/src/main/java/com/google/devtools/build/lib/actions/ActionContextConsumer.java
index 48bd35a9b3..2308721e95 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionContextConsumer.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionContextConsumer.java
@@ -13,6 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.actions;
+import com.google.common.collect.Multimap;
import com.google.devtools.build.lib.actions.Executor.ActionContext;
import java.util.Map;
@@ -59,5 +60,5 @@ public interface ActionContextConsumer {
*
* <p>If the implementation name is the empty string, the choice is left to Blaze.
*/
- Map<Class<? extends ActionContext>, String> getActionContexts();
+ Multimap<Class<? extends ActionContext>, String> getActionContexts();
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/BlazeExecutor.java b/src/main/java/com/google/devtools/build/lib/actions/BlazeExecutor.java
index 5cca649974..88dc9a3f2d 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/BlazeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/BlazeExecutor.java
@@ -107,6 +107,7 @@ public final class BlazeExecutor implements Executor {
if (annotation != null) {
contextMap.put(annotation.contextType(), context);
}
+ contextMap.put(context.getClass(), context);
}
for (ActionContextProvider factory : contextProviders) {
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java
index d4f1570bca..4327e676b6 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java
@@ -17,6 +17,8 @@ package com.google.devtools.build.lib.bazel.rules;
import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableMultimap;
+import com.google.common.collect.Multimap;
import com.google.common.eventbus.Subscribe;
import com.google.devtools.build.lib.actions.ActionContextConsumer;
import com.google.devtools.build.lib.actions.ActionContextProvider;
@@ -115,8 +117,8 @@ public class BazelRulesModule extends BlazeModule {
}
@Override
- public Map<Class<? extends ActionContext>, String> getActionContexts() {
- return ImmutableMap.<Class<? extends ActionContext>, String>builder()
+ public Multimap<Class<? extends ActionContext>, String> getActionContexts() {
+ return ImmutableMultimap.<Class<? extends ActionContext>, String>builder()
.put(CppCompileActionContext.class, "")
.put(CppLinkActionContext.class, "")
.put(IncludeScanningContext.class, "")
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
index 3f9de4f8ce..5e1cae3e77 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
@@ -19,8 +19,10 @@ import com.google.common.base.Stopwatch;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Multimap;
import com.google.common.collect.Ordering;
import com.google.common.collect.Table;
import com.google.devtools.build.lib.Constants;
@@ -205,8 +207,8 @@ public class ExecutionTool {
}
@Override
- public Map<Class<? extends ActionContext>, String> getActionContexts() {
- return ImmutableMap.<Class<? extends ActionContext>, String>builder()
+ public Multimap<Class<? extends ActionContext>, String> getActionContexts() {
+ return ImmutableMultimap.<Class<? extends ActionContext>, String>builder()
.put(FilesetActionContext.class, "")
.put(WorkspaceStatusAction.Context.class, "")
.put(SymlinkTreeActionContext.class, "")
@@ -232,7 +234,7 @@ public class ExecutionTool {
}
for (Map.Entry<Class<? extends ActionContext>, String> entry :
- consumer.getActionContexts().entrySet()) {
+ consumer.getActionContexts().entries()) {
ActionContext context = strategyConverter.getStrategy(entry.getKey(), entry.getValue());
if (context == null) {
throw makeExceptionForInvalidStrategyValue(
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextConsumer.java b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextConsumer.java
index 9c37c79fcc..4041fd9a4c 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextConsumer.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextConsumer.java
@@ -14,7 +14,9 @@
package com.google.devtools.build.lib.sandbox;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMap.Builder;
+import com.google.common.collect.ImmutableMultimap;
+import com.google.common.collect.ImmutableMultimap.Builder;
+import com.google.common.collect.Multimap;
import com.google.devtools.build.lib.actions.ActionContextConsumer;
import com.google.devtools.build.lib.actions.Executor.ActionContext;
import com.google.devtools.build.lib.actions.SpawnActionContext;
@@ -34,8 +36,8 @@ public class SandboxActionContextConsumer implements ActionContextConsumer {
}
@Override
- public Map<Class<? extends ActionContext>, String> getActionContexts() {
- Builder<Class<? extends ActionContext>, String> contexts = ImmutableMap.builder();
+ public Multimap<Class<? extends ActionContext>, String> getActionContexts() {
+ Builder<Class<? extends ActionContext>, String> contexts = ImmutableMultimap.builder();
if (OS.getCurrent() == OS.LINUX) {
contexts.put(SpawnActionContext.class, "sandboxed");
diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerActionContextConsumer.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerActionContextConsumer.java
index b0f7084483..fc21beb4ef 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/WorkerActionContextConsumer.java
+++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerActionContextConsumer.java
@@ -14,7 +14,9 @@
package com.google.devtools.build.lib.worker;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMap.Builder;
+import com.google.common.collect.ImmutableMultimap;
+import com.google.common.collect.ImmutableMultimap.Builder;
+import com.google.common.collect.Multimap;
import com.google.devtools.build.lib.actions.ActionContextConsumer;
import com.google.devtools.build.lib.actions.Executor.ActionContext;
import com.google.devtools.build.lib.actions.SpawnActionContext;
@@ -33,8 +35,8 @@ public class WorkerActionContextConsumer implements ActionContextConsumer {
}
@Override
- public Map<Class<? extends ActionContext>, String> getActionContexts() {
- Builder<Class<? extends ActionContext>, String> contexts = ImmutableMap.builder();
+ public Multimap<Class<? extends ActionContext>, String> getActionContexts() {
+ Builder<Class<? extends ActionContext>, String> contexts = ImmutableMultimap.builder();
contexts.put(SpawnActionContext.class, "worker");
return contexts.build();
}