ForwardedIndexProjectHandler: don't use Project.NameKey

Project.NameKey is one of those classes that derives from GWT
because it was used in the old Gerrit UI. It is cursed by
the ORM key serialization internals and may trigger NPE
during tests.

Reduce the creation of a Project.NameKey at the very last moment
so that we can skip all the quirks in the logs.

Change-Id: I42d20709e44449dd530c844f7379a16b17673fc3
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexProjectHandler.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexProjectHandler.java
index 3e4e22e..df3ac1f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexProjectHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexProjectHandler.java
@@ -31,7 +31,7 @@
  */
 @Singleton
 public class ForwardedIndexProjectHandler
-    extends ForwardedIndexingHandler<Project.NameKey, ProjectIndexEvent> {
+    extends ForwardedIndexingHandler<String, ProjectIndexEvent> {
   private final ProjectIndexer indexer;
 
   @Inject
@@ -41,14 +41,13 @@
   }
 
   @Override
-  protected void doIndex(Project.NameKey projectName, Optional<ProjectIndexEvent> event)
-      throws IOException {
-    indexer.index(projectName);
+  protected void doIndex(String projectName, Optional<ProjectIndexEvent> event) throws IOException {
+    indexer.index(new Project.NameKey(projectName));
     log.debug("Project {} successfully indexed", projectName);
   }
 
   @Override
-  protected void doDelete(Project.NameKey projectName, Optional<ProjectIndexEvent> event) {
+  protected void doDelete(String projectName, Optional<ProjectIndexEvent> event) {
     throw new UnsupportedOperationException("Delete from project index not supported");
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/kafka/router/IndexEventRouter.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/kafka/router/IndexEventRouter.java
index 63ec787..2c637d8 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/kafka/router/IndexEventRouter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/kafka/router/IndexEventRouter.java
@@ -19,7 +19,6 @@
 
 import com.google.gerrit.reviewdb.client.Account;
 import com.google.gerrit.reviewdb.client.AccountGroup;
-import com.google.gerrit.reviewdb.client.Project;
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
@@ -75,9 +74,7 @@
     } else if (sourceEvent instanceof ProjectIndexEvent) {
       ProjectIndexEvent projectIndexEvent = (ProjectIndexEvent) sourceEvent;
       indexProjectHandler.index(
-          new Project.NameKey(projectIndexEvent.projectName),
-          INDEX,
-          Optional.of(projectIndexEvent));
+          projectIndexEvent.projectName, INDEX, Optional.of(projectIndexEvent));
     } else {
       throw new UnsupportedOperationException(
           String.format("Cannot route event %s", sourceEvent.getType()));
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexProjectHandlerTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexProjectHandlerTest.java
index 6a76c48..35ff4d3 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexProjectHandlerTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/forwarder/ForwardedIndexProjectHandlerTest.java
@@ -43,20 +43,20 @@
   @Mock private Configuration configMock;
   @Mock private Configuration.Index indexMock;
   private ForwardedIndexProjectHandler handler;
-  private Project.NameKey nameKey;
+  private String nameKey;
 
   @Before
   public void setUp() {
     when(configMock.index()).thenReturn(indexMock);
     when(indexMock.numStripedLocks()).thenReturn(10);
     handler = new ForwardedIndexProjectHandler(indexerMock, configMock);
-    nameKey = new Project.NameKey("project/name");
+    nameKey = "project/name";
   }
 
   @Test
   public void testSuccessfulIndexing() throws Exception {
     handler.index(nameKey, Operation.INDEX, Optional.empty());
-    verify(indexerMock).index(nameKey);
+    verify(indexerMock).index(new Project.NameKey(nameKey));
   }
 
   @Test
@@ -77,13 +77,13 @@
                   return null;
                 })
         .when(indexerMock)
-        .index(nameKey);
+        .index(new Project.NameKey(nameKey));
 
     assertThat(Context.isForwardedEvent()).isFalse();
     handler.index(nameKey, Operation.INDEX, Optional.empty());
     assertThat(Context.isForwardedEvent()).isFalse();
 
-    verify(indexerMock).index(nameKey);
+    verify(indexerMock).index(new Project.NameKey(nameKey));
   }
 
   @Test
@@ -95,7 +95,7 @@
                   throw new IOException("someMessage");
                 })
         .when(indexerMock)
-        .index(nameKey);
+        .index(new Project.NameKey(nameKey));
 
     assertThat(Context.isForwardedEvent()).isFalse();
     try {
@@ -106,6 +106,6 @@
     }
     assertThat(Context.isForwardedEvent()).isFalse();
 
-    verify(indexerMock).index(nameKey);
+    verify(indexerMock).index(new Project.NameKey(nameKey));
   }
 }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/kafka/consumer/IndexEventRouterTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/kafka/consumer/IndexEventRouterTest.java
index 71c3660..26a665d 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/multisite/kafka/consumer/IndexEventRouterTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/kafka/consumer/IndexEventRouterTest.java
@@ -19,7 +19,6 @@
 
 import com.google.gerrit.reviewdb.client.Account;
 import com.google.gerrit.reviewdb.client.AccountGroup;
-import com.google.gerrit.reviewdb.client.Project;
 import com.googlesource.gerrit.plugins.multisite.forwarder.ForwardedIndexAccountHandler;
 import com.googlesource.gerrit.plugins.multisite.forwarder.ForwardedIndexChangeHandler;
 import com.googlesource.gerrit.plugins.multisite.forwarder.ForwardedIndexGroupHandler;
@@ -91,10 +90,7 @@
     router.route(event);
 
     verify(indexProjectHandler)
-        .index(
-            Project.NameKey.parse(projectName),
-            ForwardedIndexingHandler.Operation.INDEX,
-            Optional.of(event));
+        .index(projectName, ForwardedIndexingHandler.Operation.INDEX, Optional.of(event));
 
     verifyZeroInteractions(indexAccountHandler, indexChangeHandler, indexGroupHandler);
   }