Migrate `RepositoryName` to caffeine.

PiperOrigin-RevId: 379952342
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/BUILD b/src/main/java/com/google/devtools/build/lib/cmdline/BUILD
index 410ec35..d61a46b 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/BUILD
@@ -62,6 +62,7 @@
         "//src/main/java/com/google/devtools/build/lib/util",
         "//src/main/java/com/google/devtools/build/lib/util:string",
         "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
+        "//third_party:caffeine",
         "//third_party:guava",
         "//third_party:jsr305",
     ],
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java b/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java
index ea1c6df..1a4a258 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java
@@ -14,10 +14,9 @@
 
 package com.google.devtools.build.lib.cmdline;
 
+import com.github.benmanes.caffeine.cache.Caffeine;
+import com.github.benmanes.caffeine.cache.LoadingCache;
 import com.google.common.base.Throwables;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationConstant;
 import com.google.devtools.build.lib.util.Pair;
@@ -30,7 +29,7 @@
 import java.io.ObjectOutputStream;
 import java.io.ObjectStreamException;
 import java.io.Serializable;
-import java.util.concurrent.ExecutionException;
+import java.util.concurrent.CompletionException;
 import java.util.regex.Pattern;
 
 /** A human-readable name for the repository. */
@@ -80,21 +79,21 @@
   }
 
   private static final LoadingCache<String, RepositoryName> repositoryNameCache =
-      CacheBuilder.newBuilder()
-        .weakValues()
-        .build(
-            new CacheLoader<String, RepositoryName>() {
-              @Override
-              public RepositoryName load(String name) throws LabelSyntaxException {
+      Caffeine.newBuilder()
+          .weakValues()
+          .build(
+              name -> {
                 String errorMessage = validate(name);
                 if (errorMessage != null) {
-                  errorMessage = "invalid repository name '"
-                      + StringUtilities.sanitizeControlChars(name) + "': " + errorMessage;
+                  errorMessage =
+                      "invalid repository name '"
+                          + StringUtilities.sanitizeControlChars(name)
+                          + "': "
+                          + errorMessage;
                   throw new LabelSyntaxException(errorMessage);
                 }
                 return new RepositoryName(StringCanonicalizer.intern(name));
-              }
-            });
+              });
 
   static {
     try {
@@ -114,9 +113,9 @@
   public static RepositoryName create(String name) throws LabelSyntaxException {
     try {
       return repositoryNameCache.get(name);
-    } catch (ExecutionException e) {
+    } catch (CompletionException e) {
       Throwables.propagateIfPossible(e.getCause(), LabelSyntaxException.class);
-      throw new IllegalStateException("Failed to create RepositoryName from " + name, e);
+      throw e;
     }
   }
 
@@ -125,11 +124,7 @@
    * directory that has been created via getSourceRoot() or getPathUnderExecRoot().
    */
   public static RepositoryName createFromValidStrippedName(String name) {
-    try {
-      return repositoryNameCache.get("@" + name);
-    } catch (ExecutionException e) {
-      throw new IllegalArgumentException(e.getMessage());
-    }
+    return repositoryNameCache.get("@" + name);
   }
 
   /**
@@ -241,7 +236,7 @@
    * ({@code "@"} becomes the empty string).
    */
   public String getCanonicalForm() {
-    return isMain() ? "" : getName();
+    return isMain() ? "" : name;
   }
 
   /**