Replace "transform path" references with "devirtualize path"

PiperOrigin-RevId: 727122010
Change-Id: I31df0c3aa343606e36372b40ebeba205fd11fe78
diff --git a/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java
index af6fba0..680b8b9 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java
@@ -57,7 +57,6 @@
 import com.google.devtools.build.lib.shell.TerminationStatus;
 import com.google.devtools.build.lib.util.NetUtil;
 import com.google.devtools.build.lib.util.io.FileOutErr;
-import com.google.devtools.build.lib.vfs.FileSystem.PathTransformer;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.errorprone.annotations.FormatMethod;
 import com.google.errorprone.annotations.FormatString;
@@ -108,7 +107,7 @@
       BinTools binTools,
       ProcessWrapper processWrapper,
       RunfilesTreeUpdater runfilesTreeUpdater) {
-    this.execRoot = maybeTransform(execRoot);
+    this.execRoot = execRoot.devirtualize();
     this.processWrapper = processWrapper;
     this.localExecutionOptions = Preconditions.checkNotNull(localExecutionOptions);
     this.hostName = NetUtil.getCachedShortHostName();
@@ -379,8 +378,8 @@
 
         SubprocessBuilder subprocessBuilder = new SubprocessBuilder();
         subprocessBuilder.setWorkingDirectory(execRoot.getPathFile());
-        subprocessBuilder.setStdout(maybeTransform(outErr.getOutputPath()).getPathFile());
-        subprocessBuilder.setStderr(maybeTransform(outErr.getErrorPath()).getPathFile());
+        subprocessBuilder.setStdout(outErr.getOutputPath().devirtualize().getPathFile());
+        subprocessBuilder.setStderr(outErr.getErrorPath().devirtualize().getPathFile());
         subprocessBuilder.setEnv(environment);
         ImmutableList<String> args;
         if (processWrapper != null) {
@@ -536,12 +535,6 @@
     }
   }
 
-  private static Path maybeTransform(Path path) {
-    return (path.getFileSystem() instanceof PathTransformer pathTransformer)
-        ? pathTransformer.transformPath(path)
-        : path;
-  }
-
   private static FailureDetail makeFailureDetail(int exitCode, Status status, String actionType) {
     FailureDetails.Spawn.Builder spawnFailure = FailureDetails.Spawn.newBuilder();
     switch (status) {
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/FileSystem.java b/src/main/java/com/google/devtools/build/lib/vfs/FileSystem.java
index c5776bc..532fb76 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/FileSystem.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/FileSystem.java
@@ -843,8 +843,12 @@
         "getNioPath() not supported for " + getClass().getName());
   }
 
-  /** Represents an arbitrary transform on a Path. */
-  public interface PathTransformer {
-    Path transformPath(Path original);
+  /**
+   * Represents a devirtualizer that undoes the virtualization of {@link Path}s established by
+   * {@link
+   * com.google.devtools.build.lib.runtime.BlazeModule.ModuleFileSystem#createWithVirtualization}.
+   */
+  public interface PathDevirtualizer {
+    Path devirtualizePath(Path original);
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/Path.java b/src/main/java/com/google/devtools/build/lib/vfs/Path.java
index ab34c88..1194f06 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/Path.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/Path.java
@@ -22,7 +22,7 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.util.FileType;
-import com.google.devtools.build.lib.vfs.FileSystem.PathTransformer;
+import com.google.devtools.build.lib.vfs.FileSystem.PathDevirtualizer;
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
@@ -84,10 +84,10 @@
     return pathFragment.getPathString();
   }
 
-  public String getMaybeTransformedPathString() {
-    return fileSystem instanceof PathTransformer pathTransformer
-        ? pathTransformer.transformPath(this).getPathString()
-        : getPathString();
+  public Path devirtualize() {
+    return (this.getFileSystem() instanceof PathDevirtualizer pathDevirtualizer)
+        ? pathDevirtualizer.devirtualizePath(this)
+        : this;
   }
 
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerKey.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerKey.java
index 544d8aa..83f5dfc 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/WorkerKey.java
+++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerKey.java
@@ -20,7 +20,6 @@
 import com.google.devtools.build.lib.actions.ExecutionRequirements.WorkerProtocolFormat;
 import com.google.devtools.build.lib.util.CommandDescriptionForm;
 import com.google.devtools.build.lib.util.CommandFailureUtils;
-import com.google.devtools.build.lib.vfs.FileSystem.PathTransformer;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import java.util.Objects;
@@ -91,7 +90,7 @@
       WorkerProtocolFormat protocolFormat) {
     this.args = Preconditions.checkNotNull(args);
     this.env = Preconditions.checkNotNull(env);
-    this.execRoot = Preconditions.checkNotNull(maybeTransform(execRoot));
+    this.execRoot = Preconditions.checkNotNull(execRoot.devirtualize());
     this.mnemonic = Preconditions.checkNotNull(mnemonic);
     this.workerFilesCombinedHash = Preconditions.checkNotNull(workerFilesCombinedHash);
     this.workerFilesWithDigests = Preconditions.checkNotNull(workerFilesWithDigests);
@@ -103,12 +102,6 @@
     hash = calculateHashCode();
   }
 
-  private static Path maybeTransform(Path path) {
-    return (path.getFileSystem() instanceof PathTransformer pathTransformer)
-        ? pathTransformer.transformPath(path)
-        : path;
-  }
-
   public ImmutableList<String> getArgs() {
     return args;
   }