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(