Rename MiddlemanExpander to ArtifactExpander, and refactor it to yield ArtifactFiles.
--
MOS_MIGRATED_REVID=114166208
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java b/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java
index 723c9fb..8bceb9a 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java
@@ -19,6 +19,7 @@
import com.google.common.base.Functions;
import com.google.common.collect.Collections2;
import com.google.common.collect.Iterables;
+import com.google.devtools.build.lib.actions.Artifact.ArtifactExpander;
import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -34,11 +35,11 @@
}
@VisibleForTesting
- public static Artifact.MiddlemanExpander actionGraphMiddlemanExpander(
+ public static ArtifactExpander actionGraphArtifactExpander(
final ActionGraph actionGraph) {
- return new Artifact.MiddlemanExpander() {
+ return new ArtifactExpander() {
@Override
- public void expand(Artifact mm, Collection<? super Artifact> output) {
+ public void expand(Artifact mm, Collection<? super ArtifactFile> output) {
// Skyframe is stricter in that it checks that "mm" is a input of the action, because
// it cannot expand arbitrary middlemen without access to a global action graph.
// We could check this constraint here too, but it seems unnecessary. This code is
@@ -157,13 +158,27 @@
});
}
+ /** Returns an Collection of ArtifactFiles with the given parent and parent relative paths. */
+ public static Collection<ArtifactFile> asArtifactFiles(
+ final Artifact parent, Collection<? extends PathFragment> parentRelativePaths) {
+ Preconditions.checkState(parent.isTreeArtifact(),
+ "Given parent %s must be a TreeArtifact", parent);
+ return Collections2.transform(parentRelativePaths,
+ new Function<PathFragment, ArtifactFile>() {
+ @Override
+ public ArtifactFile apply(PathFragment pathFragment) {
+ return artifactFile(parent, pathFragment);
+ }
+ });
+ }
+
/**
* Expands middleman artifacts in a sequence of {@link ActionInput}s.
*
* <p>Non-middleman artifacts are returned untouched.
*/
- public static List<ActionInput> expandMiddlemen(Iterable<? extends ActionInput> inputs,
- Artifact.MiddlemanExpander middlemanExpander) {
+ public static List<ActionInput> expandArtifacts(Iterable<? extends ActionInput> inputs,
+ ArtifactExpander artifactExpander) {
List<ActionInput> result = new ArrayList<>();
List<Artifact> containedArtifacts = new ArrayList<>();
@@ -174,7 +189,7 @@
}
containedArtifacts.add((Artifact) input);
}
- Artifact.addExpandedArtifacts(containedArtifacts, result, middlemanExpander);
+ Artifact.addExpandedArtifacts(containedArtifacts, result, artifactExpander);
return result;
}