Fold TreeArtifactInjector into MetadataInjector. RELNOTES: None. PiperOrigin-RevId: 691027325 Change-Id: I0960f07bbb076de51b50ab7bf7c25253c583640a
diff --git a/src/main/java/com/google/devtools/build/lib/actions/cache/MetadataInjector.java b/src/main/java/com/google/devtools/build/lib/actions/cache/MetadataInjector.java index a425ee8..2c1d11f 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/cache/MetadataInjector.java +++ b/src/main/java/com/google/devtools/build/lib/actions/cache/MetadataInjector.java
@@ -14,11 +14,12 @@ package com.google.devtools.build.lib.actions.cache; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.FileArtifactValue; -import com.google.devtools.build.lib.skyframe.TreeArtifactInjector; +import com.google.devtools.build.lib.skyframe.TreeArtifactValue; /** Supports metadata injection of action outputs into skyframe. */ -public interface MetadataInjector extends TreeArtifactInjector { +public interface MetadataInjector { /** * Injects the metadata of a file. @@ -33,4 +34,14 @@ * @param metadata the file metadata */ void injectFile(Artifact output, FileArtifactValue metadata); + + /** + * Injects the metadata of a tree artifact. + * + * <p>This can be used to save filesystem operations when the metadata is already known. + * + * @param output an output directory {@linkplain Artifact#isTreeArtifact tree artifact} + * @param tree a {@link TreeArtifactValue} with the metadata of the files stored in the directory + */ + void injectTree(SpecialArtifact output, TreeArtifactValue tree); }
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BUILD b/src/main/java/com/google/devtools/build/lib/skyframe/BUILD index a23f807..1ff8ba4 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/BUILD +++ b/src/main/java/com/google/devtools/build/lib/skyframe/BUILD
@@ -3101,7 +3101,6 @@ java_library( name = "tree_artifact_value", srcs = [ - "TreeArtifactInjector.java", "TreeArtifactValue.java", ], deps = [
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactInjector.java b/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactInjector.java deleted file mode 100644 index 22a7df5..0000000 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactInjector.java +++ /dev/null
@@ -1,31 +0,0 @@ -// Copyright 2020 The Bazel Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -package com.google.devtools.build.lib.skyframe; - -import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; - -/** Supports metadata injection of action outputs into skyframe. */ -public interface TreeArtifactInjector { - - /** - * Injects the metadata of a tree artifact. - * - * <p>This can be used to save filesystem operations when the metadata is already known. - * - * @param output an output directory {@linkplain Artifact#isTreeArtifact tree artifact} - * @param tree a {@link TreeArtifactValue} with the metadata of the files stored in the directory - */ - void injectTree(SpecialArtifact output, TreeArtifactValue tree); -}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java index 1699b0b..d8c9409 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java
@@ -58,6 +58,7 @@ import java.util.Objects; import java.util.Optional; import java.util.concurrent.ForkJoinPool; +import java.util.function.BiConsumer; import javax.annotation.Nullable; /** @@ -148,11 +149,11 @@ } /** - * For each unique parent seen by this builder, passes the aggregated metadata to {@link - * TreeArtifactInjector#injectTree}. + * For each unique parent seen by this builder, passes the aggregated metadata to the specified + * {@link BiConsumer}. */ - public void injectTo(TreeArtifactInjector treeInjector) { - map.forEach((parent, builder) -> treeInjector.injectTree(parent, builder.build())); + public void forEach(BiConsumer<SpecialArtifact, TreeArtifactValue> consumer) { + map.forEach((parent, builder) -> consumer.accept(parent, builder.build())); } }
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java index 0c5f387..9874272 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java
@@ -191,7 +191,7 @@ } Map<Artifact, TreeArtifactValue> treeArtifactData = new HashMap<>(); - treeArtifacts.injectTo(treeArtifactData::put); + treeArtifacts.forEach(treeArtifactData::put); return ActionsTestUtil.createActionExecutionValue( /* artifactData= */ ImmutableMap.of(), ImmutableMap.copyOf(treeArtifactData));
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactValueTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactValueTest.java index 369c096..7ea57d4 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactValueTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactValueTest.java
@@ -617,7 +617,7 @@ public void multiBuilder_empty_injectsNothing() { Map<SpecialArtifact, TreeArtifactValue> results = new HashMap<>(); - TreeArtifactValue.newMultiBuilder().injectTo(results::put); + TreeArtifactValue.newMultiBuilder().forEach(results::put); assertThat(results).isEmpty(); } @@ -633,7 +633,7 @@ treeArtifacts .putChild(child1, metadataWithId(1)) .putChild(child2, metadataWithId(2)) - .injectTo(results::put); + .forEach(results::put); assertThat(results) .containsExactly( @@ -658,7 +658,7 @@ .putChild(parent1Child1, metadataWithId(1)) .putChild(parent2Child, metadataWithId(3)) .putChild(parent1Child2, metadataWithId(2)) - .injectTo(results::put); + .forEach(results::put); assertThat(results) .containsExactly( @@ -686,7 +686,7 @@ builder .putChild(child, childMetadata) .setArchivedRepresentation(archivedTreeArtifact, archivedTreeArtifactMetadata) - .injectTo(results::put); + .forEach(results::put); assertThat(results) .containsExactly( @@ -705,7 +705,7 @@ FileArtifactValue metadata = metadataWithId(1); Map<SpecialArtifact, TreeArtifactValue> results = new HashMap<>(); - builder.setArchivedRepresentation(archivedTreeArtifact, metadata).injectTo(results::put); + builder.setArchivedRepresentation(archivedTreeArtifact, metadata).forEach(results::put); assertThat(results) .containsExactly( @@ -732,7 +732,7 @@ .setArchivedRepresentation(archivedArtifact1, archivedArtifact1Metadata) .putChild(parent1Child, parent1ChildMetadata) .putChild(parent2Child, parent2ChildMetadata) - .injectTo(results::put); + .forEach(results::put); assertThat(results) .containsExactly( @@ -762,7 +762,7 @@ .putChild(parent1Child, parent1ChildMetadata) .putChild(parent2Child, parent2ChildMetadata) .remove(parent1) - .injectTo(results::put); + .forEach(results::put); assertThat(results) .containsExactly( @@ -778,7 +778,7 @@ SpecialArtifact missingTree = createTreeArtifact("bin/tree"); Map<SpecialArtifact, TreeArtifactValue> results = new HashMap<>(); - builder.remove(missingTree).injectTo(results::put); + builder.remove(missingTree).forEach(results::put); assertThat(results).isEmpty(); } @@ -813,7 +813,7 @@ .setArchivedRepresentation(archivedArtifact, archivedArtifactMetadata) .remove(parent) .putChild(child2, child2Metadata) - .injectTo(results::put); + .forEach(results::put); assertThat(results) .containsExactly(