aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
diff options
context:
space:
mode:
authorGravatar tomlu <tomlu@google.com>2018-08-15 12:17:42 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-08-15 12:19:29 -0700
commitfe1dd88fee41e3e4b7cb345ebbac9ee2d9bcf77c (patch)
tree1569af41ae6ed8b67485655b197e9f47cb387ea8 /src/main/java/com/google/devtools/build/lib/actions/Artifact.java
parent3c82bfe03d578d521c957613239f49604d431946 (diff)
Support tree artifacts in target complete.
RELNOTES: None PiperOrigin-RevId: 208861642
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. */