diff options
author | Michael Thvedt <mthvedt@google.com> | 2016-02-09 00:57:46 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-02-09 12:20:47 +0000 |
commit | 434e68ebae77b4fd89c05ac676f20406e1c5b368 (patch) | |
tree | 3510106cecabdbc77a30adbbb973b13ca742231f /src/main/java/com/google/devtools/build/lib/actions/Artifact.java | |
parent | e3b1cb765a04c858a87ca7c7b0ecfa63d55be269 (diff) |
Rename MiddlemanExpander to ArtifactExpander, and refactor it to yield ArtifactFiles.
--
MOS_MIGRATED_REVID=114166208
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.java | 59 |
1 files changed, 31 insertions, 28 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 23e2a4cb46..2a700023ce 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 @@ -76,7 +76,7 @@ import javax.annotation.Nullable; * This is a legacy facility and should not be used by any new rule implementations. * In particular, the file system cache integrity checks fail for directories. * <li>An 'aggregating middleman' special Artifact, which may be expanded using a - * {@link MiddlemanExpander} at Action execution time. This is used by a handful of rules to save + * {@link ArtifactExpander} at Action execution time. This is used by a handful of rules to save * memory. * <li>A 'constant metadata' special Artifact. These represent real files, changes to which are * ignored by the build system. They are useful for files which change frequently but do not affect @@ -116,14 +116,15 @@ public class Artifact implements FileType.HasFilename, ArtifactFile, SkylarkValu }; /** An object that can expand middleman artifacts. */ - public interface MiddlemanExpander { + public interface ArtifactExpander { /** - * Expands the middleman artifact "mm", and populates "output" with the result. + * Expands the given artifact, and populates "output" with the result. * - * <p>{@code mm.isMiddlemanArtifact()} must be true. Only aggregating middlemen are expanded. + * <p>{@code artifact.isMiddlemanArtifact() || artifact.isTreeArtifact()} must be true. + * Only aggregating middlemen and tree artifacts are expanded. */ - void expand(Artifact mm, Collection<? super Artifact> output); + void expand(Artifact artifact, Collection<? super ArtifactFile> output); } public static final ImmutableList<Artifact> NO_ARTIFACTS = ImmutableList.of(); @@ -639,8 +640,8 @@ public class Artifact implements FileType.HasFilename, ArtifactFile, SkylarkValu * {@link MiddlemanType#AGGREGATING_MIDDLEMAN} middleman actions expanded once. */ public static void addExpandedArtifacts(Iterable<Artifact> artifacts, - Collection<? super Artifact> output, MiddlemanExpander middlemanExpander) { - addExpandedArtifacts(artifacts, output, Functions.<Artifact>identity(), middlemanExpander); + Collection<? super ArtifactFile> output, ArtifactExpander artifactExpander) { + addExpandedArtifacts(artifacts, output, Functions.<ArtifactFile>identity(), artifactExpander); } /** @@ -652,9 +653,9 @@ public class Artifact implements FileType.HasFilename, ArtifactFile, SkylarkValu @VisibleForTesting public static void addExpandedExecPathStrings(Iterable<Artifact> artifacts, Collection<String> output, - MiddlemanExpander middlemanExpander) { + ArtifactExpander artifactExpander) { addExpandedArtifacts(artifacts, output, ActionInputHelper.EXEC_PATH_STRING_FORMATTER, - middlemanExpander); + artifactExpander); } /** @@ -664,8 +665,8 @@ public class Artifact implements FileType.HasFilename, ArtifactFile, SkylarkValu * once. */ public static void addExpandedExecPaths(Iterable<Artifact> artifacts, - Collection<PathFragment> output, MiddlemanExpander middlemanExpander) { - addExpandedArtifacts(artifacts, output, EXEC_PATH_FORMATTER, middlemanExpander); + Collection<PathFragment> output, ArtifactExpander artifactExpander) { + addExpandedArtifacts(artifacts, output, EXEC_PATH_FORMATTER, artifactExpander); } /** @@ -673,27 +674,29 @@ public class Artifact implements FileType.HasFilename, ArtifactFile, SkylarkValu * outputFormatter and adds them to a given collection. Middleman artifacts * are expanded once. */ - private static <E> void addExpandedArtifacts(Iterable<Artifact> artifacts, + private static <E> void addExpandedArtifacts(Iterable<? extends Artifact> artifacts, Collection<? super E> output, - Function<? super Artifact, E> outputFormatter, - MiddlemanExpander middlemanExpander) { + Function<? super ArtifactFile, E> outputFormatter, + ArtifactExpander artifactExpander) { for (Artifact artifact : artifacts) { - if (artifact.isMiddlemanArtifact()) { - expandMiddlemanArtifact(artifact, output, outputFormatter, middlemanExpander); + if (artifact.isMiddlemanArtifact() || artifact.isTreeArtifact()) { + expandArtifact(artifact, output, outputFormatter, artifactExpander); } else { output.add(outputFormatter.apply(artifact)); } } } - private static <E> void expandMiddlemanArtifact(Artifact middleman, - Collection<? super E> output, - Function<? super Artifact, E> outputFormatter, - MiddlemanExpander middlemanExpander) { - Preconditions.checkArgument(middleman.isMiddlemanArtifact()); - List<Artifact> artifacts = new ArrayList<>(); - middlemanExpander.expand(middleman, artifacts); - addExpandedArtifacts(artifacts, output, outputFormatter, middlemanExpander); + private static <E> void expandArtifact(Artifact middleman, + Collection<? super E> output, + Function<? super ArtifactFile, E> outputFormatter, + ArtifactExpander artifactExpander) { + Preconditions.checkArgument(middleman.isMiddlemanArtifact() || middleman.isTreeArtifact()); + List<ArtifactFile> artifacts = new ArrayList<>(); + artifactExpander.expand(middleman, artifacts); + for (ArtifactFile artifact : artifacts) { + output.add(outputFormatter.apply(artifact)); + } } /** @@ -702,9 +705,9 @@ public class Artifact implements FileType.HasFilename, ArtifactFile, SkylarkValu * returned list is mutable. */ public static List<String> asExpandedExecPathStrings(Iterable<Artifact> artifacts, - MiddlemanExpander middlemanExpander) { + ArtifactExpander artifactExpander) { List<String> result = new ArrayList<>(); - addExpandedExecPathStrings(artifacts, result, middlemanExpander); + addExpandedExecPathStrings(artifacts, result, artifactExpander); return result; } @@ -714,9 +717,9 @@ public class Artifact implements FileType.HasFilename, ArtifactFile, SkylarkValu * returned list is mutable. */ public static List<PathFragment> asExpandedExecPaths(Iterable<Artifact> artifacts, - MiddlemanExpander middlemanExpander) { + ArtifactExpander artifactExpander) { List<PathFragment> result = new ArrayList<>(); - addExpandedExecPaths(artifacts, result, middlemanExpander); + addExpandedExecPaths(artifacts, result, artifactExpander); return result; } |