aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/actions/Artifact.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/Artifact.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
index e48740b3a3..fb4f1edb37 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
@@ -55,6 +55,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
+import java.util.Map;
import java.util.Objects;
import javax.annotation.Nullable;
@@ -172,6 +173,35 @@ public class Artifact
}
}
+ /** Implementation of {@link ArtifactExpander} */
+ public static class ArtifactExpanderImpl implements ArtifactExpander {
+ private final Map<Artifact, Collection<Artifact>> expandedInputs;
+ private final Map<Artifact, ImmutableList<FilesetOutputSymlink>> expandedFilesets;
+
+ public ArtifactExpanderImpl(
+ Map<Artifact, Collection<Artifact>> expandedInputMiddlemen,
+ Map<Artifact, ImmutableList<FilesetOutputSymlink>> expandedFilesets) {
+ this.expandedInputs = expandedInputMiddlemen;
+ this.expandedFilesets = expandedFilesets;
+ }
+
+ @Override
+ public void expand(Artifact artifact, Collection<? super Artifact> output) {
+ Preconditions.checkState(
+ artifact.isMiddlemanArtifact() || artifact.isTreeArtifact(), artifact);
+ Collection<Artifact> result = expandedInputs.get(artifact);
+ if (result != null) {
+ output.addAll(result);
+ }
+ }
+
+ @Override
+ public ImmutableList<FilesetOutputSymlink> getFileset(Artifact artifact) {
+ Preconditions.checkState(artifact.isFileset());
+ return Preconditions.checkNotNull(expandedFilesets.get(artifact));
+ }
+ }
+
public static final ImmutableList<Artifact> NO_ARTIFACTS = ImmutableList.of();
/** A Predicate that evaluates to true if the Artifact is not a middleman artifact. */