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(